Diese Seite mit anderen teilen ...

Informationen zum Thema:
Forum:
ChessBits-Computerschachforum
Beiträge im Thema:
35
Erster Beitrag:
vor 15 Jahren, 9 Monaten
Letzter Beitrag:
vor 15 Jahren, 9 Monaten
Beteiligte Autoren:
Ingo Bauer, Rafael B. Andrist, Rainer Neuhäusler, Dieter Bürßner, Ulrich Türke, harald faber, Martin Schubert, Stefan Knappe, Harald Faber

Schachprogrammierkurs LOT

Startbeitrag von Ingo Bauer am 20.06.2001 11:45

Hallo

Leicht Off Topic (oder besser nur leicht On Topic)!

Wer sich wie ich schon auf Thomas Mayers Schachprogrammiergrundkurs freut und sich ein wenig einarbeiten will, für den habe ich hier ein paar Empfehlungen.


Literatur:

1. Titel: Die C++ Programmiersprache
Autor: Bjarne Stroustrup
Verlag: Addison Wesley
Preis: 99 DM

Wirklich gutes Buch mit allem was man Wissen muß. Kleiner Tip für denjenigen der auf das Hardcover verzichten kann: Das exakt gleiche Buch gibt es als Studentenausgabe für 69 DM. Diese Ausgabe sieht auch schon nach 2 Wöchigem gebrauch aus als würde ein alter C++ Crack am Rechner sitzen :-). Wenn man die Heutigen Preise für Computerbücher vergleicht kann ich nur sagen 69 DM ist es auch wirklich wert. Dieses Buch ist sozusagen die C++ Bibel vom Erfinder von C++.

2. Titel: C++ für Einsteiger
Autor: Dirk Ammelburger
Verlag: ?? aber www.KnowWare.de
Preis: 8 DM

Der Preis ist kein Schreibfehler. Kleines Heftchen mit ca. 80 Seiten. Alles erklärt. Von Datentypen bis Klassen, sowie von Funktionen bis Pointern ist alles erklärt. Ist mir in einem Kiosk in die Hände gefallen und ich muß sagen ich habe noch nie so konzentriertes Wissen in so verständlicher Form gelesen. Ist allerdings wirklich für den Anfänger. An besagter Adresse kann man die ersten 20 Seiten downloaden um mal reinzuschnuppern. Bei 8 DM kann man auch nicht gleich so viel Falsch machen.



Compiler:

[www.bloodshed.net]

Dort gibt es Dev.C++ ein komplettes C++ Entwickler Tool. Compiler und IDE. Benutze ich ganz gerne da alles in einem. Bestimmt nicht der effizienteste Compiler aber zum Reinschnuppern meine Empfehlung.


[www.borland.com]

Der beste freie Compiler von Borland/Inprise. 8.7 MB nur Compiler.
Dazu braucht man aber noch einen Editor. Den meiner meinung nach besten gibts hier: [www.mkidesign.com]
Von Borland gibts sogar noch den Turbo Debugger gratis unter : [www.borland.com]
Der Download von Borland ist umsonst erfordert aber ein paar Angaben zur Person!


[www.cs.virginia.edu]

Wenn dies nicht nur ein C Compiler (kein C++) wäre hätte ich diesen als ersten genannt. Auch komplett inclusive IDE. Der Borland Compiler kann eingebunden werden.



Alle laufen unter Windows und können selbstverständlich Konsolenanwendungen erzeugen (Schach-Engine). Auf den Homepages gibt es jeweils noch einige Help-Files sowie C pder C++ Tutorials.


Viel Spaß beim rumprobieren
Ingo

Antworten:

Ingo Bauer schrieb:
>
> Hallo
>
> Leicht Off Topic (oder besser nur leicht On Topic)!
>
> Wer sich wie ich schon auf Thomas Mayers
> Schachprogrammiergrundkurs freut und sich ein wenig einarbeiten
> will, für den habe ich hier ein paar Empfehlungen.
>
>
> Literatur:
>
> 1. Titel: Die C++ Programmiersprache
> Autor: Bjarne Stroustrup
> Verlag: Addison Wesley
> Preis: 99 DM

Den Strustrup finde ich persönlich zum Lernen von C++ nicht so gut geeignet; ich persönlich war leicht überfordert damit.
Als Nachschlagewerk, wenn man sich bereits einigermaßen auskennt, okay. Enthält eben den kompletten Standard und vom Erfinder selbst geschrieben.

Für die Schachprogrammierung braucht man sicher nur einen sehr kleinen Bruchteil des riesigen C++ -Standards, z.B. die ganze Template-Library sicher nicht.

Wie gesagt, zum Lernen wuerde ich dieses Buch nicht unbedingt empfehlen, - natuerlich nur mein ganz persoenlicher Eindruck.

Gruss, Uli

>
> Wirklich gutes Buch mit allem was man Wissen muß. Kleiner Tip
> für denjenigen der auf das Hardcover verzichten kann: Das exakt
> gleiche Buch gibt es als Studentenausgabe für 69 DM. Diese
> Ausgabe sieht auch schon nach 2 Wöchigem gebrauch aus als würde
> ein alter C++ Crack am Rechner sitzen :-). Wenn man die
> Heutigen Preise für Computerbücher vergleicht kann ich nur
> sagen 69 DM ist es auch wirklich wert. Dieses Buch ist
> sozusagen die C++ Bibel vom Erfinder von C++.
>
> 2. Titel: C++ für Einsteiger
> Autor: Dirk Ammelburger
> Verlag: ?? aber www.KnowWare.de
> Preis: 8 DM
>
> Der Preis ist kein Schreibfehler. Kleines Heftchen mit ca. 80
> Seiten. Alles erklärt. Von Datentypen bis Klassen, sowie von
> Funktionen bis Pointern ist alles erklärt. Ist mir in einem
> Kiosk in die Hände gefallen und ich muß sagen ich habe noch nie
> so konzentriertes Wissen in so verständlicher Form gelesen. Ist
> allerdings wirklich für den Anfänger. An besagter Adresse kann
> man die ersten 20 Seiten downloaden um mal reinzuschnuppern.
> Bei 8 DM kann man auch nicht gleich so viel Falsch machen.
>
>
>
> Compiler:
>
> [www.bloodshed.net]
>
> Dort gibt es Dev.C++ ein komplettes C++ Entwickler Tool.
> Compiler und IDE. Benutze ich ganz gerne da alles in einem.
> Bestimmt nicht der effizienteste Compiler aber zum
> Reinschnuppern meine Empfehlung.
>
>
> [www.borland.com]
>
> Der beste freie Compiler von Borland/Inprise. 8.7 MB nur
> Compiler.
> Dazu braucht man aber noch einen Editor. Den meiner meinung
> nach besten gibts hier: [www.mkidesign.com]
> Von Borland gibts sogar noch den Turbo Debugger gratis unter :
> [www.borland.com]
> Der Download von Borland ist umsonst erfordert aber ein paar
> Angaben zur Person!
>
>
> [www.cs.virginia.edu]
>
> Wenn dies nicht nur ein C Compiler (kein C++) wäre hätte ich
> diesen als ersten genannt. Auch komplett inclusive IDE. Der
> Borland Compiler kann eingebunden werden.
>
>
>
> Alle laufen unter Windows und können selbstverständlich
> Konsolenanwendungen erzeugen (Schach-Engine). Auf den Homepages
> gibt es jeweils noch einige Help-Files sowie C pder C++
> Tutorials.
>
>
> Viel Spaß beim rumprobieren
> Ingo

von Ulrich Türke - am 20.06.2001 12:04
Hallo

