Frage

  

Mögliche Duplizieren:
   Warum haben wir mit Zeilennummern bei allen? Mühe

Ich bin neugierig, warum frühe Versionen der BASIC-Programmiersprache hatten Zeilennummerierung wie in:

42 PRINT "Hello world!"

Die Texteditoren Rücken hatte dann keine Zeilennummerierung?

EDIT: Ja, ich weiß, sie sind für GOTOs verwendet, aber warum? Ich meine mit Etiketten war auch rechnerisch teuer?

War es hilfreich?

Lösung

Viele Microcomputer hatten ein BASIC-Interpreter in ROM, die beim Booten starten würden. Das Problem war, dass es kein Texteditor oder das Dateisystem zu sprechen war. Sie haben eine interaktive Eingabeaufforderung alles durch zu tun. Wenn Sie eine Codezeile einfügen wollen, die Sie gerade eingegeben hat, mit der Zeilennummer beginnen. Es würde sie in der richtigen Stelle in Sie Code einfügen. z:

>10 print "hello"
>30 goto 10
>20 print "world"
>list
10 PRINT "hello"
20 PRINT "world"
30 GOTO 10
>

(In diesem Beispiel> ist der Grund prompt)

Wenn Sie eine Linie löschen wollen, würden Sie so etwas wie ERASE 20 geben. Einige wirklich Lust Systeme hat Ihnen einen Zeileneditor (d EDIT 10) Und wenn Sie nicht Ihre Zeilennummern planen und lief (wie kann ich Einsatz einer Linie zwischen 10 und 11?) Einige Systeme hat Ihnen einen RENUM Befehl, der den Code neu zu nummerieren würde (und justieren GOTOs und GOSUBs entsprechend).

Fun Times!

Andere Tipps

Die ursprüngliche BASIC Zeilennumerierung war eigentlich ein integraler Teil der Sprache und für die Ablaufsteuerung verwendet.

Die GOTO und GOSUB Befehle würde die Linie, und verwenden Sie es für die Ablaufsteuerung. Das war üblich dann (obwohl es entmutigt jetzt).

Sie wurden als Markierungen für GOTO und GOSUB verwendet

Wie folgt aus:

10 PRINT "HELLO WORLD"
20 GOTO 10

Es wurden keine Namen Etiketten in einigen frühen BASIC-Versionen

Sie waren auch erforderlich, wenn Sie eine Linie zwischen zwei bestehenden Codezeilen einfügen wollen, weil in den frühen Tagen, Sie keine Volltexteditoren hatten. Alles war in dem „interaktiv“ Interpreter eingegeben werden.

Also, wenn Sie eingegeben haben:

15 PRINT "AND THE UNIVERSE"

Das Programm würde:

10 PRINT "HELLO WORLD"
15 PRINT "AND THE UNIVERSE"
20 GOTO 10

Wenn Sie von Zeilennummern laufen, konnte man ein „Umnummerierung“ Tool ausführen, um alle Zeilen in Ihrem Programm neu zu nummerieren, aber in den frühen Tagen des Commodore 64 und anderen Heimcomputer, wir hatten nicht einmal das, so würden Sie manuell neu nummerieren müssen. Deshalb sollten Sie Lücken von 10 oder mehr in den Zeilennummern verlassen mußten, so dass Sie leicht Linien dazwischen hinzufügen könnten.

Wenn Sie den Commodore 64-Interpreter ausprobieren möchten, lesen Sie in diesem C64-Emulator aus in Flash geschrieben: http://codeazur.com.br/stuff/fc64_final/ (keine Installation erforderlich)

In BASIC zeigten die Zeilennummern Sequenz.

Auch viele ältere Redakteure waren nicht für Dateien, sondern nur Linien ( "line-Editoren", zB ed, der Standard-Editor ). Durch die Nummerierung sie auf diese Weise, wussten Sie, welche Linie, die Sie gearbeitet haben.

Zurück in den Tag alle Sprachen Sequenznummern hatte, war alles auf Lochkarten. Es gab eine Zeile pro Karte. Kartendecks Ihr Programm aus.

Wenn Sie die Karten gefallen, können Sie sie in einem Kartensortierer setzen würde, die diese Sequenznummern verwendet.

Und natürlich sie durch Kontrollfluss-Konstrukte verwiesen wurden.

Eine einfache Google verrät, was wikipedia zu sagen hat darüber :

  
    

Die Zeilennummern waren ein erforderliches Element der Syntax in einigen älteren Programmiersprachen wie GW-BASIC. [2] Der Hauptgrund dafür ist, dass die meisten Betriebssysteme zum Zeitpunkt der interaktiven Texteditoren fehlte; Da die Schnittstelle in der Regel auf einen Zeileneditor beschränkt war Programmierer, sofern Zeilennummern einen Mechanismus, mit der bestimmten Zeilen im Quellcode für die Bearbeitung verwiesen werden könnten, und von denen könnte der Programmierer eine neue Zeile an einer bestimmten Stelle einzufügen. Zeilennummern auch ein bequemes Mittel zur Unterscheidung zwischen Code versehen in das Programm eingegeben werden und Befehle sofort ausgeführt werden, wenn vom Benutzer eingegeben (die nicht Zeilennummern haben).

  

