Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Schachprogrammierung / Erstes eigenes Schachprogramm schreiben
- - By Tommy Tulpe Date 2023-12-20 21:06 Upvotes 1
Hallo zusammen,
vor kurzem wurde ich nach Erreichen der gesetzlichen Altersgrenze in den Ruhestand versetzt und hatte mir eigentlich als Traum vorgenommen, eine eigene Schach-Engine zu entwickeln.
* Natürlich soll es eine UCI Engine werden. Ich möchte mich mit einer Gestaltung der GUI herum schlagen, wenn andere das schon entwickelt haben.
* Es kommt mir (zunächst mall) übedrhaupt nicht auf hohe Spielstärke an.
* Mathematik, Gleichungen lösen, Formeln umstellen usw. bereitet mir keine Schwierigkeiten. Habe Mathematik studiert.
* Vor rund 40(!) Jahren habe ich ein wenig in BASIC und Pascal programmiert, kurz auch noch in Delphi. Ganz kleine Sachen: Primzahlerkennung, Sortierverfahren, Kopfrechentrainer, ...   Seitdem überhaupt nichts mehr.
* Ich bin nicht bereit, sehr viel Geld auszugeben für das Programmiersprachen-Paket.

Wer möchte mir einen Rat geben, wie ich mein Projekt am besten anfangen soll? Welche Programmiersprache? Auf Spielstärke und damit auf Geschwindigkeit kommt es mir erst mal nicht an. Also eher eine einfache Sprache. Woher weiß ich, welche Parameter von der GUI an die Engine gegeben werden und welche zurück gegeben werden müssen, um den Zug auszuführen?

Fragen, Fragen, Fragen....  
Danke für Antworten.
Parent - - By Lothar Jung Date 2023-12-20 22:12 Upvotes 1
Ich würde dir C empfehlen.
Hier ein Schachprogramm dazu: http://www.tckerrigan.com/Chess/TSCP/
Dieses Unterforum bietet daneben eine Menge Beispiele und Anregungen mit Code.
Parent - - By Stefan Pohl Date 2024-01-30 06:31 Upvotes 1
Lothar Jung schrieb:

Ich würde dir C empfehlen.
Hier ein Schachprogramm dazu: <a class='ura' href='http://www.tckerrigan.com/Chess/TSCP/'>http://www.tckerrigan.com/Chess/TSCP/</a>
Dieses Unterforum bietet daneben eine Menge Beispiele und Anregungen mit Code.


Da stimme ich zu. C hat den großen Vorteil, daß man selbst entscheiden kann, wie maschinennah man programmiert. Einer meiner Professoren damals an der Uni sagte dazu: Man kann in C so sauber programmieren (und es gibt auch alle Befehle dafür), daß C fast richtigen Hochsprachen wie eben Pascal/Modula2 etc. entspricht. Aber man kann eben auch sehr maschinennah programmieren, da es auch diese Befehle gibt - C kann man auch so benutzen, daß das Programm schon (fast) wie ein Makroassembler-Code aussieht. Das ist dann alles schwer lesbar, aber eben auch sauschnell.
Aber: C erfordert "Disziplin". Denn die Compiler winken fast alles durch. Selbst fehlende Parameter bei einem Prozeduraufruf ergeben oft nur eine Warning, keinen Abbruch mit Fehlemeldung. Hat ein Parameter ein falsches Datenformat (Klassiker ist verwechslung von INT und Long INT), geht das vielen C-Compilern am Ar... vorbei. Das kann in der Praxis dann zu echt heftige Abstürzen führen, die dann schwer im Sourcecode zu lokalisieren sind. Und nutzt man die Pointer-Befehle (Zeiger auf eine Adresse im Speicher), die sich auch noch schachteln lassen (Pointer auf einen Pointer auf eine Adresse...), bekommt man schnell einen "Knoten im Gehirn".
Ich bin damals selbst von Pascal gekommen und konnte in C sofort losprogrammieren. Das war eigentlich gar keine so große Umstellung.
Parent - By Lothar Jung Date 2024-01-30 08:46 Edited 2024-01-30 09:11 Upvotes 1
Ich hatte damals von Tom Kerrigan schriftlich die Erlaubnis für das Forum erhalten sein C-Schachprogramm zu verwenden und Erweiterungen zu schreiben.