> >
> > 1. Titel: Die C++ Programmiersprache
> > Autor: Bjarne Stroustrup
> > Verlag: Addison Wesley
> > Preis: 99 DM
>
> Den Strustrup finde ich persönlich zum Lernen von C++ nicht so
> gut geeignet; ich persönlich war leicht überfordert damit.
> Als Nachschlagewerk, wenn man sich bereits einigermaßen
> auskennt, okay. Enthält eben den kompletten Standard und vom
> Erfinder selbst geschrieben.
>
> Für die Schachprogrammierung braucht man sicher nur einen sehr
> kleinen Bruchteil des riesigen C++ -Standards, z.B. die ganze
> Template-Library sicher nicht.
>
> Wie gesagt, zum Lernen wuerde ich dieses Buch nicht unbedingt
> empfehlen, - natuerlich nur mein ganz persoenlicher Eindruck.

Hmm, ich kam von reinem C da ging es. Jeder sollte allerdings mal mit diesem Heftchen anfangen. Wenn er das Intus hat klappts auch mit dem Stroustrup :-)

Bye
Ingo

von Ingo Bauer - am 20.06.2001 12:13
Ingo Bauer schrieb:
>
> Hallo
>
> > >
> > > 1. Titel: Die C++ Programmiersprache
> > > Autor: Bjarne Stroustrup
> > > Verlag: Addison Wesley
> > > Preis: 99 DM
> >
> > Den Strustrup finde ich persönlich zum Lernen von C++ nicht so
> > gut geeignet; ich persönlich war leicht überfordert damit.
> > Als Nachschlagewerk, wenn man sich bereits einigermaßen
> > auskennt, okay. Enthält eben den kompletten Standard und vom
> > Erfinder selbst geschrieben.
> >
> > Für die Schachprogrammierung braucht man sicher nur einen sehr
> > kleinen Bruchteil des riesigen C++ -Standards, z.B. die ganze
> > Template-Library sicher nicht.
> >
> > Wie gesagt, zum Lernen wuerde ich dieses Buch nicht unbedingt
> > empfehlen, - natuerlich nur mein ganz persoenlicher Eindruck.
>
> Hmm, ich kam von reinem C da ging es.

Ich auch. Ich finde es nicht sonderlich didaktisch aufgezogen. Erst einmal eine Rundreise durch die STL-Library, wo es nicht so in die Tiefe geht, die man aber erst versteht, wenn man eh schon einiges weiß. Und danach geht es wirklich mit "Bomben und Granaten" zur Sache. Die Beispiele compilieren meist nicht auf Anhieb wegen Namespace. Um diese compilierbar zu machen, musste ich mir einige Male rat holen. Ist nicht sonderlich motivierend.

Also, mich hat das Buch fast zur Verzweiflung gebracht. Ich habe dann leichtere Lektüre vorgezogen.

Ich weiss aber, dass dieses Buch viele Fans hat und sicher auch das kompletteste ist.

Viele kommen doch anscheinend besser damit klar als ich.

Uli

> Jeder sollte allerdings
> mal mit diesem Heftchen anfangen. Wenn er das Intus hat klappts
> auch mit dem Stroustrup :-)
>
> Bye
> Ingo

von Ulrich Türke - am 20.06.2001 12:26
Hallo Ulli

> Ich weiss aber, dass dieses Buch viele Fans hat und sicher auch
> das kompletteste ist.

Ich bin einer :-). Muß sagen das ich den Stroustup eigentlich als Nachschlagewerk benutze und da ist er OK.

Hast du eine Empfehlung für einen fortgeschrittenen Anfänger? Ich kann und will mir natürlich nicht 10 Bücher kaufen, um dann zu sagen dieses eine ist OK.

Ingo

von Ingo Bauer - am 20.06.2001 12:40
Ingo Bauer schrieb:
>
> Hallo Ulli
>
> > Ich weiss aber, dass dieses Buch viele Fans hat und sicher auch
> > das kompletteste ist.
>
> Ich bin einer :-). Muß sagen das ich den Stroustup eigentlich
> als Nachschlagewerk benutze und da ist er OK.

Ganz deiner Meinung.

>
> Hast du eine Empfehlung für einen fortgeschrittenen Anfänger?

Leider nicht. Ich habe dann einfach die Doku zum C++ Sun-Compiler in der Firma gelesen. Die ist m.E. sehr gut.
Aber da sollte sicher jemand weiterhelfen koennen.

Uli

> Ich kann und will mir natürlich nicht 10 Bücher kaufen, um dann
> zu sagen dieses eine ist OK.
>
> Ingo

von Ulrich Türke - am 20.06.2001 12:46
Hallo Ingo,

war die Diskussion um die zu verwendende Programmiersprache schon beendet? Habe ich etwas verpasst?

Nach meinem letzten Kenntnisstand war doch VB ziemlich hoch im Kurs (zwecks Verständlichkeit usw.)!

Gruß
Stefan

von Stefan Knappe - am 20.06.2001 13:32
Hallo Stefan

Ich war der Meinung das C oder C++ ziehmlich hoch im Kurs stand. Basic mag vielleicht besser lesbar sein aber könntest du mir bitte eine VB Download Adresse nennen? ;-)

Ausserdem: Fakten schaffen!!!!!

Bye Ingo

von Ingo Bauer - am 20.06.2001 13:58
Hallo Ingo,

> Ich war der Meinung das C oder C++ ziehmlich hoch im Kurs
> stand.

vielleicht habe ich da doch einen Teil der Diskussion versäumt?!

> Basic mag vielleicht besser lesbar sein aber könntest du
> mir bitte eine VB Download Adresse nennen? ;-)

Was meinst Du mit Download Adresse? Suchst Du ein
VB-Schachprogramm oder VB? Bei dem Schachprogramm
dürfte es schwierig werden, aber VB gab es kürzlich in
so einem Chip-Spezial für 20 DM zu kaufen.

Stefan

von Stefan Knappe - am 20.06.2001 14:20
Hallo

> Was meinst Du mit Download Adresse? Suchst Du ein
> VB-Schachprogramm oder VB? Bei dem Schachprogramm
> dürfte es schwierig werden, aber VB gab es kürzlich in
> so einem Chip-Spezial für 20 DM zu kaufen.

Natürlich war das ein Scherz. Ich meinte ein komplettes VB, kein Programm. VB hat eben nicht jeder. 20 DM welche Version?

Für diejenigen die schon "etwas" Erfahrung haben halte ich C oder C++ für interessanter. Diejenigen welche völlig neu Anfangen müssen sich wenigstens später nicht Umstellen.
Ich glaube das derjenige der schon mal was in Basic gemacht hat mehr Probleme mit der Syntax hat als derjenige welcher von Anfang an das "kryptische" C++ lernt. Weiterhin sind praktisch sämtliche Bsp. oder Diskusionen die man im Netz so findet in C(++) bzw. über C(++) Algorithmen.

Ingo

PS: Fals Thomas M. dies liest. Ich bin nicht der Meinung das das erste Programm gleich Schach spielen können muß. Eine ordentliche Boardrepräsentation sowie einen Zuggenerator halte ich schon für recht Anspruchsvoll für den Einstieg.

von Ingo Bauer - am 20.06.2001 14:45

Re: Schachprogrammierkurs

Ingo Bauer schrieb:

> Für diejenigen die schon "etwas" Erfahrung haben halte ich C
> oder C++ für interessanter. Diejenigen welche völlig neu
> Anfangen müssen sich wenigstens später nicht Umstellen.
> Ich glaube das derjenige der schon mal was in Basic gemacht hat
> mehr Probleme mit der Syntax hat als derjenige welcher von
> Anfang an das "kryptische" C++ lernt. Weiterhin sind praktisch
> sämtliche Bsp. oder Diskusionen die man im Netz so findet in
> C(++) bzw. über C(++) Algorithmen.
>
> Ingo
>
> PS: Fals Thomas M. dies liest. Ich bin nicht der Meinung das
> das erste Programm gleich Schach spielen können muß. Eine
> ordentliche Boardrepräsentation sowie einen Zuggenerator halte
> ich schon für recht Anspruchsvoll für den Einstieg.
___

