Interview mit Tord Romstad (Norwegen), Joona Kiiski (Finnland) Marco Costalba (Italien)
Den Programmierern von Stockfish


28.03.2010
von Tord Romstad, Joona Kiiski, Marco Costalba & Frank Quisinsky

29.- 30.03.2010
Übersetzung von Michael Wäsch & Frank Quisinsky

tord-romstad

Tord Romstad (Norwegen)

Gegenwärtig ist Stockfish die Nummer 2 der verfügbaren Schachprogramme. Das ist eine besonders interessante Tatsache, denn Stockfish ist kostenlos. Lediglich das kommerzielle Schachprogramm Rybka 3, ist bei  64-Bit etwa 60 - 70 ELO und bei 32-Bit ca. 30 ELO spielstärker. Eine schwierige Situation für die anderen kommerziellen Programmierer. Stockfish steht in ständiger Entwicklung und hatte in der Vergangenheit, bei jeder neuen Version, größere ELO Zuwachsraten. Viele Computerschächler gehen davon aus, dass Stockfish bald die Nummer 1 sein könnte. Eine sehr große Erwartungshaltung an eine Gruppe von Programmierern, die lediglich in ihrer Freizeit an dem Programm arbeiten. Tord, Joona und Marco bildeten ein Team und genau diese Tatsache könnte ein Grund des Erfolges sein. Tord arbeitete eine lange Zeit an den Vorgängern "Gothmog" und "Glaurung". Der norwegische Programmierer, der offenbar über tonnenweise Schachwissen verfügt, gehört unzweifelhaft zu der talentiertesten Schachprogrammierern überhaupt. Zeit für ein Interview!

01.
Frank Quisinsky
Die Erfolge von Stockfish haben sich mittlerweile herumgesprochen. Ich bin mir sicher, dass Euer Team schon viele E-Mails mit kommerziellen Anfragen erhalten hat. Sind Kommerzielle in Sichtweite? Ich wittere Gefahr! Das Thema wurde sicherlich schon intern bei Euch diskutiert. Bitte gebe uns doch hierzu zunächst ein klares Statement!

Tord Romstad
Es gibt keine Pläne für einen kommerziellen Stockfisch. Warum sollte Stockfish nicht frei sein? Alle drei von uns haben reguläre Arbeitsplätze und wir können hieraus unsere Rechnungen zahlen. Computerschach ist nur ein Hobby. Die meisten Menschen verdienen kein Geld bei der Ausübung von Ihrem Hobby. Ich sehe keinen Grund, warum es mit Schachprogrammierung anders sein sollte. Kommerzielle Interessen würden uns zwingen, stärker mit Aufgaben wie Marketing, Support und der Programmierung einer Benutzeroberfläche befasst zu sein. Wir haben dafür wenig Geschick und kein Interesse. Für den Ausgleich dieser zusätzlichen Arbeit würden wir nur einen kleinen Betrag erhalten, den wir nicht wirklich benötigen.

02.
Frank Quisinsky
Meiner Meinung entstand mit Stockfish eine Traumsituation. Das war schon immer mein größter Wunsch seit Winboard Zeiten. Ein kostenloses Schachprogramm, welches hinsichtlich Spielstärke das Beste oder in der Nähe der Besten der Welt ist. Motivation genug für andere Amateure und natürlich auch für Profis. Apropos Spielstärke: Stockfish ist das Maß aller Dinge für kommerzielle Programme und animiert die komplette Computerschach Szene. Bist Du dir dessen eigentlich bewusst?

Tord Romstad
Natürlich sind wir alle glücklich und stolz darauf, dass die Anwender unser Programm gut finden. Wir hoffen, dass es möglich ist, Amateure und Profis zu inspirieren bzw. die Benutzer regelmäßig zu erfreuen.

03.
Frank Quisinsky
Lasse uns das Interview mit der Spielstil Frage starten. Das ist meine favorisierte Frage für Schachprogrammierer. Jede Engine benötigt ihr eigenes Gesicht. Bei den Spielstil Beschreibungen auf den SCHACHWELT Webseiten schrieb ich:

Spielstil Beschreibungen der TOP-20 Schachprogramme:
http://www.nk-qy.info/bericht-swcr-engines.htm

Der Spielstil ist recht einfach zu beschreiben. Die Züge sehen logisch und einfach aus. Stockfish spielt wie von Zauberhand geführt. Herausragend sind die Stärken im Endspiel und im Königsangriff. Aha, GM José Raúl Capablanca muss dahinter stecken? Der Spielstil ist absolut, gar zu mehr als 90% (sinnbildlich), vergleichbar mit dem kubanischen Nationalhelden und Schach-Weltmeister. Ich bin mir derzeit gar nicht mehr so sicher, ob Shredder oder Rybka das Endspiel zusammen allein dominieren. In der Eröffnung spielt Stockfish eher unauffällig aber ausgewogen. Positionell sehe ich noch Verbesserungsmöglichkeiten. Oftmals werden, gerade im Mittelspiel, Stellungen zu negativ eingeschätzt. Das könnte bei den Bewertungsfunktionen zu passiven Alternativzügen führen. Bei späteren Analysen stellt sich dann allerdings heraus, dass vermeidlich bessere Züge dennoch errechnet wurden. Insofern eine optimale Engine für Langzeitanalysen. Trotz der enormen Spielstärke steckt enormes Potential in der Engine. Die drei Programmierer arbeiten sehr fleißig an Stockfish und es ist abzusehen, dass Stockfish, in sehr naher Zukunft, die Spielstärke von Rybka erreichen wird. Dafür muss sich niemand für viel Geld als Prophet ausbilden lassen.

Tord, bitte habe Verständnis für die Welle meines Enthusiasmus. Ich denke, dass wir alle dazu lernen müssen, auch das Stockfish Team, wenn wir von 3.000 ELO sprechen. Wie denkst Du über meine Spielstil Beschreibung. Vielleicht kannst Du etwas zum Spielstil von Stockfish aus Deiner Perspektive schreiben?

