[Python] chess engine
Pietro Battiston
battiston a mail.dm.unipi.it
Mer 16 Maggio 2007 13:18:10 CEST
> secondo voi è fattibile scrivere un "chess engine" in python.
>
> per quanto riguarda le prestazioni otterrei una riduzione notevole
> rispetto ad un equivalente in c o c++?
esistono programmi e librerie per gli scacchi in python, e spesso
riportano commenti per te poco incoraggianti tipo "scritta in python
perché non mi interessava tanto l'efficienza..."
Ciononostante:
1) se hai già in testa tutto il programma e devi solo tradurlo in codice
sorgente in un qualche linguaggio, ti può convenire scriverlo, ad
esempio, in C/C++. Se però vuoi prima di tutto provare, fare un po' di
esperimenti, vedere che effetto hanno scelte diverse nell'engine, il
solo fatto di avere codice più leggibile e facilmente modificabile ti
può aiutare a fare un programma che funzioni sensibilmente meglio. La
mia idea è che l'overhead del linguaggio di programmazione interpretato
sia un fattore decisamente poco importante rispetto all'intelligenza
degli algoritmi del confronto delle possibili mosse e della loro
integrazione con tattiche ed eventualmente librerie di mosse. Insomma,
programmi di scacchi che stracciano lo scacchista medio ci sono anche
sui cellulari!
2) per quel poco che so di scacchi, la parte costosa di un programma è
proprio la generazione delle possibili mosse, non tanto le
considerazioni tattiche (a meno di non fare un engine che si basi
massicciamente su librerie di partite e/o che impari a giocare
"dinamicamente", cose comunque piuttosto avanzate), che si affronta
tipicamente in modo ricorsivo (è vero che si può anche utilizzare anche
solo l'iterazione, ma... insomma, se si usa il python è per avere codice
leggibile!). Quindi forse dovresti informarti più specificamente
sull'overhead che la generica chiamata a funzione ha nel python rispetto
al C
3) siccome tutte queste cose te le dice uno che non è esperto né come
scacchista né come pythonista, forse la cosa veramente interessante può
essere per te questa:
http://www.linuxlinks.com/Software/Games/Board/Chess/Engines/index.shtml
- una lista di programmi di cui due sono scritti in Python: PyChess
(proprio un chess engine) e Shatranj (che sembra più che altro un
ambiente di sviluppo, per quel pochissimo che ne ho letto)
ciao
Pietro
Maggiori informazioni sulla lista
Python