Warum kam der GO-Befehl ins BASIC rein?

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

  • (Ich schreibs mal hier rein, weil das ja nicht direkt mit BASIC sondern eher mit Computer-Geschichte zu tun hat.)

    Irgendwer muss ja mal auf die (meiner Ansicht nach ziemlich blödsinnige) 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?

  • Nicht ernst gemeint:

    Das hat Bill Gates schon in den 70ern gemacht, weil er wusste, dass es den Befehl GO64 geben würde :lol27:

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Irgendwer muss ja mal auf die (meiner Ansicht nach ziemlich blödsinnige) 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?

    Bin nicht sicher, ob Du generell was gegen "GOTO" hast - moderne Sprachen lassen das ja weg.

    Wenn das das Thema sein sollte, dann wird der "GOTO"-Befehl von Basic meiner Meinung nach dann klarer, wenn man sich ein bischen mit Assembler beschäftigt.

    Da gibt es mehrere Arten von "jump"-Befehlen, die den Programmablauf zu bestimmten Speicheradressen springen lassen. Das benutzt man praktisch andauernd, z.B. auch um eine einfache Schleife einzurichten. "GOTO" ist (meiner Meinung nach) einfach dieser Gedanke ins Basic übertragen.

    Sinnigerweise hatte sich der Computerclub in meiner Stadt in den frühen 80ern ausgerechnet "GOTO-Club" genannt. Später war ihm das dann peinlich. :lol27:

  • Bin nicht sicher, ob Du generell was gegen "GOTO" hast - moderne Sprachen lassen das ja weg.

    Geht komplett an der Fragestellung vorbei. Das System der Basic-Interpreter war in den 70ern einfach zeilennummerbasiert. Und so unübersichtlich kann es ja nicht werden, wenn man an den mageren Speicher des ViC 20 beispielsweise denkt. Aber lassen wir das OT...

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Bin nicht sicher, ob Du generell was gegen "GOTO" hast - moderne Sprachen lassen das ja weg.

    Nö, gar nicht. Ich hab's erst letztens bei einem PHP-Programm genutzt, hat alles deutlich vereinfacht. :D

    Ne, mir geht's wirklich um das "GO". Ich dachte, vielleicht gibt es da ein Geschichte dazu und irgendwer kennt die.

  • GOTO considered harmful...

    Bitte melde dich an, um diesen Link zu sehen.

    Gibt zahlreiche Beispiele, an denen Commodore BASIC keinen Sinn macht

    IF ... GOTO (spart sogar Zyklen) statt IF ... THEN GOTO ist nur 1 weiteres, was mir spontan einfällt

    PS: GOSUB hingegen erfordert das THEN /o\

  • Ne, mir geht's wirklich um das "GO".

    Was für'n GO? Mein Spectrum kennt mit einem Tastendruck jeweils nur entweder "GO TO" oder "GO SUB".

    Ein isoliertes "GO" gibt es da nicht.

    Wollte gerade sagen, am ZX mal die "G" Taste drücken haut halt ein GO TO raus und kein GOTO, ist vielleicht alles ein wenig Historisch gewachsen :D

    "Werter Pöbel, wertes Gesocks ... aus dem Arsche zieht euch den Stock ..."

  • (Ich schreibs mal hier rein, weil das ja nicht direkt mit BASIC sondern eher mit Computer-Geschichte zu tun hat.)

    Irgendwer muss ja mal auf die (meiner Ansicht nach ziemlich blödsinnige) 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?

    Keine Ahnung, aber eine Vermutung.

    Basic ist ja als Interpreter erdacht. Als der C64, oder ähnliche Heimcomputer den Leuten Basic nahe brachten, war Basic ja schon 20 Jahre alt und hatte eine entsprechende Entwicklung hinter sich.

    Du musst bei Basic ja zwischen zwei Zuständen unterscheiden. Die Ebene der Programmerstellung und die der Programm Ausführung.

    So gibt es in vielen Dialekten von Basic auch durchaus Befehle, die nur zur Laufzeit verwendet werden können, oder auch Kommandos die nur zur Edit Zeit verwendet werden können. List ist z.B. solch ein Kommando, welche oftmals nicht im Programmcode selbst akzeptiert wird, als eines der letzten Überbleibsel. Kommt auf dem Dialekt an.

    Dass das alles miteinander verwurstet wurde, ist ja eher dem späten Entwicklungsstand geschuldet gewesen, als dann Heimcomputer erschienen. Go wird so ein historisches Ding aus der Trennung von Entwicklungsumgebung und Laufzeit sein, würde ich mal vermuten.

  • Irgendwer muss ja mal auf die (meiner Ansicht nach ziemlich blödsinnige) 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?

    Ich habe mal vor Urzeiten in einem Buch was dazu gelesen (fragt mich nicht, wo genau, ist leider zu lange her) und versuche, es mal richtig zusammenzufassen:

    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.

    Einige frühe BASIC-Interpreter erlaubten GO TO, und andere akzeptierten nur GOTO. Das Commodore-BASIC (was ursprünglich ja von Microsoft-BASIC abgeleitet wurde) wollte durch diese Flexibilität sicherstellen, dass Programme aus anderen BASIC-Umgebungen leichter übertragen werden konnten.

    Und was mal drin ist, blieb halt dann drin. ;)


    Edit: Ich glaube, dass dazu was im Buch

    von den Entwicklern von BASIC stand. Das hatte ich vor 5000 Jahren mal aus der Unibücherei ausgeliehen und gelesen.

  • Warum gibt es LET

    Weil das BASIC ROM voll werden musste :nixwiss:

    LET war damals Basic-Standard. Das was sicherlich aus Kompatibilitätsgründen vorhanden. Alle Basic-Interpreter, die ich aus der Zeit (1970er) kenne, verwenden LET.

  • Einige frühe BASIC-Interpreter erlaubten GO TO, und andere akzeptierten nur GOTO. Das Commodore-BASIC (was ursprünglich ja von Microsoft-BASIC abgeleitet wurde) wollte durch diese Flexibilität sicherstellen, dass Programme aus anderen BASIC-Umgebungen leichter übertragen werden konnten.

    Und deswegen auch das LET.

    Und was mal drin ist, blieb halt dann drin. ;)

    Sonst wären die Basic-Versionen vom Commodore ja zu sich selbst inkompatibel gewesen. Es war schon das Ziel, dass man die Basic-Programme zu den Nachfolgerechner kompatibel blieben (PET -> CBM -> Basic 4 -> VC20 -> C64...).

    Nur von Basic 4 zum VC20 gab es einen Bruch, weil die Floppy-Befehle von Basic 4 wieder rausgeflogen sind. Die hätten aber auch keinen Sinn gemacht.

  • Das Ganze ist technisch bedingt:

    Der C64 prüft nur die ersten 2 Buchstaben

    und den GO Befehl gibt es in zwei Varianten die unterscheiden werden müssen: GO TO und GO SUB

    Daher bestehen die Befehle GOTO und GOSUB aus zwei Tokens.

  • Daher bestehen die Befehle GOTO und GOSUB aus zwei Tokens.

    Nein

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Das Ganze ist technisch bedingt:

    Der C64 prüft nur die ersten 2 Buchstaben

    und den GO Befehl gibt es in zwei Varianten die unterscheiden werden müssen: GO TO und GO SUB

    Daher bestehen die Befehle GOTO und GOSUB aus zwei Tokens.

    Ich glaube, du wirfst da was durcheinander. Variablen benutzen nur die ersten zwei Zeichen.

    GOTO und GOSUB sind je ein Token, GO TO ist die spezielle Ausnahme mit zwei Tokens.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

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

  • "Das Grafikwunderwerk C64!..."

    ....und hat keinen einzigen Grafik-Befehl im BASIC :rolleyes:

    "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"