Tord Romstad
Danke für die Blumen und den Enthusiasmus. Ich denke, dass es irreführend ist, den Spielstil von Schachprogrammen mit dem von menschlichen Spielern zu vergleichen. Menschen und Computer sind einfach zu verschieden. Der Versuch zu entscheiden, ob Stockfish mehr wie Lasker oder mehr wie Capablanca spielt, ist, als ob man versucht herauszufinden, ob Deutsch mehr Persisch oder Hindi gleicht.

Aber Meinungen über Ansichten der Anwender zum Spielstil eines Programms zu lesen ist immer interessant. Auch dann, wenn ich nicht zustimme. Grundsätzlich denke ich, dass Spielstil Beschreibungen neutralen Anwendern überlassen werden sollte. Beim Versuch, sein eigenes Programm zu beschreiben, ist es schwierig objektiv zu bleiben. Herauskommen würde nur, dass ich Stockfish so beschreibe, wie ich es gerne sehen würde anstatt wie es tatsächlich spielt.

04.
Frank Quisinsky
Das Endspiel und die Königsangriffe sind herausragend. Es ist schön zu sehen, dass Stockfish meines Erachtens im Endspiel einen klaren Vorteil gegenüber anderen Programmen hat. Meist errechnet Stockfish Abwicklungen lange Zeit vorher bzw. bevor andere Programme diese errechnen können. Woher kommt dieses ganze Wissen über Endspiele? In harter Arbeit selbst entwickelt oder wurden wichtigen Informationsquellen herangezogen? Kannst du uns ein paar Hinweise bezüglich des implementierten Endspielwissens geben?

Tord Romstad
Eigentlich gibt es kein großes Endspielwissen in Stockfisch, abgesehen von ein paar spezielle Bewertungsfunktionen für grundlegende Endspiele. Diese Bewertungsfunktionen dienen als Ersatz für Bitbases. Die Spielstärke im Endspiel ist etwas mysteriös, auch für mich. Als Erklärung könnte ich aufführen, dass unsere Suchalgorithmen im Endspiel besonders effektiv sind. Da wir gerade dabei sind; Es ist erwähnenswert, dass das Endspiel die schwächste Phase des Spiels auf dem IPhone ist. Hier ist die Suchgeschwindigkeit ja sehr gering.

Die speziellen Endspielfunktionen sind nicht aus einer besonderen Quelle. Das implementiere Wissen stammt im Grunde aus Büchern für Anfänger. Das ist alles Standardwissen, wie die Notwendigkeit, den gegnerischen König bei KLS-K in die Ecke der Farbe des Läufers zu bewegen, oder wie die Philidor-Verteidigung bei KTb-KT Endspielen.

05.
Frank Quisinsky
Ich kann mich des Eindrucks nicht erwehren, dass der Vorgänger Glaurung, der ca. 200 ELO schwächer spielt, ein wenig aggressiver im Königsangriff ist. Aber das ist vermutlich nur dann zu erkennen, wenn Glaurung gegen gleichstarke Gegner spielt. Ich vermute, dass Programme mit einer höheren ELO taktisch weniger aggressiv spielen. Gerade in heutigen Zeiten ist es nicht ganz einfach solche Vermutungen überhaupt aufzustellen, weil die Spielstärke der Programme einfach zu hoch ist. Glaubst du, dass Stockfish an Aggressivität im Vergleich zu Glaurung verloren hat?

Tord Romstad
Das habe ich nicht bemerkt und ich kann auch nicht erkennen, dass eine Veränderung seit Glaurung 2.2 einen größeren Effekt auf die Aggressivität gehabt haben soll. Die Funktion für die Königssicherheit ist fast unverändert und auch die Gewichtungen für die einzelnen Bewertungen, die die Königssicherheit betreffen, wurden ebenfalls kaum verändert. Allerdings ist es möglich, dass das was Du beobachtet hast, lediglich schnellerer Hardware zuzuordnen ist. Mir scheint es, dass schnellere Hardware aggressive Programme dazu bringt konservativer zu spielen. Vielleicht ist dieser Umstand auch für die Unterschiede der Spielstil der einzelnen Programme verantwortlich. Stockfish spielt wesentlich aggressiver auf meinem iPhone als im Vergleich auf meinem Mac. Auf dem iPhone geht Stockfish auch viel größere Risiken ein.

06.
Frank Quisinsky
Und wie schaut es mit den Schwächen aus? Mein Vater sagte gerne zu mir: "Versuche deine Stärken zu stärken und weniger bemerken deine Schwächen". Das könnte doch auch eine Strategie für Stockfish sein. Wenn das Team weiter am Endspiel arbeitet, wird das vielleicht keiner verstehen. Möglicherweise würde es mein Vater verstehen, aber der hat in seinem Leben noch nie eine Partie Schach gespielt. Ich muss herausfinden, an welchen Punkten das Stockfish Team derzeit arbeitet. Bitte packe doch die Geheimnisse aus!

Tord Romstad
Für diese Frage übergebe ich das Mikrofon an unseren stärksten Schachspieler:

joona-kiiski

Joona Kiiski (Finnland)

Joona Kiiski
* Beim klassischen Königsinder in geschlossenen Positionen, Schwarz baut langsam einen sehr gefährlichen Angriff auf, hat Stockfish mit Weiß keinen Plan von dem was passiert - bis es zu spät ist.

* Stockfish ist im späten Mittelspiel, bei Materialvorteil, einem ungeschützten König, und Damen auf dem Brett zu optimistisch. Die Risiken, dass der Gegner Remis durch Dauerschach erzwingen kann sind groß. Stockfish versteht das nicht.

* Stockfish bewertet zusammenhängende Bauern über. Dann, wenn der Gegner mit seinen Figuren ein Blockade errichten kann. Glücklicherweise passiert das in der Realität nicht so oft.

* Stockfish ist im späten Endspiel, bei wenigen Bauern, zu optimistisch, z. B. bei KSb-KS oder KLbb-KLb. Solche Partien enden meist Remis.

* Stockfish hat noch zu wenig Endspielwissen bei einigen trivialen Positionen wie z. B. KQ-Kp. Zu sehen, wenn der Bauer auf c2 oder a2 steht.

