|
|
|
||||||||||||
|
AW: Datencode - Umfang und Aussehen
Hallo Robert!
Zitat von Robert
Hallo Stefan,
Ich bin kein Programmierer, deshalb sind das alles eher Spekulationen als Tatsachen, was ich jetzt von mir gebe! Gerade die ältere Programmierung dürfte mehr auf Asssembler (Maschinensprache ohne jeglichen Klartext) basieren, da der Speicherplatz damals deutlich beschränkter war als heute und Assembler deutlich weniger Platz braucht als eine in Klartext lesbare Programmiersprache. Und vor allen Dingen ist Assembler in der Ausführung um ein Mehrfaches schneller! Zitieren:
Heutzutage hat ja jeder Büro-PC Platz und Speed im Überfluss, da braucht man nicht mehr platzsparend und geschwindigkeitsoptimiert programmieren...
Zitieren:
Wenn ich zurückdenke, was man z. B. aus den <64KB eines Commodore 64 mit Programmiertricks alles herausgeholt hat; da könnten sich die Programmierer von heute viele Scheiben abschneiden...
viele Grüße, Robert Gruß, Willi Ach ja - wie so ein Programm beim Rechnen ausschaut, will ich mal im Groben schildern: Der Code selbst -nebst Bibi- bleibt freilich unverändert. Das Programm legt die Ergebnisse seiner aktuellen Berechnung in einer Tabelle im RAM ab. Die wesentlichen Informationen hieraus werden direkt ans Display geschickt. In der Tabelle wird (ich glaube nach vollständiger Berechnung des ersten Ply) festgelegt, in welcher Reihenfolge gesucht werden soll (damit die "besseren" Züge in Hinblick auf die Zeitkontrollen zuerst berechnet werden). Diese ändert sich nur dann, wenn ein besserer Zug gefunden wurde als in der Ausgangsberechnung. Der vormals beste Zug wandert damit auf Platz 2. Weitere Änderungen finden dort erst einmal nicht statt. Das in dieser Tabelle eine vollständige Umstellung in die Reihenfolge der besten Bewertungen aus Sicht des aktuellen Halbzuges stattfindet, ist bei den wenigsten Programmen der Fall - warum auch immer das so ist. Weiterhin wird die beste errechnete Variante im RAM festgehalten - als Ausgangspunkt für die Berechnungen im nächsten Halbzug. Alles andere (bis auf die gespeicherte Reihenfolge) "vergisst" das Programm wieder, will heissen: Es wird nicht im RAM abgelegt. Nur so ist es möglich, dass die Dinger mit nur wenig RAM überhaupt komplexe Zugfolgen ermitteln können. Bei ausreichend Speicher werden halt mehr Positionen für eine weitere Berechnung festgehalten, nebst der bisherigen Bewertungen. Das läuft dann aber bereits in Richtung "Hashtables". Bezogen auf ein Programm wie das des Polgar bedeutet das: Der Code bleibt bis auf die abgelegte kleine Tabelle weitgehend statisch. Natürlich verändern sich permanent sie Inhalte diverser Variablen, etc. Das führt dann dazu, das es aussieht als würde sich der Code fließend bewegen. Dies trifft aber eher aus der Sicht der CPU zu - von unserer Warte aus bewegt sich da praktisch nichts - ausser der Tabelle eben. "Wissen" tu ich das aufgrund meiner Erfahrungen mit dem C64. Prinzipiell ist das auf alle 6502 Maschinen übertragbar und mit hoher Wahrscheinlichkeit auch auf alle anderen Brettis aus der "guten alten Zeit". Bei Ruud's Monstern mag das ein wenig anders ausschauen, aber darum ging es hier ja nicht. Geändert von EberlW (31.03.2008 um 12:49 Uhr) Grund: Ups - hatte mich verrechnet... ;) |
![]() |
|
|