"Das Grafikwunderwerk C64!..."
....und hat keinen einzigen Grafik-Befehl im BASIC
Das war vermutlich auch gut so, da sich so viel mehr User für Assembler interessiert haben.
Es gibt 36 Antworten in diesem Thema, welches 2.520 mal aufgerufen wurde. Der letzte Beitrag (
"Das Grafikwunderwerk C64!..."
....und hat keinen einzigen Grafik-Befehl im BASIC
Das war vermutlich auch gut so, da sich so viel mehr User für Assembler interessiert haben.
Trivia: Das TO ist dasselbe wie vom FOR-TO-NEXT.
Wenn man sich die BASIC-Programme alle so ansieht, kann man, denke ich, im Nachhinein sagen, dass man "GO TO" und "LET" getrost hätte weglassen können. Um das ROM voll zu bekommen, fallen mir zig andere praktische Befehle ein, bspw. Cursor-Positionierung für PRINT, RESTORE X oder DIR(ectory).
Im Nachhinein ist man immer schlauer. Als das Microsoft-Basic entwickelt wurde, wäre ein inkompatibles Basic evtl. gar nicht gut angekommen.
Die Möglichkeit, den GOTO-Befehl im Commodore-BASIC auch als GO TO zu schreiben, stammt ursprünglich aus der Entwicklung von BASIC selbst. Das geht auf die allerersten Implementierungen von BASIC in den 1960er Jahren zurück. Der Befehl GOTO sollte intuitiv verständlich sein und das getrennte Schreiben GO TO sollte die Lesbarkeit und Klarheit verbessern, besonders für Menschen ohne Programmiererfahrung. GO TO erinnert eher an einen natürlichen englischen Ausdruck, was den Lernprozess erleichtern sollte. BASIC war ja als allererster Einstieg ins Programmieren gedacht.
Mich hat vor allem das Token für das GO gewundert. Alle anderen Befehle haben Token im Bereich von 128 bis 162, das Token für GO ist 203. Das klang für mich stark danach, dass es erst nachträglich eingebaut worden ist.
Inzwischen weiß ich, dass es im Commodore BASIC V1 noch nicht drin war. Die Erklärung, dass das die Kompatibilität zu anderen BASIC-Dialekten erhöhen sollte, klingt aber plausibel.
"Das Grafikwunderwerk C64!..."
....und hat keinen einzigen Grafik-Befehl im BASIC
Aber natürlich. POKE ist doch ein Grafik-Befehl, oder?!? ![]()
"Das Grafikwunderwerk C64!..."
....und hat keinen einzigen Grafik-Befehl im BASIC
Aber natürlich. POKE ist doch ein Grafik-Befehl, oder?!?
stimmt, wer braucht schon line oder circle - das versteht ja kein Mensch ![]()
Die Möglichkeit, den GOTO-Befehl im Commodore-BASIC auch als GO TO zu schreiben, stammt ursprünglich aus der Entwicklung von BASIC selbst. Das geht auf die allerersten Implementierungen von BASIC in den 1960er Jahren zurück. Der Befehl GOTO sollte intuitiv verständlich sein und das getrennte Schreiben GO TO sollte die Lesbarkeit und Klarheit verbessern, besonders für Menschen ohne Programmiererfahrung. GO TO erinnert eher an einen natürlichen englischen Ausdruck, was den Lernprozess erleichtern sollte. BASIC war ja als allererster Einstieg ins Programmieren gedacht.
Mich hat vor allem das Token für das GO gewundert. Alle anderen Befehle haben Token im Bereich von 128 bis 162, das Token für GO ist 203. Das klang für mich stark danach, dass es erst nachträglich eingebaut worden ist.
Inzwischen weiß ich, dass es im Commodore BASIC V1 noch nicht drin war. Die Erklärung, dass das die Kompatibilität zu anderen BASIC-Dialekten erhöhen sollte, klingt aber plausibel.
Mit Basic 1 meinst du das Basic vom PET 2001? Da wird das GO TO vom Parser tatsächlich zu GOTO zusammengezogen und durch ein Token ersetzt.
Die Tatsache, dass das in Basic 2 extra nochmal geändert wurde, zeigt, wie wichtig das GO TO genommen wurde. Das erklärt auch die hohe Tokennummer.
Irgendwer muss ja mal auf die [...] Idee gekommen sein, das Schlüsselwort "GO" bei BASIC einzuführen, wodurch man den GOTO-Befehl auch als GO TO schreiben konnte. Weiß jemand, wie es dazu kam? Was war die Motivation dazu?
Für mich liegt der Fall klar: Die Sequenz "GO TO" gibt es auch im "echten" Englisch. Man wollte also den Benutzern ermöglichen, den Befehl so einzutippen, wie sie es von einem normalen Text her kennen.
Andererseits ist GOTO in BASIC V2 ein sehr oft genutzter Befehl, sodass man auch ein eigenes Token für "GOTO" haben wollte - bringt etwas Speed und spart etwas Speicher.
Mit Basic 1 meinst du das Basic vom PET 2001? Da wird das GO TO vom Parser tatsächlich zu GOTO zusammengezogen und durch ein Token ersetzt.
Ja, genau. Dieses Zusammenziehen hatte ja Probleme mit sich gebracht: IF F OR G THEN ... lieferte einen SYNTAX ERROR, weil hier durch das Zusammenziehen ein FOR erkannt wurde.
Wenn man sich die BASIC-Programme alle so ansieht, kann man, denke ich, im Nachhinein sagen, dass man "GO TO" und "LET" getrost hätte weglassen können.
Damit wollte ich nur sagen, dass man es so gut wie nirgends findet. Und das zeigt, dass diese Kompatibilität zu anderen Dialekten offenbar doch nicht wichtig war. Also eher aus der Kategorie "gut gemeint".
Warum gibt es LET
Wenn eine Anweisung mit einem Schlüsselwort eingeleitet wird, ist der Parser einfacher zu implementieren.
Müsste dann nicht LET A=3 etwas schneller sein als A=3? Ist es beim C64 aber jedenfalls nicht. ![]()
Ja, genau. Dieses Zusammenziehen hatte ja Probleme mit sich gebracht: IF F OR G THEN ... lieferte einen SYNTAX ERROR, weil hier durch das Zusammenziehen ein FOR erkannt wurde.
Ach stimmt. Jetzt erinnere ich mich wieder. Das Zusammenziehen wurde generell rausgenommen.
Warum gibt es LET
Wenn eine Anweisung mit einem Schlüsselwort eingeleitet wird, ist der Parser einfacher zu implementieren.
Müsste dann nicht LET A=3 etwas schneller sein als A=3? Ist es beim C64 aber jedenfalls nicht.
Einfacher heisst nicht automatischer schneller.
Wenn man sich die BASIC-Programme alle so ansieht, kann man, denke ich, im Nachhinein sagen, dass man "GO TO" und "LET" getrost hätte weglassen können.
Damit wollte ich nur sagen, dass man es so gut wie nirgends findet. Und das zeigt, dass diese Kompatibilität zu anderen Dialekten offenbar doch nicht wichtig war. Also eher aus der Kategorie "gut gemeint".
Du weisst doch gar nicht, wieviele Basic-Programme schon in den 70er Jahren von anderen Systemen unter Microsoft-Basic laufen gelassen wurden. Es ging natürlich nicht darum, dass Microsoft-Programme auf anderen Systemen liefen sondern anders rum.
Wenn man sich die BASIC-Programme alle so ansieht, kann man, denke ich, im Nachhinein sagen, dass man "GO TO" und "LET" getrost hätte weglassen können. Um das ROM voll zu bekommen, fallen mir zig andere praktische Befehle ein, bspw. Cursor-Positionierung für PRINT, RESTORE X oder DIR(ectory).
Ein Positionierungs-Befehl hätte vielleicht noch stattdessen reingepasst. Aber RESTORE X und DIR nehmen wahrscheinlich mehr Platz weg mehr als zwei Aliasse für bereits vorhandene Befehle.
Warum gibt es LET
Wenn eine Anweisung mit einem Schlüsselwort eingeleitet wird, ist der Parser einfacher zu implementieren.
Müsste dann nicht LET A=3 etwas schneller sein als A=3? Ist es beim C64 aber jedenfalls nicht.
Einfacher heisst nicht automatischer schneller.
Und welchen konkreten Nutzen hat dann das "einfachere" Parsen?
Andererseits ist GOTO in BASIC V2 ein sehr oft genutzter Befehl, sodass man auch ein eigenes Token für "GOTO" haben wollte - bringt etwas Speed und spart etwas Speicher.
Ja, aber wie der Blick auf Basic 1 zeigt, war das wohl ursprünglich so gar nicht geplant.
Ein Positionierungs-Befehl hätte vielleicht noch stattdessen reingepasst. Aber RESTORE X und DIR nehmen wahrscheinlich mehr Platz weg mehr als zwei Aliasse für bereits vorhandene Befehle.
Das schreit nach einem Thread, wo wir das überprüfen. Leider habe ich derzeit für so was überhaupt keine Zeit. DIR weiß ich nicht, aber ich würde wetten, dass PRINT AT, GOTO X und RESTORE X zusammen hineinpassen.