07.
Frank Quisinsky
Eine andere Betrachtungsweise wäre der Support zu Standardfunktionen, die von Anwendern erwartet werden. Stockfish hat eine perfekte UCI Anbindung, 64-Bit Unterstützung, sowie beinhaltet diverse andere Standards. Ebenso beinhaltet Stockfish weitere sehr interessante UCI-Optionen. Das Problem dabei ist nur, dass diese Optionen nicht dokumentiert sind. Ich weiß, dass eine Dokumentation für einen Programmierer eine eher langweiligere Arbeit ist. Können wir demnächst mit einer guten Beschreibung der kompletten UCI Optionen rechnen?

Tord Romstad
Die Meisten dieser Optionen sind entweder offensichtlich, weitere Erklärungen sind nicht notwendig, oder zu komplex. Es ist unmöglich die Komplexen näher zu beschreiben. Dabei würde zu sehr ins technische Detail gegangen; Wie arbeitet ein Programm, siehe die zahlreichen Parameter zur Konfiguration der Königssicherheit und der parallelen Suchalgorithmen. Irgendwann, in naher Zukunft, sollten wir einige der Parameter, die am Meisten für Verwirrung sorgen, entfernen und eine kurze Beschreibung der restlichen Parameter auf unsere Webseite setzen.

08.
Frank Quisinsky
Wir haben die Situation, dass ein Programm wie Stockfish zu spielstark für diese Welt ist. 3.000 ELO kann einfach niemand dauerhaft bezwingen. Stefan Meyer-Kahlen hat einige interessante Optionen zur Spielstärkereduzierung in seine Benutzeroberfläche "Shredder Classic" eingebaut. In Zeiten, als ich Ruffian vermarktet hatte, gab ich Per-Ola den Auftrag, Spielstufen als UCI-Optionen einzubauen. Vor ein paar Jahren arbeitete Franck ZIBI (Pharaon Programmierer) mit einem Studenten zusammen, der gerade seine eigene Projektarbeit schrieb. Er programmierte im Rahmen dieser Projektarbeit einen Schachlehrer als UCI-Option für Pharaon 2.62. Ich denke, dass dieses Computerschach Thema zukünftig mehr und mehr im Blickpunkt stehen wird. Im Umkehrschluss könnte das auch zu einer interessanten Vision führen. Ich meine herauszufinden, welche die spielschwächste Engine ist. Ganz sicher werden viele Computerschächler sehr bald die ersten Ratinglisten zu diesem Themenkomplex erstellen. Was könntest Du tun, um Stockfish für einen Clubspieler mit 1.600 ELO interessanter zu gestalten?

Tord Romstad
Eine einstellbare Spielstärke ist in der iPhone Version bereits implementiert, benötigt aber noch weitere Verbesserungen. Es ist zwar möglich, dass dies in der UCI-Engine irgendwann in der Zukunft eingebaut wird, aber ich bin mir nicht sicher ob das eine gute Idee wäre. Stockfisch ist ein Open Source Programm, und deshalb ist es wichtiger, als für eine durchschnittlich andere Engine, dass der Quellcode sauber, leicht zu lesen, und einfach zu verändern ist. Eine einstellbare Spielstärke würde den Quellcode unübersichtlich und komplizierter aussehen lassen.

Lern Funktionen wären interessant. Daran zu arbeiten erfordert allerdings ganz andere Fähigkeiten als die reine Engine Programmierung. Wahrscheinlich sind wir nicht die richtigen Personen für diese Aufgabe.

09.
Frank Quisinsky
Hast Du andere Ideen für zusätzliche UCI Optionen? Was hältst Du von der Möglichkeit Spielstil Persönlichkeiten zu erstellen. TheKing und Komodo haben z. B. solche Funktionen.

Tord Romstad
Wie oben erwähnt, denke ich, das die Zahl der UCI Optionen derzeit eher zu groß als zu klein ist. Es ist daher eher wahrscheinlich, dass wir die Anzahl der bereits hinzugefügten Optionen reduzieren. Dennoch wäre es möglich, dass wir nach einer deutlichen Reduzierung, wieder neue Optionen einbauen. Da gibt es zwei Dinge über die ich gelegentlich nachdenke. Ein Anti-Mensch-Mode und einen taktischen Analysemode.

Ich kann zu den Spielstil Persönlichkeiten von TheKing oder Komodo nichts schreiben weil ich mit diesen Programmen nicht vertraut bin. Soweit ich weiß, existieren diese Möglichkeiten auch nicht für Mac OSX. Daher kann ich das auch nicht selbst ausprobieren.

10.
Frank Quisinsky
Bei einem Punkt erreicht Stockfish lediglich eine ELO von 2.250. Stockfish benötigt eine eigene Webseite. Ein solch fantastisches Projekt ohne eine starke Webseite kann nicht richtig sein. Schachspieler aus der ganzen Welt sollten auf Stockfish aufmerksam werden. Sofern ich weiß, stehst Du zu 100% hinter Open-Source Projekten. Ein Widerspruch! Ich bin mir sicher das fehlende Zeit der einzige Grund ist. Vielleicht kann ein Web Designer, jemand aus der Community, für Stockfish eine Webseite kreieren. Sicherlich unterstützt das Stockfish Team eine solche Idee. Ein Team Mitglied mehr, warum nicht!

Tord Romstad
Wenn Du die News besser verfolgst hättest, würdest Du von
http://www.stockfishchess.com gehört haben :-)

Frank Quisinsky (nachträglich eingefügt)
Das wusste ich in der Tat nicht.

11.
Frank Quisinsky
Mit Joona und Marco arbeiten zwei weitere Programmierer an Stockfish. Niemand kennt genau die speziellen Bereiche der Mitglieder in Deinem Team. Ich bin mir sicher, dass Joona und Marco ihre Arbeit an Stockfish näher beschreiben möchten.

Joona Kiiski
Als erstes muss ich darauf hinweisen, dass es keine feststehenden Regeln gibt, wer bei uns was macht. Tord und Marco haben viel mehr für Stockfish getan als ich.