Das letzte Posting von TM zu seinem Vorhaben ist schon recht lange her. Sein letzter Stand war C++, da sich scheinbar doch die Mehrheit dafür aussprach.
Mittlerweile gab es ja von Elvis die Mail zwischen ihm und TM, wo der Erscheinungstermin für die erste Folge erst für Heft 14 in Aussicht gestelt wurde.
Ich gehe man getrost davon aus, dass es nächstes Jahr wird ;-)
TM ist ja eigentlich ein Schneller (siehe Quark), aber ein didaktisches Lernprogramm, das bereits ein fertig konzipiertes Schachprogramm (und kein schlechtes!) voraussetzt, dauert eben. Da hat sich wohl TM auch verschätzt.

Dass das Programm gleich von Anfang an spielen soll, finde ich nach wie vor eine sehr originelle Idee und kostet bestimmt den wenigsten Aufwand. Die Brett- und Zugdarstellung ist ja Standardprogrammierung und für die ersten Partien reicht bereits Zuggenerator, Zugstapel und Materialbewertung. Auch Standard und von anderen Codes fast mit 1:1 zu übernehmen.

Mich wundert, dass ihr euch auf Bookware beschränkt, wo doch schon fast alles Online zu haben ist.
Ich habe mir schon damals ein paar Links über diverse Programmiersprachen und über Schachprogrammierung zusammengestellt.

Mal ausgraben, was sich da ev. zum Posten eignet. Vielleicht morgen schon!

Rainer

p.s. Thomas, wenn du das liest. Wir können es alle kaum erwarten. Also Durchstart. Drei Tage Klausur and a new star ist born :-)))

Villeicht können wir dir helfen ?

von Rainer Neuhäusler - am 20.06.2001 15:49

Re: Schachprogrammierkurs

Hallo Rainer

> Das letzte Posting von TM zu seinem Vorhaben ist schon recht
> lange her. Sein letzter Stand war C++, da sich scheinbar doch
> die Mehrheit dafür aussprach.

So war mir doch auch!

> Mittlerweile gab es ja von Elvis die Mail zwischen ihm und TM,
> wo der Erscheinungstermin für die erste Folge erst für Heft 14
> in Aussicht gestelt wurde.
> Ich gehe man getrost davon aus, dass es nächstes Jahr wird ;-)
> TM ist ja eigentlich ein Schneller (siehe Quark), aber ein
> didaktisches Lernprogramm, das bereits ein fertig konzipiertes
> Schachprogramm (und kein schlechtes!) voraussetzt, dauert eben.
> Da hat sich wohl TM auch verschätzt.

Na ja, die 14 wird hoffentlich geschafft.

> Dass das Programm gleich von Anfang an spielen soll, finde ich
> nach wie vor eine sehr originelle Idee und kostet bestimmt den
> wenigsten Aufwand. Die Brett- und Zugdarstellung ist ja
> Standardprogrammierung und für die ersten Partien reicht
> bereits Zuggenerator, Zugstapel und Materialbewertung. Auch
> Standard und von anderen Codes fast mit 1:1 zu übernehmen.

tja wenn man 2002 die WM gewinnen will muß man sich langsam auch ein "bischen" ranhalten. ;-)

> Mich wundert, dass ihr euch auf Bookware beschränkt, wo doch
> schon fast alles Online zu haben ist.

Heikles Thema. Ich habe nach langer Suche noch nichts im Netz gefunden was an ein halbwegs ordentliches Buch herranreicht. Das Netz ist allerdings das Ideale Nachschlagewerk. Wenn man nach etwas bestimmten sucht (implementation, Syntax, BSP) dann hilft einem das Netz weiter. Eine Seite ausgedruckt und weiter gehts.

> Ich habe mir schon damals ein paar Links über diverse
> Programmiersprachen und über Schachprogrammierung
> zusammengestellt.
> Mal ausgraben, was sich da ev. zum Posten eignet. Vielleicht
> morgen schon!

Immer her damit.

> p.s. Thomas, wenn du das liest. Wir können es alle kaum
> erwarten. Also Durchstart. Drei Tage Klausur and a new star ist
> born :-)))
>
> Villeicht können wir dir helfen ?

Wie soll ich ihm helfen? Mit einer Peitsche? :-)

Bye Ingo

von Ingo Bauer - am 20.06.2001 16:35

Schachprogrammierkurs in C++?

Ingo Bauer schrieb:
>
> Hallo
>
> Wer sich wie ich schon auf Thomas Mayers
> Schachprogrammiergrundkurs freut und sich ein wenig einarbeiten
> will, für den habe ich hier ein paar Empfehlungen.
>
> Literatur:
>
> 1. Titel: Die C++ Programmiersprache
> Autor: Bjarne Stroustrup
> Verlag: Addison Wesley
> Preis: 99 DM

Kann nicht Dein ernst sein. "Einarbeiten" kann man sich mit dieser C++-Bibel sicherlich nicht. Das dient evtl. dem versierten C++-Programmierer als gutes Nachschlagewerk, aber zum Einsteigen und Lernen von C++ ist es das ungeeignetste Buch, das ich kenne.
Aber es gibt m.W. von Markt&Technik ein recht ordentliches Buch, "Jetzt lerne ich C++" oder so, kostet DM 50. Aber auch das ist nur zur Einführung gedacht, sobald man konkrete Programme selbst entwickeln will, ist man sehr oft auf sich gestellt bzw. auf andere Leute angewiesen, weil praktisches Wissen sehr selten in den C++-Büchern zu finden ist. Aus eigener Erfahrung kann ich nur sagen, dass C++ keine Programmiersprache ist, die man sich sebst beibringen kann oder durch Lesen von Büchern lernt. Und in diversen Foren habe ich bislang auch keine nutzbare Hilfe erhalten. Entweder man beschäftigt sich nicht mit trivialen (?) Anfängerfragen/-problemen oder ist auf einem Stroustrup-Level, den ich als Anfänger (noch?) nicht verstehe. Um es auf den Punkt zu bringen: Zeiger, Templates, Dateihandling und Strings bereiten ordentlich Kopfzerbrechen. Da ich bislang keine brauchbare Hilfe beim Lernen von C++ finden konnte, steht jetzt bei mir Java an. :-) Dort gibt es keine Zeiger und Templates (AFAIK), und die String-Behandlung ist auch einfacher weil vorgesehen, im Gegensatz zu C++. Ein grundlegendes Problem bei C++ ist ja, dass man für alles, was man an Funktionalität haben möchte, ca. ein Dutzend Möglichkeiten hat, WIE man das programmiert. Ist wie bei Ärzten, man fragt sieben Leute und wenn man Glück hat, hat man nur sieben verschiedene Anworten bekommen. ;-) Ausserdem gibt es (oder gab?), wie ich gelesen habe, sogar einen Wettbewerb, wer den längsten/unverständlichsten aber funktionierenden Code in eine Zeile packen kann. Ist eigentlich alles ziemlich abschreckend...aber ein Freak sieht das wohl eher als Herausforderung, aber aus dem Alter bin ich raus. :-)

>
> Viel Spaß beim rumprobieren
> Ingo
Haralds Homepage


von Harald Faber - am 21.06.2001 10:11

Frage zur C++ - Performance

Für die Schachprogrammierung ist ja die Performance unheimlich wichtig. Aber ich habe nach Durchsicht etlicher C++ - Bücher über diese Frage nichts gefunden. Ich meine zum Beispiel, ob enum-Datentypen, die ja für die Übersicht gut sind, sehr langsam sind. Datenumwandlugen scheinen es jedenfalls zu sein.
Angeblich soll man keine Variablen, sondern Referenzen übergeben. Hat sich in der Geschwindigkeit aber bei mir nicht bemerkbar gemacht.
Kennt jemand Literatur dazu?

Gruß, Martin

von Martin Schubert - am 21.06.2001 11:25

Re: Schachprogrammierkurs in C++?

Hallo Harald

