Frage

Wenn Sie etwas in BASIC schreiben, müssen Sie Zeilennummern verwenden.Wie:

10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10

Aber ich frage mich:Wer kam auf die Idee, überhaupt Zeilennummern zu verwenden?Es ist so lästig und hat in den Entwicklungsländern (Wortspiel beabsichtigt) ein ziemliches „Echo“ hinterlassen!

War es hilfreich?

Lösung

Die Idee war damals, dass man leicht Code überall in Ihrem Programm unter Verwendung der entsprechenden Zeilennummer hinzufügen könnte. Deshalb jeder benutzt Zeilennummern 10, 20, 30 .. so gibt es Raum links:

10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10
25 PRINT "HOME"

Auf den ersten Schnittstellen BASIC für verfügbar war, gab es keinen glänzenden Editor, nicht einmal so etwas wie vi oder Emacs (oder DOS bearbeiten, heh). Sie könnten nur Ihr Programm auf der Konsole ausdrucken und dann würden Sie neue Zeilen hinzufügen oder ersetzen, indem man zuerst die entsprechende Zeilennummer zu geben. Sie könnten nicht durch die „Datei“ navigieren (das Programm wurde im Speicher gehalten, obwohl Sie eine Kopie auf der Festplatte speichern können) mit dem Cursor wie man heutzutage verwendet werden.

Daher ist die Zeilennummern wurden nicht nur als Etikett für den berüchtigten GOTO benötigt, aber in der Tat notwendig, um die Dolmetscher zu sagen, an welcher Stelle im Programm fließen Sie bearbeiten.

Andere Tipps

Es hat eine loong-loong Geschichte.

Zeilennummerierung kommt eigentlich aus Dartmouth BASIC, die die ursprünglichen Version der BASIC-Programmiersprache waren und der integrale Bestandteil eines so Dartmouth Time Sharing-System genannt. Das DTSS hatte ein rudimentäres IDE, das war nicht mehr als eine interaktive Kommandozeile.

So jede Zeile innerhalb dieses „IDE“ eingegeben hat, und mit einer Zeilennummer begann, wurde in das Programm aufgenommen, alle zuvor gespeicherten Zeile mit der gleichen Nummer ersetzt wird; etwas anderes angenommen wurde ein DTSS Befehl und sofort ausgeführt werden.

Bevor es so etwas wie ein VDT ​​(Video Display Terminal) gab, programmierten wir Oldtimer auf Lochkarten.Lochkarten reservierten die Spalten 72–80 für Sequenznummern. Wenn Sie Ihren Kartenstapel fallen ließen und alle Karten nicht mehr in Ordnung waren, können Sie den Stapel in einen Kartensortierer legen, der die Karten anhand dieser Sequenznummern sortiert.In vielerlei Hinsicht ähnelten die BASIC-Zeilennummern diesen Sequenznummern.

Ein weiterer Vorteil in der BASIC-Welt besteht darin, dass BASIC früher so interpretiert wurde, wie es ausgeführt wurde.Die Verwendung von Beschriftungen anstelle fortlaufender Zeilennummern für Verzweigungen würde einen ersten Durchgang erfordern, um alle Beschriftungen und ihre Positionen zu erfassen, wobei der Interpreter wie bei der Verwendung von Zeilennummern weiß, ob er mit der Suche vorwärts oder rückwärts nach dem Ziel beginnen muss.

Zurück in den Tag haben Sie keinen 2-dimensionalen Editor wie Emacs oder vi haben. Alles, was Sie war Linie der Befehl hatte.

Ihr Programm wurde im Speicher abgelegt und Sie in einzelner Zeile eingeben würden Befehle einzelne Zeilen zu bearbeiten.

Wenn Sie ein Unix Gott sind Sie es mit ed oder etwas tun könnten, aber für BASIC auf einem C-64, VC-20 oder TRS-80 Sie würden nur die Zeile überschreiben.

So eine Sitzung könnte wie folgt aussehen:

$10 PRINT "Hellow World"
$20 GOTO 10
$10 PRINT "Hello World"

Und jetzt würde das Programm korrekt funktionieren.

Einige ältere Großrechner hatte sogar Leitungsanschlüsse ohne Bildschirm. Ihre gesamte Sitzung wurde gedruckt auf Papier Tinte!

Das "Who?" wäre die Erfinder, Kemeney und Kurtz.

Nachdem ich die Antworten zu lesen, überprüfte ich die Wikipedia-Eintrag für "Dartmouth BASIC" und war überrascht zu erfahren,

  