In der Open-Source Welt ist es jedem gestattet so zu arbeiten wie er möchte und es seinen eigenen Vorstellungen entspricht, dass gilt auch für Stockfish. Oft arbeiten wir an verschiedenen Bereichen, aber manchmal passiert es eben, dass einer von uns eine Idee für eine bedeutende Weiterentwicklung hat. Dann klinken sich auch die anderen Teammitglieder zur Unterstützung ein. Es folgen Diskussionen darüber und wir entwickeln zusammen verschiedene Ansatzmöglichkeiten, bis wir uns sicher sind, die optimale Strategie erarbeitet zu haben.

Ernsthaft begann ich mit dem Hobby Computerschach vor ca. 1 1/2 Jahren. Ich habe die meiste Zeit mit zwei Bereichen verbracht. Der Feinabstimmung bereits bestehender Berechnungsparameter und der Optimierung des Suchbaums. Natürlich haben auch Marco und Tord auf diesen Gebieten gearbeitet. Ich habe persönlich ein größeres Interesse am High-Level Code anstatt am Low-Level Code. Wenn jemand beginnt ein neues Schachprogramm zu schreiben, muss endlos viel Zeit für einen fehlerfreien Low-Level Code, für die Erzeugung von Zügen, Brettgrafiken und Bit-Manipulation usw., aufgewendet werden. Ich hatte nie die Zeit oder Lust dies zu tun. So entschied ich mich, mit einem bereits existierenden Programm zu beginnen, dass mit Einsicht die besten Voraussetzungen bereits mitbringt (Glaurung / Stockfish). Zu diesem Zeitpunkt hatte Marco bereits seit ½ Jahr an Stockfish gearbeitet. Tord ist der eigentliche Schöpfer des Programms, und so war es nur natürlich, dass wir am Ende als Team zusammengefunden haben. Ich darf mich glücklich schätzen, mit diesen beiden Profis zusammen zu arbeiten.

12.
Frank Quisinsky
Es ist eine sehr interessante Situation in einem Team zu arbeiten. Jedes Team Mitglied kann an verschiedene Programmteile arbeiten. Ergebnisse können diskutiert werden. Mittels Internet ist eine solche Verfahrensweise einfach realisierbar. Oftmals wundere ich mich darüber, warum 95% der Programmierer Ihren Weg allein bestreiten.

Ich erinnere mich an eine Diskussion in einem deutschen Computerschach Forum. Das Thema war die Modul Erstellung zu Bereichen, wie Endspiel, Mittelspiel, Protokoll Support, Endspieldatenbank Support und so weiter. Warum ist diese Idee eigentlich schlecht. Ich habe das nie verstanden. Könntest Du uns die Umstände mit einfachen Worten für "Nicht-Programmierer" erklären.

Tord Romstad
Verglichen mit den meisten anderen Software-Projekten, sind Schachprogramme ziemlich klein und können nicht so einfach aufgegliedert werden. Im Team zu arbeiten mach Spaß und ist ein großer Vorteil. Ich glaube nicht, dass es eine gute Idee wäre, an verschiedenen Teilen des Programms zu arbeiten. Es ist einfach einen bestimmten Teil des Programms zu verbessern, wenn man eine klare Vorstellung von der Funktionsweise der anderen Teile hat. Der einzige Weg, diese Vorstellung zu erlangen ist, an allen Teilen mitzuarbeiten. Von daher ist es besser, wenn jeder Einzelne am ganzen Programm mitarbeitet. Und genau so arbeiten wir auch an Stockfish und ich vermute, dass andere Teams es ebenso machen.

13.
Frank Quisinsky
Lasse uns nun über freie Sourcen sprechen. Zurzeit stehen „Clones“ im öffentlichen Interesse. Nicht alle der Clones sind legal. Weltweit sind viele Computerschächler auf der Suche nach dem Besten Schachprogramm. Diese Gruppe von Anwendern springt von Wagon zu Wagon, meist ohne den Spielstil, Engine Support oder die Stabilität zu berücksichtigen.

In unserer Gesellschaft kommt es nicht zuletzt durch Freeware Programme zu einem erhöhten Anspruchsdenken. Es scheint, dass der gute Vorsatz freier Software Förderungen / Institutionen wackelt.

An Deinem Statement zu diesem Thema bin ich sehr interessiert!

Tord Romstad
Zunächst einmal: Es geht in die falsche Richtung die freien Sourcen für das Klonen die Schuld zu geben. Du kannst die Frage auch drehen. So kommst Du zu der Aussage, dass es eine Tatsache wäre, dass jegliches Geheimhalten zu Funktionsweisen von Programmen für das Klonen verantwortlich ist.

Obwohl das Klonen selbst ärgerlich ist, glaube ich, dass das allgemeine Misstrauen, Verdächtigungen und Feindseligkeiten in der Computerschach Community ein weit größeres Problem darstellt. Unsere Gemeinschaft wäre gesünder, die Programme weit stärker, wenn wir alle offen und ehrlich wären, in dem was wir tun und die Zusammenarbeit über den Wettbewerb stellen. Dies zu ändern war schon immer mein größtes Ziel im Computerschach. Manchmal ist es deprimierend zu sehen, wie schlecht mir die Umsetzung von diesem Ziel gelungen ist.

Marco Costalba
Ich glaube Du täuscht dich bei dieser Angelegenheit. Nicht die Offenlegung von Sourcen fördert Clones, sondern das Schützen von Sourcen. Ich kann verstehen warum die Kommerziellen ihre Sourcen nicht offen legen. Sehr viel weniger verstehe ich die Gründe bei Amateuren, deren Sourcen für Engines bei mittlerer oder niedriger Spielstärke nicht offen gelegt werden.