> Kann nicht Dein ernst sein. "Einarbeiten" kann man sich mit
> dieser C++-Bibel sicherlich nicht. Das dient evtl. dem
> versierten C++-Programmierer als gutes Nachschlagewerk, aber
> zum Einsteigen und Lernen von C++ ist es das ungeeignetste
> Buch, das ich kenne.

Habe im Thread weiter unten auch geschrieben das ich von C kam und etwas Vorkentnisse besaß. Ich Stimme dir zu es ist ein Nachschlagewerk.

> Aber es gibt m.W. von Markt&Technik ein recht ordentliches
> Buch, "Jetzt lerne ich C++" oder so, kostet DM 50. Aber auch
> das ist nur zur Einführung gedacht, sobald man konkrete
> Programme selbst entwickeln will, ist man sehr oft auf sich
> gestellt bzw. auf andere Leute angewiesen, weil praktisches
> Wissen sehr selten in den C++-Büchern zu finden ist.

Ich mache noch ein bischen Pascal/Delphi da ist das auch nicht anders. Allerdings fällt der umstieg von Pascal nach C/C++ relativ leicht.

< Aus
> eigener Erfahrung kann ich nur sagen, dass C++ keine
> Programmiersprache ist, die man sich sebst beibringen kann oder
> durch Lesen von Büchern lernt.

Ich habe mir sowohl Pascal als auch C (Grundlagen) selbst beigebracht. Jetzt versuche ich mich ein bischen an C++. Fürs Schachprogrammieren nicht unbedingt notwendig aber C ist eine Untermenge con C++ insofern sicher nicht falsch.

>Und in diversen Foren habe ich
> bislang auch keine nutzbare Hilfe erhalten.

Das habe ich weiter oben auch geschrieben. Eine "vernünftige" Hilfe habe ich im Netz auch noch nicht gefunden. Das Internet ist in dieser Hinsicht ein reines Nachschlagewerk.

>Um es auf den
> Punkt zu bringen: Zeiger, Templates, Dateihandling und Strings
> bereiten ordentlich Kopfzerbrechen. Da ich bislang keine
> brauchbare Hilfe beim Lernen von C++ finden konnte, steht jetzt
> bei mir Java an. :-) Dort gibt es keine Zeiger und Templates
> (AFAIK), und die String-Behandlung ist auch einfacher weil
> vorgesehen, im Gegensatz zu C++.

Um Zeiger wirst du für ein halbwegs brauchbares Schachprogramm auf Dauer nicht rumkommen. Zugegeben sind Zeiger für einen Anfänger die größte (und eine verdammt harte) Nuß, aber man kann auch tolle Sachen damit machen. :-).
Bei Templates und Dateihandling sehe ich weniger Probleme. Stringbehandlung ist in reinem Ansi C++ eher rudimentär vorhanden. Allerdings gibt es bei Borland bzw Microsoft Doch schon einige "Hilfen". Für ein Schachprogramm ist auch das nicht so wichtig.
Es kommt eben darauf an was man Programmieren will. Ein Schachprogramm muß eigentlich hauptsächlich schnell sein. Da bietet sich nunmal C/C++ oder Assembler an (Mit Assembler möchte ich mich aber auch nicht rumschlagen). Wer ein Datenbanksystem in C Programmieren (womöglich ohne Bibliotheken) und damit das Rad nochmal erfinden will ist allerding selber schuld. :-)

Ein grundlegendes Problem bei
> C++ ist ja, dass man für alles, was man an Funktionalität haben
> möchte, ca. ein Dutzend Möglichkeiten hat, WIE man das
> programmiert.

Also das Problem hat man in jeder höheren Programmiersprache!

Bye Ingo

von Ingo Bauer - am 21.06.2001 11:46

Re: Frage zur C++ - Performance

Martin Schubert schrieb:
>
> Für die Schachprogrammierung ist ja die Performance
> unheimlich wichtig. Aber ich habe nach Durchsicht etlicher C++
> - Bücher über diese Frage nichts gefunden. Ich meine zum
> Beispiel, ob enum-Datentypen, die ja für die Übersicht gut
> sind, sehr langsam sind. Datenumwandlugen scheinen es
> jedenfalls zu sein.
> Angeblich soll man keine Variablen, sondern Referenzen
> übergeben. Hat sich in der Geschwindigkeit aber bei mir nicht
> bemerkbar gemacht.
> Kennt jemand Literatur dazu?
>
> Gruß, Martin

Leider kann ich dir auch nicht helfen. Weder Literatur noch eigene Messungen. Nur eine Fragen. Wo wandelst du den Daten bei einem Schachprogramm um?

Referenzen oder Variablen. Die Übergabe als Referenz (oder Pointer) soll auch nicht aus Performance-Gründen geschehen sonder aus Gründen der Übersichtlichkeit/Einfachheit. Das fällt in der Programmierung sicher nicht auf solange man ein, zwei Variablen übergeben muß. Aber schon bei einem ganzen Array das jedesmal hin und hergeschauffelt wird ist eine Referenz deutlich einfacher und wahrscheinlich auch schneller. (Wobei ein Feld (Startadresse) vielleicht besser als Pointer übergeben wird. Aber das ist Ansichtssache. Ich nehme sogar an das der Compiler eine Referenz sowieso umwandelt in einen Pointer. Sicher weiß ich das aber nicht. Soweit stecke ich dann doch nicht in der Materie. Deswegen brauche ich auch einen Schachprogrammierkurs :-) _ )

von Ingo Bauer - am 21.06.2001 12:01

Re: Frage zur C++ - Performance

Ingo Bauer schrieb:
>
> Martin Schubert schrieb:
> >
> > Für die Schachprogrammierung ist ja die Performance
> > unheimlich wichtig. Aber ich habe nach Durchsicht etlicher C++
> > - Bücher über diese Frage nichts gefunden. Ich meine zum
> > Beispiel, ob enum-Datentypen, die ja für die Übersicht gut
> > sind, sehr langsam sind. Datenumwandlugen scheinen es
> > jedenfalls zu sein.
> > Angeblich soll man keine Variablen, sondern Referenzen
> > übergeben. Hat sich in der Geschwindigkeit aber bei mir nicht
> > bemerkbar gemacht.
> > Kennt jemand Literatur dazu?
> >
> > Gruß, Martin
>
> Leider kann ich dir auch nicht helfen. Weder Literatur noch
> eigene Messungen. Nur eine Fragen. Wo wandelst du den Daten bei
> einem Schachprogramm um?

Ich habe aus Übersichtlichkeit halt eine enum-Variable figur {koenig,dame,...}. Und das ist wohl nicht so wahnsinnig clever, da man manchmal um Übergaben nicht herumkommt.
>
> Referenzen oder Variablen. Die Übergabe als Referenz (oder
> Pointer) soll auch nicht aus Performance-Gründen geschehen
> sonder aus Gründen der Übersichtlichkeit/Einfachheit. Das fällt
> in der Programmierung sicher nicht auf solange man ein, zwei
> Variablen übergeben muß. Aber schon bei einem ganzen Array das
> jedesmal hin und hergeschauffelt wird ist eine Referenz
> deutlich einfacher und wahrscheinlich auch schneller. (Wobei
> ein Feld (Startadresse) vielleicht besser als Pointer übergeben
> wird. Aber das ist Ansichtssache. Ich nehme sogar an das der
> Compiler eine Referenz sowieso umwandelt in einen Pointer.
> Sicher weiß ich das aber nicht. Soweit stecke ich dann doch
> nicht in der Materie. Deswegen brauche ich auch einen
> Schachprogrammierkurs :-) _ )

Gruß, Martin

von Martin Schubert - am 21.06.2001 12:08

Re: Schachprogrammierkurs in C++?

Ingo Bauer schrieb:
>
> Hallo Harald
>
> < Aus
> > eigener Erfahrung kann ich nur sagen, dass C++ keine
> > Programmiersprache ist, die man sich sebst beibringen kann oder
> > durch Lesen von Büchern lernt.
>
> Ich habe mir sowohl Pascal als auch C (Grundlagen) selbst
> beigebracht. Jetzt versuche ich mich ein bischen an C++. Fürs
> Schachprogrammieren nicht unbedingt notwendig aber C ist eine
> Untermenge con C++ insofern sicher nicht falsch.

Aber es gibt eben einen wichtigen Unterschied... :-)
> >Und in diversen Foren habe ich
> > bislang auch keine nutzbare Hilfe erhalten.
>
> Das habe ich weiter oben auch geschrieben. Eine "vernünftige"
> Hilfe habe ich im Netz auch noch nicht gefunden. Das Internet
> ist in dieser Hinsicht ein reines Nachschlagewerk.
>
Eben, und da ich sonst auch niemanden kenne, der sich mit C++ gut auskennt und mir VERSTÄNDLICH helfen kann, ist der Frustraktionsfaktor bei mir recht hoch... :-(. Da kommt man fast auf die Idee, dass alle C++-Programmierer als C++-Programmierer auf die Welt gekommen sind und sich in Ärsche verwandelt haben (weil sie nicht helfen wollen) oder ich einfach zu blöd bin, mir C++ selbst beizubringen. Ich tendiere zu Möglichkeit 1. ;-)
>
> Um Zeiger wirst du für ein halbwegs brauchbares Schachprogramm
> auf Dauer nicht rumkommen.
Aber nur bei C++. Da gibt es wohl nichts, was man ohne Zeiger machen soll/muss/kann. Alle anderen Programmiersprachen kommen ohne Zeiger aus, warum wohl?
>
>Zugegeben sind Zeiger für einen
> Anfänger die größte (und eine verdammt harte) Nuß, aber man
> kann auch tolle Sachen damit machen. :-).

Ja, tolle Sachen...und alles und alles selbst, das entspricht nicht meinem Verständnis von Programmieren. Wenn ich ein DeleteObject() aufrufe, möchte ich nicht auch noch den Destruktor erstellen, auch wenn das manchmal sinnvoll wäre. Das soll die Programmiersprache gefälligst selbst erledigen. Aber hier haben dann wieder alle C++-Programmierer ein gedankliches Problem, wenn das so wäre. Sie könnten dann nicht alles selbst machen, hätten nicht mehr alles unter Kontrolle und fühlen sich eingeschränkt. Darum sind für mich solche C++-Programmierer, und davon haben wir selbst ein halbes Dutzend in der Firma, einfach nur abgedrehte Freaks.Ich will keine "tollen Sachen" machen, ich setze auf Funktionalität und Sauberkeit des Codes. Da kommt mir zugegebenermassen C++ nicht gerade entgegen. Ich möchte den Hammer benutzen und nicht noch erst nach meinen Wünschen zusammenbauen, aber das ist C++.

> Bei Templates und Dateihandling sehe ich weniger Probleme.

In welchen Dimensionen schwebst Du denn inzwischen??? Wenn selbst C++-Freaks sagen, es gibt nichts schwereres als Templates, dann musst Du inzwischen oberhalb solcher Sphären schweben...Eigentlich mache ich mir auch eher weniger Gedanken um das warum, warum man Zeiger hat oder wofür Templates gut sind, der grosse Haken ist das "Wie benutzt man das und auch noch möglichst sauber?"
> Stringbehandlung ist in reinem Ansi C++ eher rudimentär
> vorhanden. Allerdings gibt es bei Borland bzw Microsoft Doch
> schon einige "Hilfen". Für ein Schachprogramm ist auch das
> nicht so wichtig.
Ich wollte mir eigentlich nicht C++ aneignen, um mich auf die Erstellung eines Schachprogramms zu beschränken. Und Strings und Stringbehandlung ist in C++ unter aller Kanone, das ist standard und sobald man mit einer GUI anfängt, kommt man nicht drum herum.
> Es kommt eben darauf an was man Programmieren will. Ein
> Schachprogramm muß eigentlich hauptsächlich schnell sein.
Das ist m.E. der zweite Schritt.Zunächst einmal möchte ich ein lauffähiges Schachprogramm erstellen. An die performance würde ich erst danach gehen.
>
> Ein grundlegendes Problem bei
> > C++ ist ja, dass man für alles, was man an Funktionalität haben
> > möchte, ca. ein Dutzend Möglichkeiten hat, WIE man das
> > programmiert.
>
> Also das Problem hat man in jeder höheren Programmiersprache!
Aber in keiner ist es so schwierig, sich das passende herauszusuchen.
>
> Bye Ingo

von harald faber - am 21.06.2001 13:30

Re: Schachprogrammierkurs in C++?


> Eben, und da ich sonst auch niemanden kenne, der sich mit
> C++ gut auskennt und mir VERSTÄNDLICH helfen kann, ist der
> Frustraktionsfaktor bei mir recht hoch... :-(. Da kommt man
> fast auf die Idee, dass alle C++-Programmierer als
> C++-Programmierer auf die Welt gekommen sind und sich in Ärsche
> verwandelt haben (weil sie nicht helfen wollen) oder ich
> einfach zu blöd bin, mir C++ selbst beizubringen. Ich tendiere
> zu Möglichkeit 1. ;-)

Das brauche ich wohl nicht zu kommentieren!

>
> > Um Zeiger wirst du für ein halbwegs brauchbares Schachprogramm
> > auf Dauer nicht rumkommen.
> Aber nur bei C++. Da gibt es wohl nichts, was man ohne
> Zeiger machen soll/muss/kann. Alle anderen Programmiersprachen
> kommen ohne Zeiger aus, warum wohl?

Alle anderen??
Pascal hat Zeiger, VB kann Zeiger! Warum wohl?
(Java weiß ich nicht bin aber sicher das man das auch kann.)
VB ist interessant. Zeiger sind eigentlich keine Eigenschaft von Basic. Trotzdem sah sich Microsoft veranlaßt diese aufzunehmen :-)

> Ja, tolle Sachen...und alles und alles selbst, das entspricht
> nicht meinem Verständnis von Programmieren. Wenn ich ein
> DeleteObject() aufrufe, möchte ich nicht auch noch den
> Destruktor erstellen, auch wenn das manchmal sinnvoll wäre. Das
> soll die Programmiersprache gefälligst selbst erledigen.

Wer erledigt den alles selbst? Wofür gibts den Bibliotheken?

Aber
> hier haben dann wieder alle C++-Programmierer ein gedankliches
> Problem, wenn das so wäre. Sie könnten dann nicht alles selbst
> machen, hätten nicht mehr alles unter Kontrolle und fühlen sich
> eingeschränkt. Darum sind für mich solche C++-Programmierer,
> und davon haben wir selbst ein halbes Dutzend in der Firma,
> einfach nur abgedrehte Freaks. Ich will keine "tollen
> Sachen" machen, ich setze auf Funktionalität und Sauberkeit des
> Codes. Da kommt mir zugegebenermassen C++ nicht gerade
> entgegen.

Wie bitte? Alles eine Frage der Disziplin. Den "saubersten" Code kann man mit C/C++ produzieren. Zugegebenermaßen auch den schlimsten aber daran ist nicht die Sprache sondern der Programmierer schuld.

> Ich möchte den Hammer benutzen und nicht noch erst
> nach meinen Wünschen zusammenbauen, aber das ist C++.
>
> > Bei Templates und Dateihandling sehe ich weniger Probleme.
>
> In welchen Dimensionen schwebst Du denn inzwischen??? Wenn
> selbst C++-Freaks sagen, es gibt nichts schwereres als
> Templates, dann musst Du inzwischen oberhalb solcher Sphären
> schweben...

Wird es spätestens jetzt nicht ein wenig persönlich?
Ich will dir gerne zugestehen das das verstehen eines fremd geschriebenen Templates schwierig sein kann, die eigenen (und davon sprechen wir) machen eigentlich weniger Probleme.

> > Stringbehandlung ist in reinem Ansi C++ eher rudimentär
> > vorhanden. Allerdings gibt es bei Borland bzw Microsoft Doch
> > schon einige "Hilfen". Für ein Schachprogramm ist auch das
> > nicht so wichtig.
> Ich wollte mir eigentlich nicht C++ aneignen, um mich auf
> die Erstellung eines Schachprogramms zu beschränken. Und
> Strings und Stringbehandlung ist in C++ unter aller Kanone, das
> ist standard und sobald man mit einer GUI anfängt, kommt man
> nicht drum herum.

Nichts anderes habe ich geschrieben. Siehe nächster Absatz von mir. den Absatz das man natürlich keine Datenbank in C/C++ macht hast du gelöscht.

> > Es kommt eben darauf an was man Programmieren will. Ein
> > Schachprogramm muß eigentlich hauptsächlich schnell sein.
> Das ist m.E. der zweite Schritt.Zunächst einmal möchte ich
> ein lauffähiges Schachprogramm erstellen. An die performance
> würde ich erst danach gehen.

Nur wirst du bei aller Optimierung niemals die Performance eines C/C++ Programmes erreichen. (ausser Assembler)

Du scheinst mir eine kleine Antipathie gegen C/C++ entwickelt zu haben (aus welchen Gründen auch immer). Ich kann nur sagen das es Weltweit wahrscheinlich die am meisten genutzte Sprache ist und das nicht ohne Grund!

Bye und Tschüß
Ingo

von Ingo Bauer - am 21.06.2001 13:57

OT: Schachprogrammierkurs in C++?

Ingo Bauer schrieb:
>
>
> >
> > > Um Zeiger wirst du für ein halbwegs brauchbares
> Schachprogramm
> > > auf Dauer nicht rumkommen.
> > Aber nur bei C++. Da gibt es wohl nichts, was man ohne
> > Zeiger machen soll/muss/kann. Alle anderen Programmiersprachen
> > kommen ohne Zeiger aus, warum wohl?
>
> Alle anderen??
> Pascal hat Zeiger, VB kann Zeiger! Warum wohl?
Die werden aber intern von der Programmiersprache verwaltet, oder? Ich kann mich nicht erinnern, jemals direkten Speicherzugriff gesehen zu haben.
>
> (Java weiß ich nicht bin aber sicher das man das auch kann.)
Wenn man Java vergewaltigt, bestimmt. Vorgesehen sind sie nicht und kommen auch von Hause aus nicht mit.
> VB ist interessant. Zeiger sind eigentlich keine Eigenschaft
> von Basic. Trotzdem sah sich Microsoft veranlaßt diese
> aufzunehmen :-)
AFAIK gibt es in VB keine Zeiger, wenn, dann auch intern verwaltet.
>
>
> Wie bitte? Alles eine Frage der Disziplin. Den "saubersten"
> Code kann man mit C/C++ produzieren.
Das ist jetzt nicht persönlich gemeint, aber: HAHAHAHAHA! :-))))Man KANN, das ist aber realitätsfern. :-)

> Zugegebenermaßen auch den
> schlimsten aber daran ist nicht die Sprache sondern der
> Programmierer schuld.
Sicher, aber ich kenne keinen, der sauber in C++ programmiert. Ausserdem schrieb ich ja, dass C++ sauberem Programmieren nicht ENTGEGENKOMMT, nicht, dass man mit C++ nicht sauber programmieren kann. Die Fehlerwahrscheinlichkeit ist recht hoch.
>
> > Ich möchte den Hammer benutzen und nicht noch erst
> > nach meinen Wünschen zusammenbauen, aber das ist C++.
> >
> > > Bei Templates und Dateihandling sehe ich weniger Probleme.
> >
> > In welchen Dimensionen schwebst Du denn inzwischen??? Wenn
> > selbst C++-Freaks sagen, es gibt nichts schwereres als
> > Templates, dann musst Du inzwischen oberhalb solcher Sphären
> > schweben...
>
> Wird es spätestens jetzt nicht ein wenig persönlich?
Ich wunderte mich lediglich über diese Ansicht, die auch keiner, den ich kenne, teilt. :-)
> Ich will dir gerne zugestehen das das verstehen eines fremd
> geschriebenen Templates schwierig sein kann, die eigenen (und
> davon sprechen wir) machen eigentlich weniger Probleme.
Keine Ahnung, damit habe ich mich nicht beschäftigt, aber die Aussage mehrerer sehr fähiger Programmierer hier scheint mir glaubwürdiger.
>
> > > Es kommt eben darauf an was man Programmieren will. Ein
> > > Schachprogramm muß eigentlich hauptsächlich schnell sein.
> > Das ist m.E. der zweite Schritt.Zunächst einmal möchte ich
> > ein lauffähiges Schachprogramm erstellen. An die performance
> > würde ich erst danach gehen.
>
> Nur wirst du bei aller Optimierung niemals die Performance
> eines C/C++ Programmes erreichen. (ausser Assembler)
>
Alles hat seinen Preis, dafür ist Java plattformunabhängig und der Preis dafür die Geschwindigkeit.
> Du scheinst mir eine kleine Antipathie gegen C/C++ entwickelt
> zu haben (aus welchen Gründen auch immer).

Ganz einfach: Alleine lerne ich es offenbar nicht und die Hilfe ist nicht sehr ergiebig, sowohl in schriftlicher Form (wie viele Bücher soll man sich denn kaufen? welche?) als auch bei den anderen Programmierern. Ich hatte z.B. mal ein Problem. Drei Leute gaben mir drei verschieden Antworten. Die Antworten waren so gut, dass ich keine davon selbst umsetzen konnte. Zwei davon wurden mir dann vorgeführt und funktionierten nicht, die dritte sollte etwas mit Templates sein. :-) Nicht unbedingt etwas, mit dem man anfangen sollte. Die Lösung (oder vielleicht besser: eine Lösung, die jetzt funktioniert) bestand dann in irgendwelchen Tricks mit Doppelpointern, die ich immer noch nicht so ganz verstanden habe. Dadurch lerne ich es auch nicht und bin jetzt erst mal froh, C++ an die Seite legen zu können mit der Aussicht auf Java.

> Ich kann nur sagen
> das es Weltweit wahrscheinlich die am meisten genutzte Sprache
> ist und das nicht ohne Grund!
Die am meisten verbreitete Programmiersprache weltweit ist VisualBasic, und das nicht ohne Grund. ;-)
>
> Bye und Tschüß
> Ingo

von harald faber - am 21.06.2001 15:18

Re: Schachprogrammierkurs in C++?

Ingo Bauer schrieb:
>
[...]

> Pascal hat Zeiger, VB kann Zeiger! Warum wohl?
> (Java weiß ich nicht bin aber sicher das man das auch kann.)
> VB ist interessant. Zeiger sind eigentlich keine Eigenschaft
> von Basic. Trotzdem sah sich Microsoft veranlaßt diese
> aufzunehmen :-)
>

In VB 6 gibt es zumindest noch keine Zeiger. Es gibt lediglich die Übergabe per Referenz, das wird dann aber - wie auch bei C - aber vom Compiler intern geregelt, der Benutzer kommt davon nichts mit.

Ach, und noch was zu Assembler: Sobald man damit begonnen hat, kommt man kaum mehr davon los...
z.B. ärgert man sich dann darüber, dass der C-Compiler den shift-Befehl für negative Zahlen in shr statt in sar umwandelt; mit Assembler wäre dies alles aber kein Problem. Mit der Zeit bekommt man sogar den BitBoard-Blick, d.h. bei einer hexadezimalen 64-Bit-Zahl sieht man, auf welchen Felder die Figuren stehen...

Grüsse

Rafael B. Andrist

von Rafael B. Andrist - am 21.06.2001 15:27

Re: Frage zur C++ - Performance

Martin Schubert schrieb:
>
> Für die Schachprogrammierung ist ja die Performance
> unheimlich wichtig. Aber ich habe nach Durchsicht etlicher C++
> - Bücher über diese Frage nichts gefunden. Ich meine zum
> Beispiel, ob enum-Datentypen, die ja für die Übersicht gut
> sind, sehr langsam sind. Datenumwandlugen scheinen es
> jedenfalls zu sein.
> Angeblich soll man keine Variablen, sondern Referenzen
> übergeben. Hat sich in der Geschwindigkeit aber bei mir nicht
> bemerkbar gemacht.
> Kennt jemand Literatur dazu?
>
> Gruß, Martin

Die Übergabe von Referenzen bringt den Vorteil, dass keine Kopie des Objektes erstellt wird, was bei grösseren Objekten, z.B. der Information über die Schachposition, sinnvoll ist. Bei Variablen, die weniger als 4 Byte beanspruchen, ist es wohl gleichschnell, aber minim speicherinensiver (4 Byte f. Adresse). Falls dann also nicht unbedingt nötig, nicht per Referenz übergeben.

Der enum-Datentyp verwendet 2 oder mehr Byte. Falls nicht eine grössere Aufzählung notwendig ist, solltest du eine numerische Variable von Bytegrösse verwenden ( __int8 bei MS-VC). Wenn es sich bei der Aufzählung von Schachfigurentypen handelt, sind ja Zahlen (+/- f. w/s) auch aussagekräftig (und können zugleich direkt für die Zugsortierung verwendet werden, solange man auf SEE verzichtet).

Typumwandlungen von Zahl nach Zahl sollten keine Geschwindigkeitseinbusse mit sich bringen. Falls der Compiler es nicht richtig machen will, halt schnell mit ein paar Zeilen Assembler korrigieren

Rafael B. Andrist

von Rafael B. Andrist - am 21.06.2001 15:47
Ingo Bauer schrieb:
>
[...]

> Für diejenigen die schon "etwas" Erfahrung haben halte ich C
> oder C++ für interessanter. Diejenigen welche völlig neu
> Anfangen müssen sich wenigstens später nicht Umstellen.
> Ich glaube das derjenige der schon mal was in Basic gemacht hat
> mehr Probleme mit der Syntax hat als derjenige welcher von
> Anfang an das "kryptische" C++ lernt. Weiterhin sind praktisch
> sämtliche Bsp. oder Diskusionen die man im Netz so findet in
> C(++) bzw. über C(++) Algorithmen.
>
> Ingo
>
[...]

Ich habe mit Basic (GWBasic) begonnen und mit VB weitergefahren. Der Umstieg auf C fiel mir allerdings leicht. Die Unterschiede in der Syntax sind sehr gering. Und auf die Objektorientiertheit von C++ wird man mit VB gut vorbereitet. Aber im schachlichen Bereich ist ja vor allem C und nicht C++ interessant.

Rafael B. Andrist

von Rafael B. Andrist - am 21.06.2001 15:56

Re: Schachprogrammierkurs in C++?

Hallo

> In VB 6 gibt es zumindest noch keine Zeiger.

Hmm. Habe kein VB meinte aber (und bin ziemlich sicher) das da sowas war. Egal....


> Ach, und noch was zu Assembler: Sobald man damit begonnen hat,
> kommt man kaum mehr davon los...

Habe vor Jahren mal ein bischen 6502 gemacht. (C64) das war ok aber ich will eigentlich nicht mehr damit Anfangen.

> z.B. ärgert man sich dann darüber, dass der C-Compiler den
> shift-Befehl für negative Zahlen in shr statt in sar umwandelt;
> mit Assembler wäre dies alles aber kein Problem. Mit der Zeit
> bekommt man sogar den BitBoard-Blick, d.h. bei einer
> hexadezimalen 64-Bit-Zahl sieht man, auf welchen Felder die
> Figuren stehen...

Tja so weit wäre ich auch gerne. Heul, Neid. :-)

Ingo

von Ingo Bauer - am 21.06.2001 16:44

Re: Schachprogrammierkurs in C++?

> z.B. ärgert man sich dann darüber, dass der C-Compiler den shift-Befehl für negative Zahlen in shr statt in sar umwandelt;

Wozu brauchst du shift nach rechts für negative Zahlen? Laut ISO-C Standard ist das "implementation defined". Shifts sind meiner Ansicht nach hauptsächlich für vorzeichenlose Zahlen interessant (oder man weiß genau, dass die Zahl keinen negativen Wert hat). Eine Multiplikation/Division durch einen Shift-Befehl zu ersetzen ist oft unnötig und meist auch nicht effizeienter.

Abgesehen davon, alle x86 Compiler die ich kenne, übersetzen shift nach rechts für vorzeichenbehaftete Typen in sar.

Zur Parameterübergabe per Referenz - hier stimme ich dir zu - mit kleinen Einschränkungen. Für einfache Datentypen ist Referenz in der Regel langsamer (benötigt eine Indirektion mehr). Ausserdem bietet es dem Optimizer weniger Möglichkeiten. Aber viel wichtiger - es is weniger selbstdokumentierend. Wenn ich Parameter per Wert übergebe, kann ich mir sicher sein, dass die Werte nicht geändert werden, ohne bei der entsprechenden Funktion nachzuschauen.

Zu dem Buch von Bjarne Stroutsoup - auch ich finde, es ist recht schwere Kost, und ischer nicht für Anfänger geeignet. Es werden auch viele allgemeine Dinge voraussgesetzt (typische Datenstrukturen wie Listen, Bäume, Stapel etc.). Das erste Beispiel in meiner Ausgabe (shon recht alt) ist ein "expression parser". Wer sich noch nie mit sowas beschäftigt hat, wird Probleme haben, es zu verstehen.

Die news-Gruppen (z.B. comp.lang.c++) haben ausführliche
FAQs mit Literaturempfehlungen.

Grüße
Dieter

"Premature optimization is the devil of all programming", Donald E. Knuth. (aus dem Gedächtnis zitiert)

von Dieter Bürßner - am 21.06.2001 17:34

Re: Schachprogrammierkurs in C++?

Dieter Bürßner schrieb:
>
> > z.B. ärgert man sich dann darüber, dass der C-Compiler
> den shift-Befehl für negative Zahlen in shr statt in sar
> umwandelt;
>
> Wozu brauchst du shift nach rechts für negative Zahlen? Laut
> ISO-C Standard ist das "implementation defined". Shifts sind
> meiner Ansicht nach hauptsächlich für vorzeichenlose Zahlen
> interessant (oder man weiß genau, dass die Zahl keinen
> negativen Wert hat). Eine Multiplikation/Division durch einen
> Shift-Befehl zu ersetzen ist oft unnötig und meist auch nicht
> effizeienter.
>
> Abgesehen davon, alle x86 Compiler die ich kenne, übersetzen
> shift nach rechts für vorzeichenbehaftete Typen in sar.

Der Grund war, dass ich um eine variable Zahl shiften bzw. dividieren wollte. Im Nachhinein war ich dann erstaunt, wieviele grosse positive Zahlen am Ende herauskamen... und habe den Fehler korrigiert. In dem Fall hier habe ich aus Gründen der Übersichtlichkeit dann halt eine Division vorgenommen. Der Compiler kann diese jetzt natürlich nicht mehr entsprechend optimieren, was mich ein paar Taktzyklen kostet. (Ich weiss, es wäre z.B. viel besser, am Suchalgorithmus zu arbeiten oder den Verästelstungsfaktor des Baumes zu reduzieren etc.; aber ich bi halt so :p)

Gruss

Rafael B. Andrist

von Rafael B. Andrist - am 21.06.2001 18:02

Re: Schachprogrammierkurs in C++?

Hallo

> Zu dem Buch von Bjarne Stroutsoup - auch ich finde, es ist
> recht schwere Kost, und ischer nicht für Anfänger geeignet. Es
> werden auch viele allgemeine Dinge voraussgesetzt (typische
> Datenstrukturen wie Listen, Bäume, Stapel etc.).

Habe mich auch schon dahingehend korrigiert das ich es eigentlich als Nachschlagewerk benutze.