TSCP has the following features:
Only 2,248 lines of C code
Lots of comments!
Written for clarity (not speed or strength)
Observes all rules of chess
Opening book
xboard compatible
Requires less than 64KB of RAM

Dabei möchte ich 2 Punkte hervorheben:
Über die xboard Kompatibilität hat man sofort eine grafische Ausgabe und Bedienung des Schachbretts.
Die Größe des Programms paßt in den CPU-Cache!

Das Programm ist sehr gut dokumentiert und er macht Vorschläge für die Erweiterung.
Hier die bereits bestehen Erweiterungen: http://www.tckerrigan.com/Chess/TSCP/Community/
Es hat schon jetzt eine Spielstärke von rd. 2.000 Elo.
Ein bestehendes Rumpfprogramm läßt sich Schritt für Schritt viel leichter erweitern, als alles von Grund auf selber zu schreiben.
Man würde ohnehin die jeweiligen Algorithmen verwenden.
Kein Schachprogrammierer hat bei Null angefangen!
Wichtig sind die Verknüpfung der Programmabläufe.

Die derzeitigen Entwicklungsumgebungen (IDEs), können dabei helfen, fehlerfreien Code in C zu schreiben. Diese Tools bieten in der Regel Funktionen wie Syntaxhervorhebung, Code-Vervollständigung, Debugging-Tools und oft auch statische Code-Analyse, die helfen können, Fehler im Code zu identifizieren und zu korrigieren.
Parent - By Peter Martan Date 2023-12-20 22:44 Edited 2023-12-20 22:46 Upvotes 2
Parent - By Lothar Jung Date 2023-12-21 07:19 Upvotes 1
Natürlich auch Python.
Da es schon eine fertige allgemeine Codebasis gibt.
https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12459
Parent - By Lars B. Date 2024-01-28 19:59 Upvotes 1
Falls es noch aktuell sein sollte: Wenn Du schon Pascal und sogar Delphi benutzt hast, könnte Lazarus was für Dich sein: https://www.lazarus-ide.org/. Das ist so eine Art quelloffenes und kostenloses Delphi, basierend auf FreePascal, es funktioniert systemübergreifend, gibt's also für Windows und Linux, und ich glaube sogar für Mac, und es ist schon länger auf einem Entwicklungsstand, der eine bedenkenlose Empfehlung rechtfertigt. Es ist natürlich besonders geeignet für Sachen, die auch eine GUI haben, aber man kann damit auch Kommandozeilenprogramme bauen, und die laufen sogar ziemlich schnell. Pascal ist auch eine recht angenehme Sprache, vermutlich die unterschätzteste; ich mache recht oft was damit, auch wenn ich für zeitkritische Sachen C vorziehe.

Python ist eine nette Sache, aber für Schachengines natürlich nicht besonders empfehlenswert; die Stärken liegen auf anderem Gebiet.
Parent - By Wolfram Bernhardt Date 2024-01-29 18:09 Upvotes 1
Hi!

Wenn es Dir darum ginge, zu verstehen, wie ein Computer funktioniert, würde ich auch C empfehlen. Aber willst Du ja nicht.

Pascal/Delphi/Lazars ist eine gute Empfehlung, der schliesse ich mich gerne an.

Selber programmiere ich vor allem in C# - das kann ich auch sehr empfehlen. Für ein Schachprogramm brauchst Du nur einen kleinen Teil der Möglichkeiten von C# - und das ist völlig im Ordnung. Nicht davon abschrecken lassen, dass so viel Weiteres in die Sprache eingebaut wurde, dass man gerade am Anfang den Wald vor lauter Bäumen aus den Augen verliert.

Viele Grüße
     Wolfram
Up Topic Hauptforen / Schachprogrammierung / Erstes eigenes Schachprogramm schreiben

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill