Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Schachprogrammierung / C Programmierung
- - By Lothar Jung Date 2021-08-20 19:28 Edited 2021-08-20 19:33
Hier ein englischsprachige Einführung in die Programmiersprache C:

https://lcc-win32.services.net/C-Tutorial.pdf

Hier eine deutschsprachige Version:

https://www.cs.hs-rm.de/~panitz/c/skript.pdf
Parent - - By Thomas Plaschke Date 2021-08-21 12:16
Das sind zwei wirklich gelungene Einführungen in C.

Ein Indikator für ihre Qualität ist für mich bereits die richtige (wie bei Kernighan & Ritchie) Definition des Parameters argv der Funktion main als Vektoren-Array (*argv[]) und nicht als Zeiger auf Zeiger.

Hervorheben könnte man in der ersten Einführung den Abschnitt zu den Fallstricken der Programmiersprache. Die zweite Einführung besticht durch ihren didaktischen Anspruch, der sie für deutschsprachige Programmieranfänger sehr interessant machen sollte.

Wirklich gut gefunden, Lothar!

Viele Grüße
Th. Plaschke
Parent - - By Lothar Jung Date 2021-08-21 13:19 Edited 2021-08-21 14:13
Danke Thomas,

ein geeignetes UCI-Schachprogramm in C habe ich bereits ausgewählt.
Es ist sehr übersichtlich programmiert. Stärke in den Tests 2.200 Elo.
Es ist in search und eval ausbaufähig.

Es soll in erste Linie ein Programm sein, mit dem die Foristen selber spielen können.
Die Programmentwicklung sollte eine Stärkeskala von inaktiven bis aktiven starken Vereinspieler abdecken.
So entsteht eine Wechselwirkung zwischen Programm und Partie und Testen.  Also eine gewisse Identifikation des Spielers mit seinem modifizierten Programm.
Eigene Eröffungsbücher lassen sich in die GUI einpflegen.

Zum Lernen und Auffrischen von C schlage ich den IDE/Compiler lcc-win32/64 vor. https://lcc-win32.services.net/

Zur Programmentwicklung schwanke ich zwischen Visual Studio 2019 und Eclipse gcc.
Beide verfügen über eine GitHub Repository Clone Anbindung.

Was meinst Du zu meinen Vorschlägen?
Findet das Projekt genügend Resonanz?

Viele Grüße

Lothar
Parent - - By Thomas Plaschke Date 2021-08-21 17:31

>ein geeignetes UCI-Schachprogramm in C habe ich bereits ausgewählt.


Wo? Ich habe eben mal gesucht, aber nichts gefunden. Oder etwa Baislicka?

Mir stellen sich für so ein Projekt am Anfang mehrere grundlegende Fragen:

- Wenn möchte ich zum Mitmachen motivieren? Wer soll sich angesprochen fühlen?
Die Foristen. Unter denen, die sich dafür interessieren könnten, werden einige Programmiererfahrung haben und andere nicht. Die mit Programmiererfahrung müssen nicht zwangsläufig "C" können. Die ohne Programmierkenntnisse werden erst feststellen müssen, ob das überhaupt etwas für sie ist. Wer den Zugang zum Programmieren findet und Interesse an der Schachprogrammierung hat, wird nach meiner Einschätzung (und eigener Erfahrung) von "C" mit einer steilen Lernkurve belohnt. Aber auf diese Schachfreunde zu warten, würde sich lohnen.

- Soll man ein fertiges Programm weiterentwickeln? Das halte ich für den falschen Start. Das oben genannte Baislicka ist schon ein "gestandenes" Programm (bitboard, Hashtabellen etc.). Ich empfehle mit einem schlichten Mailbox-Programm bei Null anzufangen. Mit 2200 Elo zu beginnen, würde den Kampf um ein Programm, dass erstmal nur die Regeln beherrscht, auslassen . Man kann sich während der Entwicklung bei vielen anderen Programmen trotzdem etwas abgucken und daran orientieren. Für die Programmieranfänger lassen sich die Entwicklungsschritte dann auch leichter nachvollziehen.

- Welche IDE? Welcher Compiler? Ich benutze MSYS2 + minGW + notepad++. Dazu ein kleines makefile und kleinere Programme sind schnell fertig. Für größere Programme kommt man um einen Debugger nicht herum. Sollte minGW einen enthalten - ich habe ihn nie genutzt. Wenn Visual Studio einen Vorteil hat, dann ist das die Integration von Editor, Compiler und Debugger unter einer Oberfläche. Ich bin damit recht zufrieden gewesen. Praktische Erfahrungen habe ich noch mit DevCpp gesammelt. Damit geht's auch. Den Editor finde ich aber tückisch. Man würde nah an einem C-Standard und den Standard-Bibliotheken programmieren müssen. Dann kann jeder den Compiler verwenden, mit dem er glücklich ist. Dabei wird man auch ein Augenmerk auf die verschiedenen Betriebsysteme haben müssen. Warum LCC? Ich empfehle, sich auf wenige verbreitete Standards zu beschränken. Bspw.: gcc, mingw, clang und visual c. Besonderheiten der Compiler (oder der Betriebssysteme) im Quellcode zu berücksichtigen, ist ein Quell hartnäckiger Fehler, spezieller Compilerwarnungen und schadet der Lesbarkeit des Codes.

- Versionsverwaltung? Github ist vermutlich ein Muss. Ich habe damit allerdings nur Erfahrung als leecher. Selber habe ich bislang keine Beiträge zu Github-Projekten geleistet, wie ich auch sonst keine Erfahrung in der gemeinsamen Entwicklung von Software habe. So würde es vermutlich den meisten Teilnehmern an diesem Projekt gehen. Wie viel Frustrationspotential bietet Github?

Persönlich finde ich die Idee einer Forums-Engine natürlich reizvoll, würde mich aber wegen des Zeitaufwandes zurzeit kaum wirkungsvoll einbringen können.

Viele Grüße
Th. Plaschke
Parent - By Lothar Jung Date 2021-08-22 09:44 Edited 2021-08-22 10:39
Hallo Thomas,

vielen Dank für Deinen aufschlussreichen Beitrag.

Ja, meine Auswahl der Engine betraf Baislicka:

https://github.com/kz04px/Baislicka

Aber ich hatte auch folgende Engines in Erwägung gezogen:

http://www.tckerrigan.com/Chess/TSCP/

https://github.com/billjordanchess/Bitboard-Chess  (ein englischsprachiges Taschenbuch dazu ist erschienen).

Nun zu Deinen Fragen:

1. Programmiererfahrung

Es reicht natürlich auch Basic, besser Pascal aus. Oder auch mathematisches Interesse und Kenntnisse in Algebra wäre eine gute Voraussetzung. Lernvideos auf YouTube könnten zur Vorbereitung dienen. Zum Beispiel unsere Mathe-Thread zeigt das im Forum genügend Potential vorhanden ist. Selbst das Erlernen und Vertiefen von „C“ anhand eines Schachprogramms wäre schon allein ein Meilenstein. Ich warte gerne auf solche Schachfreunde!

2. Weiterentwicklung eines fertigen Programms

Das ist wohl Deine schwierigste Frage. Mit Mailbox-Programmen habe ich leider keine Erfahrungen. Aber ich bin für alles offen; jedoch bin ich auf Resonanz und Vorschläge aus dem Forum angewiesen. Natürlich wäre ein Programm, das eine Brettdarstellung und einen Zuggenerator beinhaltet, ein sehr wichtiger Zwischenschritt. Aber ich kann die Foristen „nicht zum jagen tragen“.

3. IDE und Compiler

Ich bin da völlig offen. Vielleicht benutzen unsere Foristen schon eine IDE? Ich glaube jetzt, dass wohl Visual Studio die beste und einfachste Lösung darstellt. Falls Einige mit gcc, MinGW, clang und DevCpp besser zurechtkommen, so what.

4. Versionsverwaltung

Ich glaube, das GitHub erforderlich ist. Es ist in MS VS eingebunden. Auch generell ist die Einbindung von GitHub für die Beschäftigung mit der Schachprogrammierung unumgänglich.

5. Mitarbeit

Aus qualifizierten Beiträgen im Forum wüsste ich schon mindestens zwei Hände voll Foristen, die sich hier einbringen könnten.
Ich kann nicht alles leisten! Ich glaube, dass ich mit dem Aufbau des Unterforums eine belastbare Grundlage geschaffen habe.
Die Quellen und die Gliederung erreichen ein wissenschaftliches Niveau. Für die Umsetzung benötige ich und andere qualifizierte Hilfe.

Mit optimistischen Grüßen

Lothar
- - By Lothar Jung Date 2021-08-25 19:41
Hier die englischsprachigen Angebote über C-Programmierung bei edx.org:

https://www.edx.org/learn/c-programming?hs_analytics_source=referrals&utm_source=mooc.org&utm_medium=landing-page&utm_campaign=mooc.org-topics
Parent - - By Daniel Reist Date 2021-09-04 01:19
Hallo Zusammen

Also als ich ein wenig versucht habe, das Programmieren
von Schachprogrammen zu verstehen,
habe ich mir das TCSP angeschaut und ich finde dieses
hat schon sehr viel erklärt darin.

Ich denke dieses wäre sicherlich auch gut zum Bearbeiten.

Ich habe es dann auch mit dem LCC Compiler gemacht.

Jetzt habe ich mal den Codeblock, aber damit habe ich noch
nie eine Exe Datei gemacht.

Der LCC ist vielleicht besser, weil wohl alles drin ist.
Parent - - By Benno Hartwig Date 2021-09-04 07:05 Edited 2021-09-04 07:09

> habe ich mir das TCSP angeschaut ...


What?
https://acronyms.thefreedictionary.com/TCSP

"Tiny C ???" oder so?
Parent - By Lothar Jung Date 2021-09-04 08:59
Hallo Benno,

schau Dir „Projekt 1“ an.

Grüße

Lothar
Parent - By Lothar Jung Date 2021-09-04 08:58 Edited 2021-09-04 09:38
Hallo Daniel,

danke für Deinen Beitrag.

Ich hatte als „Projekt 1“ auch TCSP in Erwägung gezogen.
In dem Thread ist TCSP beschrieben.
Auch mögliche Verbesserungen bei der Bewertung.
LCC ist auf alle Fälle geeignet.

Könntest Du mit einer kleinen Änderung im SourceCode den Anfang machen?

Viele Grüße

Lothar
Up Topic Hauptforen / Schachprogrammierung / C Programmierung

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill