Domanda

Quando scrivi qualcosa in BASIC, ti viene richiesto di utilizzare i numeri di riga.Come:

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

Ma mi chiedo:chi ha avuto l'idea di utilizzare i numeri di riga?È una tale seccatura e ha lasciato una certa "eco" nel mondo in via di sviluppo (gioco di parole)!

È stato utile?

Soluzione

L'idea allora era che si potrebbe facilmente aggiungere il codice ovunque nel vostro programma utilizzando il numero di riga appropriata. Ecco perché tutti usano numeri di linea 10, 20, 30 .. quindi non c'è spazio rimasto:

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

Sulle prime interfacce di base era disponibile per, non c'era nessun editor lucido, nemmeno qualcosa come vi o emacs (modificare o DOS, eh). Si poteva solo stampare il programma sulla console e poi si dovrebbe aggiungere nuove linee o sostituirli, dando prima il numero di riga appropriata. Non si poteva navigare attraverso il "file" (il programma è stato mantenuto in memoria, anche se si potrebbe salvare una copia su disco) con il cursore come siete abituati a oggi.

Quindi i numeri di riga sono stati non solo necessari come etichette per il famigerato GOTO, ma in realtà bisogno di dire all'interprete a quale posizione nel programma di flusso che si sta modificando.

Altri suggerimenti

Ha una storia Loong-loong.

la numerazione delle righe proviene in realtà da Dartmouth BASIC, che era la versione originale del linguaggio di programmazione BASIC ed era la parte integrante di un cosiddetto Dartmouth System Time Sharing. Che DTSS aveva un IDE rudimentale, che non era altro che una riga di comando interattivo.

Quindi ogni linea digitato all'interno di questa "IDE", e che inizia con un numero di riga, è stato aggiunto al programma, in sostituzione di qualsiasi linea precedentemente memorizzato con lo stesso numero; qualsiasi altra cosa è stato assunto come un comando DTSS ed immediatamente eseguita.

Prima che ci fosse una cosa come un (terminale video) VDT, noi veterani programmati su schede perforate. schede perforate riservati colonne 72-80 per i numeri di sequenza - se caduto il mazzo di carte e tutti hanno ottenuto fuori uso, si potrebbe mettere il ponte in un sorter carta che avrebbe ordinare le schede basate su quei numeri di sequenza. In molti modi, i numeri di riga di base erano simili a quei numeri di sequenza.

Un altro vantaggio nel mondo di base è che ai vecchi tempi BASIC è stato interpretato come è stato eseguito. Utilizzo delle etichette piuttosto che numeri di riga in sequenza per rami richiederebbe un primo passaggio per raccogliere tutte le etichette e le loro posizioni, dove come se si utilizza i numeri di riga l'interprete sa se ha bisogno di avviare la scansione in avanti o indietro per la destinazione.

In passato non avevi un editor bidimensionale come emacs o vi.Tutto quello che avevi era la riga di comando.

Il tuo programma era archiviato in memoria e dovresti digitare comandi a riga singola per modificare singole righe.

Se fossi un dio Unix potresti farlo con ed o qualcosa del genere, ma per BASIC su C-64, VIC-20 o TRS-80 sovrascriveresti semplicemente la riga.

Quindi una sessione potrebbe assomigliare a:

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

E ora il programma funzionerebbe correttamente.

Alcuni mainframe più vecchi avevano addirittura terminali di linea senza schermo.La tua intera sessione è stata stampata carta In inchiostro!

Il "Chi?" sarebbero gli inventori, Kemeny e Kurtz.

Dopo aver letto le risposte, ho controllato il Wikipedia per "Dartmouth BASIC", ed è stato sorpresi di apprendere

  

Il primo compilatore è stato prodotto prima che il sistema di time-sharing era pronto. Conosciuto come CardBASIC, è stato destinato per il sistema di elaborazione batch basato lettore di schede standard.

Quindi, sembra che Paul Tomblin "ottiene il quadrato".

Si sono formati in FORTRAN, da cui provengono BASIC. Tuttavia, in FORTRAN solo le righe referenziate da altre linee (come bersagli GOTO) necessari numeri. In BASIC avevano un uso secondario, che era quello di consentire la modifica di linee specifiche.

La risposta di Paul Tomblin è il più completo, ma sono sorpreso che nessuno ha detto che una grande parte del obiettivo iniziale del progetto di base era quello di fornire un ambiente interattivo principiante-friendly utilizzando time-sharing. (Kurtz e Kemeny di visione per "l'accesso universale per tutti gli studenti" era molto più avanti del suo tempo in questo senso.)

Il sistema di base che è stato sviluppato per soddisfare questo obiettivo ha caratterizzato telescrivente ASR-33 (e più tardi altri) terminali di stampa. Quando è collegato a un sistema operativo time-sharing-capace, questi ammessi modificando ed eseguendo programmi BASIC in modo interattivo (a differenza di lavorare con schede perforate), ma non sono cursore indirizzabile. I numeri di riga sono stati un modo principiante-friendly sia per specificare l'ordine delle istruzioni del programma e consentire la modifica non ambigua, in assenza di un editor di schermo. La voce di Wikipedia per "line" spiega ancora, e chiunque abbia mai provato a utilizzare un editor di linea (quali l'ONU * x 'ndr') può capire perché Kurtz e Kemeny dovrebbero essere ringraziati per aver risparmiato il principiante dover imparare il criptico sequenze di comandi necessari per la modifica del testo in questo modo.

Negli anni Cinquanta, quando i linguaggi di programmazione ad alto erano nelle loro inizi, non c'erano terminali, senza editori, senza monitor (sì, no monitor), appena punzoni card e lettori (per la scrittura e la lettura del contenuto delle carte in memoria di un computer) e stampanti (per risultati di stampa, naturalmente). In seguito, il nastro è stato introdotto, ma questa è un'altra storia.

Ogni scheda perforata aveva il suo numero. C'erano diverse ragioni per questo; da puramente mantenerli in ordine, per determinare la sequenza di esecuzione. Ogni carta è stata una riga di codice (in termini di oggi). Poiché, in quel momento, non c'erano costrutti if..then..else, o qualunque variante simili, la sequenza di esecuzione doveva essere determinata in qualche modo. Quindi, sono stati introdotti istruzioni GOTO. Essi sono stati la base di cicli. Il "spaghetti code" termine deriva da quel periodo di tempo anche, dal momento che il codice scritto male era relativamente difficile da seguire, come gli spaghetti in un piatto:)

Direi viene da assembler, dove ogni istruzione ha un indirizzo che può essere saltato da un altro istruzioni.

Inoltre, i primi computer non hanno molta memoria, e memorizzare un numero di linea richiede solo due byte (se fatto correttamente). Scrivi un'etichetta prende più memoria, in primo luogo nel luogo, in cui si definisce che l'etichetta, quindi in qualsiasi comando di salto.

Infine nei bei vecchi tempi non c'erano qualsiasi editor di fantasia. L'unico "montaggio" era una semplice interfaccia a linea di comando, che trattava tutto a partire da un certo numero di essere parte di un programma e tutto il resto come comandi da eseguire immediatamente. La maggior esempio importante dovrebbe essere il Commodore 64.

recenti dialetti di base non hanno la necessità di numeri di riga più.

in Basic, se non si dispone di un numero di riga, come si può preforma a

GOTO 10 

che è stato un modo per saltare le linee, un buon modo che è stato trovato ... più di 20 anni fa!

Oggi, le linee ci aiutano a catturare gli errori / eccezioni perché i motori di debug sono fatti per inviare il messaggio che abbiamo ottenuto una deroga sulla linea di xxx e ci saltano subito ad esso!

immaginare un mondo senza numeri di linea ... come può un giornalista essere pagato senza le righe?

  

"Ora che si conosce il romanzo, si deve scrivere un riassunto con non più di 50 righe"

ricordare questo? Anche a scuola impariamo a conoscere i numeri di riga!

se non è stata inventata, qualcuno avrà già inventato di nuovo così abbiamo potuto usarlo bene:)

Non tutte le versioni di numeri di linea di base necessarie. QBasic, ad esempio, etichette supportato. Si potrebbe poi saltate a quelli con GOTO (ignorando Dijkstra di "Go To Statement considerati nocivi," per il momento).

La risposta è già al di sopra. Paul Tomblin ha scritto (con un avvertimento per zabzonk).
In realtà, direi che qualsiasi risposta che non menziona "schede perforate" è incompleta, se si menziona né schede perforate né FORTRAN, è sbagliato. Posso dire che questo è definitivamente giusto, perché i miei genitori entrambi schede perforate utilizzate su base regolare (hanno iniziato con FORTRAN 66 e 77), poi migrato a Basic e COBOL negli anni '80.

All'inizio la maggior parte dei programmi veniva inserita con schede perforate.Le schede perforate venivano solitamente inserite in sequenza, solitamente un'istruzione per scheda, con le etichette (bersagli JMP/JSR) che costituivano una scheda di istruzioni separata.

Per modificare il tuo programma, hai sostituito la scheda.

Le implementazioni successive hanno aggiunto un numero di sequenza opzionale all'estremità destra della riga, in modo che quando/se fossero fuori servizio, potessero essere risequenziati da un lettore automatizzato.

Fortran ha utilizzato entrambe le etichette di destinazione numeriche sulla sinistra (col 1-5) e ha lasciato un blocco riservato sulla destra (73-80) per la sequenza o il commento.

Quando il BASIC fu inizialmente scritto, si decise di spostare i numeri di sequenza a sinistra, nel campo dell'etichetta del FORTRAN, e di consentire la sovrascrittura dell'impronta di memoria delle schede precedenti...come modalità di modifica.Era pensato per l'ambiente di sviluppo interattivo, ma funzionava altrettanto bene con le carte.E le carte venivano utilizzate in alcune prime implementazioni per una serie di motivi.

Tieni a mente:Molti computer erano lettori di schede e interfacce per stampanti fino alla fine degli anni '70.Anche se erano disponibili le basi della modalità interattiva, venivano spesso utilizzati programmi di base con schede perforate.Poiché molti semplicemente stavano alimentando l'IDE, funzionavano esattamente allo stesso modo.Inclusa la necessità di una carta "Correre" alla fine.In questi casi, si potrebbe semplicemente aggiungere una carta correzione e un'altra carta Corsa per ripetere con una variazione su qualche variabile;allo stesso modo, nei programmi complessi, la semplice aggiunta della riga corretta di una carta prima dell'esecuzione era sufficiente per eliminare i problemi senza perdere tempo prezioso nella ricerca della carta errante stessa.

Mi piace la chiesa robot su Futurama, sulle pareti sono state scritte cose del genere

10 SIN
20 GOTO HELL

Al Speccy non si poteva modificare una linea senza il numero di riga.

Le trovo molto utile quando l'accoppiamento. Non ho per puntare a una linea quando la mia coppia ha la tastiera, posso solo dire, "sulla linea 74, non dovrebbe essere che in realtà getMoreBeer ()?"

L'editor originale per DOS è stata una meravigliosa utility chiamata edlin . Si potrebbe modificare solo una singola linea. Per rendere la vita ancora più interessante in molte versioni di BASIC è possibile digitare le linee fuori uso, la linea 10, 20, 30, 25, 5, l'esecuzione sarebbe da riga numero di riga non per ordine di apparizione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top