Das erste
> Beispiel in meiner Ausgabe (shon recht alt) ist ein "expression
> parser". Wer sich noch nie mit sowas beschäftigt hat, wird
> Probleme haben, es zu verstehen.

Hätte ich auch. Meine Ausgabe (4 aktualisierte und erweiterte) Hat als erstes Bsp. folgendes Progi.
(Eine Rundreise durch die Standardbibliothek)

#include
int main()
{
std::cout

von Ingo Bauer - am 21.06.2001 18:24

Re: Schachprogrammierkurs in C++?

Hallo,

Wenn schon ein Schachprogrammierer in Rufweite ist :-).

Was würdest du für eine Programmiersprache für das Vorhaben von ChessBits bzw. T. Mayer vorschlagen ? Soweit du die Sache überhaupt verfolgt hast.

Leider weiß man ja nicht, wie sich die aktive Leserschaft zusammensetzt. Interesse, Vorkenntnisse etc.

Anfänger scheiden gleich aus, so wie das Thema jetzt schon behandelt wird. Auch PC-Kundige ohne Programmierkenntnisse dürften es schwer haben. Ich würde mal sagen die größte Gruppe stellen die Schachcomputerfans mit Anfängerkenntnissen bzw. leicht fortgeschrittenen Programmierkenntnissen dar.

Die schweigen natürlich jetzt und deshalb besteht m.E. leicht die Gefahr, dass die "Halb-Profis" das Geschehen an sich reissen ;-)


Gruß Rainer

von Rainer Neuhäusler - am 21.06.2001 19:50

Re: Schachprogrammierkurs in C++?

Hallo Rainer

> Ich würde mal sagen die größte Gruppe
> stellen die Schachcomputerfans mit Anfängerkenntnissen bzw.
> leicht fortgeschrittenen Programmierkenntnissen dar.
>
> Die schweigen natürlich jetzt und deshalb besteht m.E. leicht
> die Gefahr, dass die "Halb-Profis" das Geschehen an sich
> reissen ;-)

Als genau solchen würde ich mich einschätzen (Als Schachcomputerfan mit leicht fortgeschrittenen Programmierkenntnissen) . Wer hat diesen Thread begonnen? Ich hoffe zumindest das du nicht recht hast ;-)

Ingo

von Ingo Bauer - am 21.06.2001 21:13

Re: C++ und Visual Basic. Einführungen Online

Ich klink mich mal hier ein mit der Online-Literatur, die ich gestern versprochen habe.

Insgesamt eher was für jene, die ernsthaft in Basic oder C einsteigen wollen. Für Anfänger dürfte die Kost allerdings schon zu schwer sein und Hobby-Profis brauchen eh keine Lehbrücher, sondern stellen gleich Spezialrechechen an.

C++ Eine Einführung

Visusal C++ in 21 Tagen

Visual C++ Lernprogramm

Praktikumsfacharbeit über Programmiersprachen mit Basic-Code für ein Spiel

Einführung in Visual Basic in vorzüglichem Layout mit Tabellen und Beispielen

Links anklicken !

Gruß Rainer

von Rainer Neuhäusler - am 21.06.2001 21:35

Re: Schachprogrammierkurs in C++?

Ingo Bauer schrieb:
>
> Hallo Rainer
>
> > Ich würde mal sagen die größte Gruppe
> > stellen die Schachcomputerfans mit Anfängerkenntnissen bzw.
> > leicht fortgeschrittenen Programmierkenntnissen dar.
> >
> > Die schweigen natürlich jetzt und deshalb besteht m.E. leicht
> > die Gefahr, dass die "Halb-Profis" das Geschehen an sich
> > reissen ;-)
>
> Als genau solchen würde ich mich einschätzen (Als
> Schachcomputerfan mit leicht fortgeschrittenen
> Programmierkenntnissen) . Wer hat diesen Thread begonnen? Ich
> hoffe zumindest das du nicht recht hast ;-)
>
> Ingo
______

No bravo, dann sind wir schon zwei :-) Ich dachte, du bist schon Hobby-Profi. Hast du schon eine Programm fertig durchgezogen ?
Zwei Seelen wohnen in meiner Brust. "C++" sagt der Ehrgeiz, aber Visual Basic tät's vielleicht auch schon und mit VB ist man "schneller drin" und könnte z.B. schon gleich einmal ein paar kleine Statistik-Progrämmchen programmieren.

Rainer

von Rainer Neuhäusler - am 21.06.2001 21:45

Re: Schachprogrammierkurs in C++?

Hi

> No bravo, dann sind wir schon zwei :-) Ich dachte, du bist
> schon Hobby-Profi. Hast du schon eine Programm fertig
> durchgezogen ?

Ein Schachprogramm? Nein. Ich scheue die Bewertungsfunktion. Könnte mich glaube ich nicht entscheiden was ich wie wichten soll da in einem Fall ja so besser und im andereren eben schlecht. Bsp. Ich habe zwei Spiele in denen eine Beta einmal einen gegnerischen C Freibauer unterschätzt hat und im nächsten Spiel einen eigenen überschätzt. An so etwas kann ich dann verzweifeln. Mal sehen was Thomas hier bietet.

> Zwei Seelen wohnen in meiner Brust. "C++" sagt der Ehrgeiz,
> aber Visual Basic tät's vielleicht auch schon und mit VB ist
> man "schneller drin" und könnte z.B. schon gleich einmal ein
> paar kleine Statistik-Progrämmchen programmieren.

Das man da schneller drin ist wage ich zu bezweifeln. Ansonsten als Devise "Hohe Ziele setzen". :-)

Bye Ingo

von Ingo Bauer - am 21.06.2001 22:32

Re: C++ und Visual Basic. Einführungen Online

Hallo
> C++ Eine
> Einführung

Das ist ein wirklich nützlicher Link. Kann einem evtl. ein Buch ersparen. Mir gefällt der Kurs!

>
> href="[www.mut.de] C++ in 21 Tagen
>
> Visual C++
> Lernprogramm
>
> href="[privat.schlund.de]; Praktikumsfacharbeit über Programmiersprachen mit Basic-Code für ein Spiel
>
> href="[www.informatik.uni-muenchen.de]; Einführung in Visual Basic in vorzüglichem Layout mit Tabellen und Beispielen
>
> Links anklicken !
>
> Gruß Rainer

Danke dafür
Ingo

von Ingo Bauer - am 22.06.2001 08:01

Re: Schachprogrammierkurs in C++?

>Was würdest du für eine Programmiersprache für das Vorhaben von ChessBits bzw. T. Mayer vorschlagen ? Soweit du die Sache überhaupt verfolgt hast.

Ich glaube, ich bin nicht der richtige das zu beantworten. Aber wenn du schon mal fragst - ich würde nicht C++ vorschlagen. Ich glaube C++ ist wenig geeignet, wenn man sich nicht sehr intensiv mit der Sprache auseinandersetzt.

Grüße,
Dieter

von Dieter Bürßner - am 22.06.2001 19:03

Re: C++ und Visual Basic. Einführungen Online

> Das ist ein wirklich nützlicher Link. Kann einem evtl. ein Buch ersparen. Mir gefällt der Kurs!

Ich wäre etwas skeptischer. Auf der ersten Seite die ich mir anschaute (über Zeiger), fand ich in der ersten Code Zeile den ersten Fehler. (Zeiger seien immer auf Null initialisiert ...) Nicht sehr Vertrauens-erweckend.

Grüße,
Dieter

von Dieter Bürßner - am 22.06.2001 19:09
Zur Information:
MySnip.de hat keinen Einfluss auf die Inhalte der Beiträge. Bitte kontaktieren Sie den Administrator des Forums bei Problemen oder Löschforderungen über die Kontaktseite.
Falls die Kontaktaufnahme mit dem Administrator des Forums fehlschlägt, kontaktieren Sie uns bitte über die in unserem Impressum angegebenen Daten.