Der erste Compiler erzeugt wurde, bevor das Time-Sharing-System bereit war. Bekannt als CardBASIC, wurde es für das Standard-Kartenleser-basierten Batch-Verarbeitungssystem vorgesehen.

So sieht es aus wie Paul Tomblin "bekommt den Platz".

Sie entstanden in Fortran, aus dem BASIC abgeleitet wurde. Jedoch in FORTRAN nur Linien von anderen Linien verwiesen (wie GOTO targets) Zahlen benötigt wird. In BASIC hatten sie eine Zweitverwertung, die Bearbeitung von bestimmten Linien zu ermöglichen war.

Paul Tomblin Antwort ist die umfassendste, aber ich bin überrascht, niemand, dass ein großer Teil des Grundes Projekt ursprünglichen Ziels ein anfängerfreundlich interaktive Umgebung mit Time-Sharing zur Verfügung zu stellen war erwähnt hat. (Kurtz und Kemeny Vision für „universellen Zugang für alle Schüler“ war weit seiner Zeit voraus in dieser Hinsicht.)

Das BASIC-System, das dieses Ziel entwickelt wurde, kennzeichnete Terminals Teletype- ASR-33 (und später auch anderen) Druck zu erfüllen. Wenn zu einem Time-Sharing-fähigen O verbunden, diese Bearbeitung erlaubt und BASIC-Programme in einem interaktiven Modus ausgeführt wird (im Gegensatz zu mit Lochkarten arbeiten), aber sie sind nicht Cursor-adressierbar. Zeilennummern waren eine anfängerfreundliche Art und Weise, um sowohl die Reihenfolge von Programmanweisungen zu geben und eindeutige Bearbeitung in Abwesenheit eines Screen-Editor zu ermöglichen. Der Wikipedia-Eintrag für „Editor“, erklärt weiter, und jeder, der jemals versucht hat, einen Online-Editor (wie die Un * x ‚ed‘) kann nutzen verstehen, warum Kurtz und Kemeny sollen den Anfänger für sparsam mit gedankt werden die kryptischen lernen Befehlssequenzen, die für Text auf diese Weise zu bearbeiten.

Bereits in den fünfziger Jahren, als Hoch Programmiersprachen in ihren Anfängen waren, gab es keine Endgeräte, keine Redakteure, keine Monitore (ja, keine Monitore), nur Karte Puncher und Leser (für das Schreiben und Lesen der Inhalte von Karten in Speicher eines Computers) und Drucker (für Druckergebnisse, natürlich). Später wurde Band eingeführt, aber das ist eine andere Geschichte.

Jede Lochkarte hatte eine eigene Nummer. Es gab mehrere Gründe dafür; von rein, um sie zu halten, um die Abfolge der Ausführung der Bestimmung. Jede Karte war eine Zeile Code (in der heutigen Begriffen). Da zu diesem Zeitpunkt gab es keine Konstrukte wie if..then..else, oder was auch immer Variante dergleichen, wobei die Reihenfolge der Ausführung irgendwie werden mußte bestimmt. So GOTO-Anweisungen wurden eingeführt. Sie waren die Grundlage von Schleifen. Der Begriff „Spaghetti-Code“ stammt aus dieser Zeit auch, da schlecht geschriebener Code relativ schwer zu folgen, wie Spaghetti auf einem Teller:)

Ich vermute, es kommt von Assembler, wo jeder Befehl eine Adresse hat, die durch eine andere Anweisung gesprungen werden kann.

Darüber hinaus sind die ersten Computer hatte nicht viel Speicher, und nur eine Zeilennummer Speicherung dauert zwei Bytes (wenn es richtig gemacht). Das Schreiben eines Etiketts braucht mehr Speicher, zuerst in der Lage, wo das Etikett definiert ist, in jedem Sprungbefehl.

Schließlich in der guten alten Zeit gab es keine Phantasie-Editoren. Der einzige „Editor“ war eine einfache Befehlszeilenschnittstelle, die alles mit der Start behandelt eine Reihe Teil eines Programms, und alles andere als Befehle sind sofort ausgeführt werden. Prominentestes Beispiel sollte der Commodore 64 sein.

Neuere Dialekte Grund haben nicht die Notwendigkeit für Zeilennummern nicht mehr.

in Basic, wenn Sie keine Zeilennummer haben, wie kann man die Vorform ein

GOTO 10 

Das war eine Art und Weise Linien zu springen, ein guter Weg, die gefunden wurde ... mehr als 20 Jahre!