Ich denke, dass es sich hierbei um ein Überbleibsel einer veralteten Mentalität der Computerschach Community handelt. Wobei das Jahr 2000 erst jetzt, mit 10jähriger kalendarischen Verspätung ankommt. So ist nach meinem Dafürhalten das relativ hohe Durchschnittsalter der Mitglieder dieser Gemeinschaft an diesen Umständen beteiligt. Dies ist ein Grund für das langsamere Tempo von Veränderungen bei dieser Mentalität. Es ist unvermeidlich nach Crafty und Fruit, dass ein Programm wie Stockfish diesen Umstand aufrecht erhält. Andere Entwickler realisieren langsam, dass nicht veröffentlichte Sourcen ihre Engines schwächt. Wenn es hilft, dass andere durch die Freigabe der eigenen Sourcen Ihre Engines stärken, ist auch das nicht zu unterschätzen. Die Ippo Sourcen sind nun schon seit fast einem Jahr im Umlauf. Bekannte spielstärkere Programme wurden seit dieser Zeit upgedatet, nach diesem Zeitpunkt. Aber es gibt immer noch keine Engine, weder eine frei verfügbare noch eine kommerzielle, welches die Spielstärke von Ippo erreicht hat. Ich Wette darauf, dass alle TOP-Programmierer bereits in die Ippo Sourcen geschaut haben.

Ich denke, das Stockfish in Bezug auf seinen Bekanntheitsgrad, Feedback, Unterstützung und Akzeptanz auch durch die Annahme der GPL Lizenz gewonnen hat. Sogar vom technischen Standpunkt aus gesehen wurde gewonnen, denn es wurden durch die öffentlichen Sourcen auch viele Fehler behoben. Viele Personen beginnen mittels den Stockfish Sourcen neue Ideen auszuprobieren bzw. überhaupt zumindest zu prüfen. Die verschiedenen Implemtations-Möglichkeiten zu klassischen Schachalgorithmen können daher auch öffentlich diskutiert werden. Diese Nutzung empfinde ich als wichtig und genau das hat auch langfristige Auswirkungen. Den Schlüssel für die Verwirklichung dieser Ziele liefern die offenen Sourcen.

Eines der bestgehütesten Geheimnisse wurde durch die Verfügbarkeit von GPL Schachprogrammen aufgedeckt. Es gibt kein Patentrezept dafür, ein starkes Schachprogramm zu erstellen. Die Algorithmen, Ideen und Softwarestrukturen die benutzt werden, sind mehr oder weniger immer gleich und darüber hinaus schon seit Jahren bekannt. Der Unterschied liegt in der Genauigkeit der Umsetzung. Das ist allerdings eher etwas, was nicht einfach kopiert werden kann.

14.
Frank Quisinsky
Es ist möglich, dass in sehr naher Zukunft ein erstes Stockolito, Firefish oder GlauIvanRung verfügbar sein wird. Ein anderer Held wird einen kommerziellen Capablanca Chess 1.0 kreieren, mit dem einzigen Unterschied zu Stockfish, das bei den Bewertungsfunktionen ein Byte in den Sourcen geändert wurde. "Programmierer" mit mehr Wissen werden Stockfish Sourcen in geheimer Mission nutzen aber niemals darüber sprechen.

Was wird Deiner Vorhersage nach geschehen?

Tord Romstad
Die Zukunft wird sich ähnlich darstellen wie die Gegenwart und die jüngste Vergangenheit. Es wird einige neue und originelle Engines geben, einige ältere Engines werden verbessert oder die Entwicklung wird aufgegeben. Auch das gelegentlich und ärgerliche aber unvermeidliche clonen wird zu beobachten sein.

15.
Frank Quisinsky
Weißt Du warum Fabien sein Interesse am Computerschach verloren hat? Für die Meisten von uns stehst Du auf einem Level mit Fabien und niemand hat wirklich ein Interesse daran zukünftig einen weiteren der Freeware TOP Programmierer zu verlieren. Es ist nur schwer nachvollziehbar wie Du und die vielen anderen Freeware Programmierer Ihre Motivation bewahren. Was ist der Haupt Motivationsgrund für Deinen enormen Zeitaufwand diese ganzen Dinge für uns all die Jahre zu tun?

Tord Romstad
Es ist wie bei jedem anderen Hobby auch. Unser eigenes Vergnügen ist es, was uns motiviert. Eine Motivation ist nicht beständig, variiert im Laufe der Zeit und kann manchmal auch vorübergehend oder dauerhaft verschwinden.

Seit geraumer Zeit habe ich keinen Kontakt mehr mit Fabien. Aber er kam vor ein paar Jahren, nach der kommerziellen Version von Fruit, für einen kurzen Zeitraum zurück. Er schrieb sogar ein neues Programm mit dem Namen "Chess64". Ein unvollendetes Projekt, welches aber immer noch recht gut gespielt hat. Auch wurde es in einem interessanten Stil sehr unterschiedlich zu Fruit programmiert. Es ist sehr schade, dass dieses Projekt aufgegeben wurde.

16.
Frank Quisinsky
In der Vergangenheit waren Deine vielen Beiträge für die deutsche Computerschach Community sehr hilfreich. Ich erinnere mich an eine Situation vor vielen Jahren. Der Programmierer von Toga arbeitete gerade an dem Mehrprozessor Code und hatte offenbar einige Probleme. Du hast ihm im CSS Forum geschrieben, das die Umsetzung nicht sehr schwierig sein. Es wäre vielleicht eine Arbeit, die an einem Nachmittag erfolgen könnte. Bitte korrigiere mich wenn ich falsch liege bzw. ich das nicht mehr richtig in Erinnerung habe. Du hast einen sehr populären Namen in der Community. Nicht zuletzt weil Du in den letzten Jahren viele großartigen Kommentare in deutschen Foren abgegeben hast. Welchen Stellenwert nimmt Computerschach in Deinem Leben ein?

Tord Romstad
Interaktiv an der Gemeinschaft teilzunehmen ist auch ein Teil des Spaßes. Obwohl es manchmal auch deprimierend sein kann. Ich besuche nicht so oft das CSS Forum als im Vergleich TalkChess aber manchmal schaue ich mir das CSS Forum an weil es auch Spaß macht zu versuchen in Deutsch zu lesen.

An die Toga Mehrprozessor-Diskussion erinnere ich mich nur sehr vage. Aber wenn ich mich nicht irre, habe ich ihm vorgeschlagen, dass er doch Glaurung’s MP-Code verwenden könne. Das wäre ja auch aufgrund der GPL, der Glaurung unterliegt, absolut legal gewesen. Auch wäre das sehr einfach umzusetzen. Aber wenn ich einen Nachmittag geschrieben habe wäre das wohl zu optimistisch. Ein Wochenende kommt schon eher hin.