Auf dem C64 gab es nicht einmal einen richtigen Editor (eingebaut in zumindest). So bearbeiten Sie einen Teil des Programms, Sie so etwas wie LIST tun würde 100-200, und dann würde man nur zu bearbeiten diese Zeilen der Lage sein, die zur Zeit auf dem Bildschirm angezeigt wurden (kein Scrollen nach oben!)

Sie waren Etiketten für Aussagen, so dass Sie die Zeilennummer GOTO konnte. Die Anzahl der Aussagen nicht unbedingt die physischen Zeilennummern in der Datei übereinstimmen müssen.

Die Zeilennummern wurden in Kontrollfluss verwendet. Es gab keine Namen Subroutinen. Sie hatte GOSUB 60 zu verwenden, zum Beispiel das Unterprogramm aufrufen ab Zeile 60


Auf dem Update nicht alle Sprachen hatten Etiketten, aber alle Sprachen hatten Zeilennummern auf einmal. Zu einer Zeit, war alles Lochkarten. BASIC war eine der ersten interaktiven Sprachen, wo man tatsächlich etwas geben könnte und eine Antwort sofort haben. Zeilennummern waren noch die aktuelle Technologie.

Labels ist ein zusätzlicher Aufwand. Sie müssen den Überblick über die Korrelation zwischen dem symbolischen Etikett und dem Code oder Daten, auf die sie sich bezieht. Aber wenn jede Zeile eine Zeilennummer hat (und wenn alle Übertragung von Steuerflussrechnung immer auf den Anfang einer Zeile beziehen), dann brauchen Sie keine separate Symboltabelle.

Beachten Sie auch, dass ursprüngliche BASIC Interpreter keine Symboltabelle für Variablen müssen haben: Es wurden 26 Variablen mit dem Namen A-Z. Einige waren anspruchsvoll und hatte An-Zn. Einige bekamen sehr extravagant und eine Unterscheidung zwischen string, integer und Gleitkomma durch Zugabe von „$“ oder „%“ nach den Variablen hinzugefügt. Aber keine Symboltabelle erforderlich war.

IIRC, Zeilennummern wurden meist als Markierungen für GOTO und GOSUB-Anweisungen verwendet, da in einigen (die meisten?) Aromen von BASIC es keine Möglichkeit gab einen Abschnitt des Codes zu beschriften.

Sie wurden auch vom Editor verwendet - das heißt, Sie sagte:

edit 100

zu bearbeiten Linie 100.

Wie andere haben darauf hingewiesen, diese Zeilennummern wurden im Rahmen von Unterprogrammen verwendet wird.

Natürlich gibt es einen Grund, dass dies nicht mehr geschieht. Stellen Sie sich vor, wenn Sie GOTO sagen 20 auf der Leitung 10, und dann später merkt man 10 weitere Codezeilen nach Zeile 10. Urplötzlich schreiben müssen, Sie Zerschlagung gegen 20 so müssen Sie entweder Ihre Unterprogramm verschieben weiter weg ( höhere Zahlen) und Ihren GOTO Wert ändern, oder Sie benötigen ein anderes Unterprogramm zu schreiben, die weiter in dem Code springt.

Mit anderen Worten, es wurde ein Alptraum wahr Spaghetti-Code und ist nicht Spaß zu halten.

Es wurde auf der Kommandozeile in vielen Fällen eingegeben (oder war, auf meinem alten Commodore 64), so kann es nicht immer einen Texteditor gewesen sein, oder es war, war es recht einfach.

Darüber hinaus müssen Sie GOTOs und dergleichen sowie Einstecklinien zwischen anderen zu tun.

ie:

10 PRINT "HELLO"
20 GOTO 10
15 PRINT " WORLD"

, wo es in dem logischen 10 15 20

gehen

Einige Editoren hatten nur einen „Überschreiben“ Modus und keine „Insert“ -Modus. Dies machte die Bearbeitung vorhandenen Code extrem schmerzhaft. Durch das Hinzufügen dieser Linie-Nummer-Funktion, können Sie jedoch Patch vorhandenen Code von jedem beliebigen Ort innerhalb der Datei:

100 PRINT "Broken Code"
200 PRINT "Foobar"
...
101 patch the broken code
102 patch more broken code

Da Zeilennummern haben nicht innerhalb der Datei bestellt werden.

waren Zeilennummern ein Teil der Sprache, in einigen sehr früh denjenigen, auch das Betriebssystem nur diese einfachen Linien waren. ALLE Sie haben, war eine Zeile zu einem Zeitpunkt, zu manipulieren. Versuchen Sie, ein Abrechnungssystem mit 1-4k Programmdateien zu schreiben und es durch Größe Segmentieren Sachen zu erledigen. So bearbeiten Sie verwendet die Zeilennummern zu sagen, was Sie editiert. Also, wenn Sie eingegeben wie:

10 PRINT "howdy"
20 GOTO 10
10 PRINT "WOOPS"
15 PRINT "MORE WOOPS"
20
RUN

Sie erhalten würden:

WOOPS
MORE WHOOPS

Der Rohling 20 würde diese Zeile effectivly löschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top