Heute helfen die Linien uns Fehler / Ausnahmen zu kontrollieren, da die Debug-Motoren uns in der Nachricht zu senden sind gemacht, dass wir eine Ausnahme auf Linie xxx bekam und wir springen sofort auf Sie!

Eine Welt ohne Zeilennummern vorstellen ... wie kann ein Reporter ohne die Linien bezahlt werden?

  

„Jetzt, wo Sie den Roman kennen, muss man mit nicht mehr als 50 Zeilen eine Zusammenfassung schreiben“

erinnern das? Auch in der Schule lernen wir über Zeilennummern!

, wenn es nicht erfunden wurde, wird jemand schon erfunden wieder so konnten wir es schön verwenden:)

Nicht alle Versionen von BASIC erforderlich Zeilennummern. QBasic zum Beispiel unterstützt Etiketten. Sie könnten dann mit GOTO zu denen springen (ohne Berücksichtigung von Dijkstra „Zur Erklärung gehen als schädlich“ für den Moment).

Die Antwort ist schon oben. Paul Tomblin schrieb sie (mit einem Vorbehalt zabzonk).
Eigentlich würde ich argumentieren, dass jede Antwort, die nicht „Lochkarten“ nicht erwähnt unvollständig ist, wenn es weder Lochkarten erwähnt noch Fortran, es ist falsch. Ich kann sagen, dass dies definitiv richtig ist, weil meine Eltern beide verwendet Lochkarten auf einer regelmäßigen Basis (sie mit Fortran 66 und 77 gestartet), dann migriert Basic und COBOL in den 80er Jahren.

In den frühen Tagen wurden die meisten Programme mit Lochkarten eingegeben. Die Lochkarten wurden in der Regel in der Reihenfolge eingegeben, in der Regel einen Befehl pro Karte, mit Etiketten (JMP / JSR targets) Karte eine separate Anweisung sein.

Ihr Programm bearbeiten, ersetzt man die Karte.

Später Implementierungen hinzugefügt eine optionale Sequenznummer am rechten Ende der Linie, so dass, wenn / wenn sie in der falschen Reihenfolge bekommt, können sie durch einen automatischen Leser erneut sequenziert werden.

Fortran verwendet, um sowohl numerische Ziel Etiketten auf der linken Seite (Spalte 1-5) und hinterließ einen reservierten Block auf der rechten Seite (73-80) für die Sequenz oder Kommentar.

Wenn BASIC wurde ursprünglich geschrieben, wurde beschlossen, die Sequenznummern nach links zu bewegen, in dem Feld Fortran-Label und Speicherbedarfs vor Karten Überschreiben zu ermöglichen ... als Bearbeitungsmodus. Dies wurde für die interaktive dev Umgebung bestimmt, sondern arbeitete ebenso gut mit Karten. Und Karten wurden in einigen frühen Implementierungen für eine Vielzahl von Gründen verwendet.

Beachten Sie: Viele Computer waren Kartenleser und Drucker-Schnittstelle direkt durch die späten 1970er Jahre. Auch tho‘interaktive Modus Grundlagen zur Verfügung standen, Lochkarte Grundprogramme häufig verwendet wurden. Da viele einfach in die IDE fraßen, arbeiteten sie genau die gleiche Weise. Einschließlich einer „Run“ Karte am Ende benötigen. In solchen Fällen könnte man einfach eine Korrektur Karte Tack und eine andere Run-Karte mit einer Variation auf einigen Variable erneut auszuführen; ebenfalls in komplexen Programmen, einfach eine korrigierte Linie einer Karte hinzufügen, bevor der Lauf war angemessen Probleme zu bearbeiten, ohne wertvolle Zeit verbringen sich die verirrte Karte zu finden.

Ich mag die Roboter Kirche auf Futurama, an den Wänden geschrieben wurden Sachen wie

10 SIN
20 GOTO HELL

Auf der Speccy man konnte keine Zeile ohne Zeilennummer bearbeiten.

Ich finde sie sehr hilfreich, wenn die Paarung. Ich muß nicht auf einer Linie zeigen, wenn mein Paar die Tastatur hat, kann ich nur sagen: „auf der Leitung 74, sollte nicht so wirklich seinen getMoreBeer ()?“

Das Original-Editor für DOS war ein wunderbares Programm namens edlin . Sie könnten nur eine einzige Zeile bearbeiten. Um das Leben noch interessanter in vielen Versionen von BASIC Sie Zeilen aus der Ordnung zu machen geben könnte, Zeile 10, 20, 30, 25, 5, würde die Ausführung von Zeile Zeilennummer wird nicht von der Reihenfolge des Erscheinens.

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