17.
Frank Quisinsky
Die folgenden Fragen 17-19 entstehen nun zwangsläufig aufgrund meiner letzten Frage bzw. kommen mir gerade in den Sinn. Kommerzielle Engines mit Mehrprozessor Support kosten sehr viel Geld mehr. Stimmst Du dieser Preiskalkulation zu? Vielleicht benötigt der Mehrprozessor-Code immer wieder sehr viel Zeit für die Erstellung einer neuen Version. Es scheint ja gerade so zu sein, dass 50% der Programmierzeit nur dem Mehrprozessor-Code zuzuordnen ist. Ist das der Grund warum Single-Core Engines 50% günstiger sind?

Glaubst Du, dass diese Forderungen angemessen sind.
Bitte schreibe jetzt nicht: "Du fragst die falsche Person"

Tord Romstad
Die Preise von kommerziellen Programmen stehen in keinem direkten Bezug zur Menge der erbrachten Arbeit. Die Preise werden lediglich nach dem Prinzip der Gewinnmaximierung festgelegt. Wenn die Single CPU Version von einem Programm x EUR kostet und die Multi CPU Version des gleichen Programms kostet 2x x EUR, bedeutet dies nur, dass der Programmierer denkt, dass er auf diese Art und Weise durch dieses Preismodell mehr Geld als durch andere Preismodelle verdienen kann.

18.
Frank Quisinsky
Ich habe davon gehört, dass mehrere Wege zur Implementierung der Mehrprozessor Kompatibilität möglich sind. Könntest Du ein wenig zu diesem Thema schreiben? Welche Möglichkeiten stehen den Programmierern heute zur Verfügung? Welcher der Wege beinhaltet die populärste Technik?

Tord Romstad
Die meisten Programme verwenden eine Variante einer Technik Namens “Young Brothers Wait Algorithmus”. Bei der Umsetzung in Stockfish, und ich denke auch bei den meisten anderen Programmen, wurde dieser Weg von Crafty eingeschlagen. Es gibt andere Algorithmen die schwieriger zu implementieren sind, bei mehreren CPUs effizienter sind. Dann andere, die einfacher umzusetzen sind aber weniger effektiv sind. Eine schlicht und einfache „Crafty-Style YBW-Suche“ bildet eine gute Balance zwischen Komplexität und Effizienz bezüglich der heute verfügbaren Massenmarkt Computern.

19.
Frank Quisinsky
Bei Analysen mit mehreren Cores kommen unterschiedliche Resultate dabei heraus. Dann, wenn versucht wird, die Analyse zu wiederholen. Könntest Du uns diese Umstände näher erklären? Vielleicht tritt dieser Fall auch nur bei einer der möglichen Techniken bei der Implementierung von Multiprozessor-Code auf?

Tord Romstad
Wenn ein Schachprogramm eine Position, irgendwo tief innerhalb des Suchbaums, untersucht, macht es Gebrauch bzw. erinnert sich an frühere bereits untersuchte Positionen der gleichen Suche. Die Zugbeschneidung, Verkürzung oder Verlängerung hängen davon ab, welche Positionen vorher überprüft wurden und wie die Ergebnisse der Untersuchung dieser Positionen waren. Der Großteil der Informationen, der für eine Entscheidung verwendet wird, liegt im Arbeitsspeicher. Der Arbeitsspeicher steht allen Prozessoren zur Verfügung.

Solange es nur einen Thread gibt, ist alles zu 100% reproduzierbar. Aber bei mehreren Threads, beginnen seltsame Dinge zu geschehen, weil diese Threads nie synchron mit gleicher Geschwindigkeit aktiv sein können. Immer wieder wird eine CPU für ein paar Millisekunden eine Pause einlegen müssen und das Betriebssystem weist dann sofort eine andere Aufgabe zu. Das geschieht zufällig und ist nicht vorhersehbar, eine Kontrolle gibt es hierfür nicht. Als Konsequenz erreicht jeder Prozessor eine bestimmte Position eher zufällig und das wirkt sich dann auf die Suche nach Entscheidungen zur aktuellen Position aus.

20.
Frank Quisinsky
Zappa und Komodo profitieren von 64-Bit um ca. 65 ELO, Rybka und Onno um ca. 50 ELO, Glaurung und Stockfish um ca. 30 ELO. Was könnte der Grund hierfür sein? Vielleicht könnte Stockfish um 30 ELO bei weiteren Verbesserungen zum 64-Bit Support verbessert werden. Ist das möglich?

Tord Romstad
Das ist sehr unwahrscheinlich. Es ist schwierig ohne Kenntnisse zu den Sourcen der anderen Programme diesen Punkt zu diskutieren. Allerdings denke ich, das Stockfish ebenso gut für 64-Bit optimiert ist wie Zappa, Komodo, Rybka und Onno. Es ist eher wahrscheinlicher, dass die Erklärung bei der 32-Bit Optimierung zu suchen ist. Stockfish ist besser auf 32-Bit optimiert, als die meisten anderen Bitboard Engines. Viele der wichtigen Low-Level Bestandteile in Stockfish gibt es in zwei Versionen. Eine Version für 64-Bit und eine ist für 32-Bit CPUs optimiert. Dank dieses Umstandes erreicht Stockfish auf 32-bit-Hardware eine substantielle Geschwindigkeit obwohl sie nicht ganz so groß ist, wie bei den meisten anderen Bitboard Programmen.

21.
Frank Quisinsky
Zum Ende des Interviews haben wir sicherlich alle ein Interesse daran, den aktuellen Entwicklungsstand von Stockfish zu erfahren. Ist eine neue Version auf dem Weg zum Release? Hast Du zwischenzeitlich mit Joona und Marco die Null-Move Idee von Dann Corbit überprüft?

Tord Romstad
Es gibt immer eine neue Version die auf dem Weg zu einem Release ist. Einige der Details bei unseren rekursiven Null-Move Pruning wurden in der aktuellen Version geändert. Es gibt Unterschiede zu den Vorschlägen von Dann, einiges stimmt auch überein. Du musst auf die nächste Release Version warten, um die Details sehen zu können.

22.
Frank Quisinsky
Es ist sehr aufregend zu versuchen Material wie z. B. Teststellungen von Schachprogrammierern zu erhalten. Material welches einsam und verlassen auf Euren Festplatten schlummert. Auch die eine oder andere bevorzugte oder favorisierte Partie wäre interessant. So kann ich eine Partie auch in das Interview setzen. Eine Partien nach dem Lesen des Interviews nachzuspielen, bei schöner Hintergrundmusik von Bach, ist angenehm. Ja Tord, ich erinnere mich an einen Kommentar von Dir bzw. an eine E-Mail oder einen Forenbeitrag den Du mir vor einigen Jahren geschrieben hast. Du hörst gerne Bach, ich auch. Welche anderen Hobbys hast Du noch außer Computerschach.

Tord Romstad
Abgesehen von 16 Teststellungen, die wir für den Stockfish-Bench-Test verwenden, haben wir keine besonderen Positionen, die wir bei Entwicklungsversionen zum Testen einsetzen. Bei den 16 Teststellungen betrachten wir nicht die Analyse, sondern nur die Geschwindigkeit bzw. die Knotenzählung. Der Hauptzweck besteht darin Fehler zu finden. Wenn z. B. einige Veränderungen nicht angenommen werden, die die Suche oder die Bewertung beeinflussen. Wenn die Knotenzählung Änderungen aufweist wissen wir, da ist etwas nicht in Ordnung.

Auch auf die Frage nach favorisierten Partien ist es schwierig zu antworten. Wir verfolgen die Test-Partien nicht, sondern schauen auf Resultate und Statistiken. Und selbst wenn wir beim Nachspielen von Partien eine besonders schöne entdecken, speichern wir diese nicht getrennt ab. Diese landet nur versteckt und vergessen in einer größeren PGN Datei, zusammen mit Tausenden von anderen Partien irgendwo auf unseren Festplatten.

Meine Hobbys sind:
Schnell laufen (sprinten), lesen (alles Mögliche, Dokumentationen und Sachbücher) und Geige spielen.

Hier ist ein Spiel, das vor einiger Zeit in TalkChess gepostet wurde (ich habe vergessen wer es gepostet hat). Ich bin mir nicht sicher ob es ein gutes Spiel ist, aber es ist sicherlich ein sehr unterhaltsames Spiel.


[Event "2 Minutes/Game + 2 Seconds/Move"]
[Site "Engine Match"]
[Date "2009.11.17"]
[Round "7"]
[White "Protector 1.3.1 x64"]
[Black "Stockfish 1.5.1 x64"]
[Result "0-1"]

1. d4 {book 0s} d5 {book 0s} 2. Nf3 {book 0s} Nf6 {book 0s} 3. c4 {book 0s} dxc4 {book 0s} 4. Nc3 {book 0s} a6 {book 0s} 5. e4 {book 0s} b5 {book 0s} 6. e5 {book 0s} Nd5 {book 0s} 7. a4 {book 0s} e6 {book 0s} 8. axb5 {book 0s} Bb4 {book 0s} 9. Qc2 {+0.78/15 16s} Nb6 {+0.84/16 5s} 10. Qe4 {+0.68/14 4s (Be2)} Qd5 {+0.08/17 5s} 11. Qg4 {+0.61/15 6s (Qxd5)} axb5 {-0.12/17 4s (g6)} 12. Rxa8 {+0.78/15 4s} Qxa8 {+1.29/18 12s} 13. Qxg7 {+0.38/15 5s} Bxc3+ {0.00/19 10s} 14. bxc3 {+0.31/16 4s} Qa1 {0.00/19 8s} 15. Qxh8+ {+0.39/15 7s} Kd7 {0.00/19 3s} 16. Be2 {+0.35/16 11s (Kd1)} Qxc1+ {-0.68/14 0s} 17. Bd1 {+0.37/14 0s} Qxc3+ {-0.44/18 11s} 18. Nd2 {+0.32/16 7s} Qxd4 {-0.56/17 6s} 19. Qxh7 {+0.30/14 3s} Qxe5+ {-0.60/16 3s (Ke7)} 20. Ne4 {+0.30/15 5s} Kc6 {-0.88/17 9s (Qf5)} 21. O-O {+0.44/14 6s} f5 {-0.52/16 4s} 22. Ng5 {+0.49/13 4s} b4 {-0.52/15 4s} 23. h4 {+0.58/13 19s (Nf3)} Nd5 {-0.16/14 8s (Kb5)} 24. Qg8 {+1.09/13 5s (Ba4+)} Kb7 {+1.13/16 6s} 25. h5 {+1.73/13 2s} b3 {+1.09/15 4s (Qf6)} 26. h6 {+1.89/13 2s} b2 {+1.33/15 3s} 27. Bc2 {+0.93/15 14s (Nf7)} Nf6 {+0.12/15 3s} 28. Qg7 {+0.97/14 7s} Nbd7 {0.00/16 8s} 29. Nf3 {+1.46/14 7s} Qe2 {-0.44/15 3s (Qc5)} 30. Bb1 {+0.79/14 5s (Nd4)} c3 {+0.08/16 3s} 31. h7 {+0.79/14 1s} c2 {0.00/17 3s} 32. Bxc2 {+0.70/14 2s} Qxc2 {0.00/18 3s} 33. h8=Q {+1.07/14 3s} b1=Q {+0.24/17 4s} 34. Rxb1+ {+0.62/13 7s} Qxb1+ {+0.20/9 0s} 35. Kh2 {+0.69/14 1s} Ng4+ {+0.72/16 3s (Qf1)} 36. Kg3 {+0.80/14 1s} e5 {0.00/17 8s (Ndf6)} 37. Ng5 {+1.14/12 1s} Qd3+ {0.00/16 2s (Qg1)} 38. f3 {+1.76/14 3s} Qe3 {+0.52/17 4s} 39. Kh4 {+1.11/14 6s} Qf2+ {+0.32/17 5s} 40. Kh5 {+0.88/14 4s} Ngf6+ {+0.48/17 5s} 41. Kh6 {+0.83/14 4s (Kg6)} e4 {0.00/14 2s} 42. Ne6 {+0.48/12 3s (Nf7)} Qh4+ {-0.64/14 2s (exf3)} 43. Kg6 {+1.48/10 0s} Qg3+ {0.00/15 5s} 44. Kf7 {+1.64/13 3s} Qd6 {0.00/15 4s} 45. Nd8+ {+1.64/11 1s} Ka7 {0.00/15 4s (Ka6)} 46. Qg5 {+1.97/11 3s} Bb7 {0.00/15 2s (exf3)} 47. Qe3+ {+1.32/10 3s} Ka6 {0.00/15 1s (c5)} 48. Qe2+ {+1.69/10 1s} Ka7 {0.00/8 0s} 49. Qa2+ {+1.41/11 2s (Qe3+)} Ba6 {-0.72/8 0s} 50. Ne6 {+1.01/11 2s (Qa5)} e3 {+0.28/14 2s} 51. Qa5 {+1.09/12 3s (Qh4)} e2 {0.00/14 2s} 52. Qd8 {+1.53/12 1s (Qh4)} Nd5 {+0.48/16 4s} 53. f4 {+1.26/12 1s} Kb7 {-0.56/16 2s (c5)} 54. g3 {-0.92/12 3s} N5b6 {-1.17/16 2s} 55. Qe7 {-1.14/12 1s} Bc4 {-1.61/17 2s} 56. Qxd6 {-1.58/14 3s} cxd6 {-1.29/13 0s} 57. Ke7 {-1.53/14 1s} Bxe6 {-1.73/18 2s} 58. Qe1 {-1.53/15 1s} Bc4 {-2.46/19 2s} 59. Kxd6 {-1.46/16 2s} Bb5 {-2.42/19 2s} 60. Ke6 {-1.46/15 2s} Nc5+ {-3.03/19 3s (Bd3)} 61. Ke7 {-3.03/13 2s (Kxf5)} Nb3 {-7.51/17 1s (Kc6)} 62. Qh1+ {-6.43/13 2s (Qb1)} Kc7 {-9.01/18 2s} 63. g4 {-6.32/13 2s (Kf7)} fxg4  {-12.00/18 3s (Nd4)} 0-1

FQ: Nach Zug 33. ... b1D

23.
Frank Quisinsky
Welche anderen Engines magst Du? Ich wünsche mir Du würdest AnMon schreiben!?

Leider scheint offenbar die bei AnMon verwendete MTD Suche sehr schwierig umzusetzen zu sein oder steht vielleicht auch nicht mehr im großen öffentlichen Interesse seitens der Programmierer. Nach allem was ich weiß, ist MTD dennoch ein sehr interessanter Ansatz der Schachprogrammierung.

1. Welche Engines magst Du?
2. Was ist Deine Meinung zu MTD (ganz speziell für mich)?

Tord Romstad
Als Mac Anwender weiß ich nicht viel über andere Schachprogramme. Von den meisten Engines, so auch AnMon, gibt es keine Macintosh Version. Grundsätzlich bevorzuge ich Open-Source Programme. Für mich ist ein Programm ohne Sourcen nur ein halbes Programm. In alphabetischer Reihenfolge hier ein paar meiner Favoriten:

Crafty: Das am meisten komplette Programm. Portable und mit Features voll gepackt als freies Schachprogramm erhältlich. Zudem eines der derzeit spielstärksten Schachprogramme überhaupt. Das wohl wichtigste Schachprogramm aller Zeiten. Crafty hat sehr viel beeinflusst.

Fruit: Zeigte der Welt die Kraft der Einfachheit, Richtigkeit und eine saubere und rigorose Art der Programmierung. Sehr elegant geschrieben. Bei späteren Derivaten, auch wenn spielstärker, ist es nicht gelungen, den Stil und die Schönheit des Originals zu bewahren.

MicroMax: Zählt weder zu einem der spielstärksten Programme, noch ist der Code benutzerfreundlich und gut lesbar aber bei Weitem sehr beeindruckend. Mehr als ein ELO-Punkt pro Zeichen ist eine unglaubliche Leistung.

OliThink: Bewundernswert knapp, elegant und gut lesbar. Sehr stark für seine Größe. Vielleicht das beste Programm um mehr zum Thema Bitboards zu lernen.

Phalanx: Dieses Programm lehrte mich die Schachprogrammierung und ist möglicherweise immer noch eines der besten Programme für Anfänger zum Thema Schachprogrammierung. Die meisten anderen Programme sind entweder zu grundlegend (TSCP) oder zu groß und komplex (Crafty, Fruit, Stockfish).

24.
Frank Quisinsky
Morgen früh steht Fabien vor Deiner Haustür. “Hallo Tord, wir können beide voneinander lernen. Ich möchte von Dir lernen und vielleicht kannst Du auch etwas von mir lernen. Hiermit bekunde ich mein Interesse im Stockfish Team mitzuarbeiten.“ Wie würde Deine Antwort lauten?

Tord Romstad
Ich bin mir sicher, wir würden sehr gut mit Fabien zusammenarbeiten. Die Ergebnisse würden hervorragend sein. Aber ich bezweifle, dass er ein Interesse an einer Zusammenarbeit mit Stockfish in der jetzigen Form haben würde. Wahrscheinlicher wäre es, dass wir ein neues Programm von Grund auf neu programmieren würden. Das ist natürlich sehr unwahrscheinlich aber ich hätte Spaß daran.

Frank Quisinsky
Vielen Dank Tord, Joona und Marco für Eure Zeit.
SCHACHWELT wünscht Euch zukünftig viel Erfolg mit Stockfish.

Copyrights and Sources by http://www.schach-welt.de & Frank Quisinsky

Note:
Further publication of this interview is allowed and wished,
but with the permission of
http://www.schach-welt.de only.
One condition is the complete casting (e.g. in printed media).

Frank Quisinsky, 28.03.2010