Warum kam der GO-Befehl ins BASIC rein?

Es gibt 36 Antworten in diesem Thema, welches 2.520 mal aufgerufen wurde. Der letzte Beitrag (3. Dezember 2024 um 17:39) ist von atomcode.

  • 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 :rolleyes:

    Aber natürlich. POKE ist doch ein Grafik-Befehl, oder?!? :whistling:

    stimmt, wer braucht schon line oder circle - das versteht ja kein Mensch :thumbsup:

    "Was heute noch wie ein Märchen klingt,kann morgen Wirklichkeit sein.Hier ist ein Märchen von übermorgen.Es gibt keine Kupferka­bel mehr,es gibt nur noch die Glasfaser und Terminals in jedem Raum.Man siedelt auf fernen Rech­nern.Die Mailboxen sind als Wohnraum erschlossen.Mit heute noch unvorstellbaren Geschwindigkeiten durcheilen Computerclubs unser Da­tenverbundsystem.Einer dieser Com­puterclubs ist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungen durch den Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • 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.

    Bitte melde dich an, um diesen Link zu sehen.

    2 Mal editiert, zuletzt von detlef (3. Dezember 2024 um 17:01)

  • 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.

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • 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. :)

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • 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.

    Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von detlef (3. Dezember 2024 um 17:10)

  • 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.

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • 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?

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • 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.