Pergunta

Quando você escreve algo em BASIC, você é obrigado a usar números de linha. Como:

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

Mas eu me pergunto: quem veio com a ideia de usar números de linha em tudo? É como um incômodo, e deixou bastante um "eco" no desenvolvimento (trocadilho intencional) mundo!

Foi útil?

Solução

A idéia na época era que você poderia facilmente adicionar o código em todos os lugares em seu programa usando o número da linha apropriada. É por isso que todo mundo usa a linha números 10, 20, 30 .. para que haja espaço deixado:

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

Nos primeiros interfaces de BASIC estava disponível para, não havia nenhum editor brilhante, nem mesmo algo como vi ou emacs (ou editar DOS, heh). Você só pode imprimir o seu programa no console e, em seguida, você poderia adicionar novas linhas ou substituí-los, dando o número da linha apropriada em primeiro lugar. Você não podia navegar através do "arquivo" (o programa foi mantido na memória, embora você poderia salvar uma cópia no disco) com o cursor como você está acostumado a hoje em dia.

Portanto, os números de linha foram não só necessária como rótulos para o GOTO infame, mas na verdade precisava dizer o intérprete em que posição no programa de fluxo que você está editando.

Outras dicas

Ele tem uma história-loong Loong.

A numeração de linhas na verdade vem de Dartmouth BASIC, que era a versão original da linguagem de programação BASIC e foi a parte integrante de um assim chamado Sistema Time Sharing Dartmouth. Isso DTSS tinha um IDE rudimentar, que não era nada mais do que uma linha de comando interativa.

Assim, cada linha digitada dentro deste "IDE", e começando com um número de linha, foi adicionado ao programa, substituindo qualquer linha previamente armazenado com o mesmo número; qualquer outra coisa foi assumida como um comando DTSS e imediatamente executado.

Antes havia uma coisa como um VDT (terminal de exibição de vídeo), nós, os veteranos programada em cartões perfurados. Cartões perfurados reservados colunas 72-80 para números de seqüência - se você deixar cair o seu baralho de cartas e todos eles tem fora de ordem, você poderia colocar a plataforma em um cartão classificador que pedir os cartões com base nesses números sequenciais. De muitas maneiras, os números de linha de base foram semelhantes aos números de seqüência.

Outra vantagem do mundo básico é que nos velhos tempos BASIC foi interpretado como ele foi executado. O uso de etiquetas em vez de números de linhas seqüenciais para ramos exigiria uma primeira passagem para pegar todos os rótulos e respectivos locais, onde como se você usar números de linha o intérprete sabe se ele precisa para começar a digitalizar frente ou para trás para o destino.

De volta ao dia em que você não tem um editor de 2 dimensional como emacs ou vi. Tudo o que tinha era a linha de comando.

O seu programa foi guardado na memória e você digitar comandos de linha única para editar linhas individuais.

Se você fosse um deus Unix você poderia fazê-lo com ed ou alguma coisa, mas para o BASIC em um C-64, VIC-20, ou TRS-80, você tinha acabado de substituir a linha.

Assim, uma sessão pode parecer:

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

E agora o programa funcione corretamente.

Alguns mainframes mais velhos ainda teve terminais de linha sem uma tela. Toda a sua sessão foi impresso em papel em tinta!

O "Quem?" seriam os inventores, Kemeney e Kurtz.

Depois de ler as respostas, eu verifiquei o Wikipedia entrada para "Dartmouth BASIC", e foi surpresos ao saber

O primeiro compilador foi produzido antes de o sistema de compartilhamento de tempo estava pronto. Conhecido como CardBASIC, que se destina o sistema de processamento em lote padrão de cartão de leitor de base.

Assim, parece que Paul Tomblin "fica a praça".

Eles se originaram em Fortran, a partir do qual BASIC foi derivado. No entanto, em FORTRAN apenas linhas referenciado por outras linhas (como alvos Goto) números necessários. Em BASIC eles tinham um uso secundário, o que era para permitir a edição de linhas específicas.

A resposta de Paul Tomblin é o mais completo, mas estou surpreso que ninguém tenha mencionado que uma grande parte do objetivo inicial do projeto BASIC era fornecer um novato-friendly ambiente interativo utilizando timesharing. (Visão de Kurtz e Kemeny de "acesso universal para todos os alunos" estava muito à frente de seu tempo a este respeito.)

O sistema básico que foi desenvolvido para cumprir esta meta destaque Teletype ASR-33 (e mais tarde outra) imprimir terminais. Quando conectado a um sistema operacional de tempo compartilhado com capacidade, estes permitiram a edição e execução de programas básicos em um modo interativo (ao contrário de trabalhar com cartões perfurados), mas eles não são cursor endereçável. Os números de linha eram uma forma amigável para iniciantes tanto para especificar a ordem das declarações do programa e permitir a edição inequívoca na ausência de um editor de tela. A entrada de Wikipedia para "editor de linha", explica ainda, e qualquer um que já tentou usar um editor de linha (como a Un * x 'ed') pode apreciar por Kurtz e Kemeny deve ser agradecido por ter poupado o novato ter que aprender a enigmática sequências de comandos necessários para editar o texto desta forma.

Para trás nos anos cinquenta, quando linguagens de programação de alto estavam em seus primórdios, não houve terminais, há editores, há monitores (sim, há monitores), apenas perfuradores e leitores de cartão (para gravar e ler o conteúdo de cartas em memória de um computador) e impressoras (para resultados de impressão, naturalmente). Mais tarde, a fita foi introduzida, mas isso é outra história.

Cada cartão perfurado tinha o seu próprio número. Havia várias razões para isso; de mantê-los puramente em ordem, para determinar a seqüência de execução. Cada cartão era uma linha de código (em termos de hoje). Uma vez que, naquela época, não havia construções como if..then..else, ou qualquer variante do tipo, a seqüência de execução teve de ser determinado de alguma forma. declarações Então GOTO foram introduzidas. Eles foram a base de loops. O termo "código espaguete" vem esse período de tempo também, já que código mal escrito foi relativamente difícil de seguir, como o espaguete em uma placa:)

Eu acho que se trata de assembler, onde cada instrução tem um endereço que pode ser saltou para por outra instrução.

Além disso, os primeiros computadores não tem muita memória e armazenamento de um número de linha só tem dois bytes (se feito corretamente). Escrevendo um rótulo ocupa mais memória, pela primeira vez no local, onde esse rótulo é definido, em seguida, em qualquer comando de salto.

Finalmente nos bons velhos tempos não havia nenhum editores extravagantes. A única "editor" era uma simples interface de linha de comando, que tratou de tudo começando com um número de ser parte de um programa e tudo mais como comandos para ser executado imediatamente. A maioria exemplo proeminente deve ser o Commodore 64.

dialetos mais recentes do Basic não têm a necessidade de números de linha por mais tempo.

no Basic, se você não tem um número de linha, como você pode pré-forma um

GOTO 10 

que era uma maneira de saltar linhas, uma boa maneira que foi encontrado ... mais de 20 anos atrás!

Hoje, as linhas nos ajudar a captura de erros / exceções porque os mecanismos de depuração são feitos para nos enviar na mensagem que temos uma exceção na linha xxx e saltar imediatamente para ele!

imaginar um mundo sem números de linha ... como pode um repórter ser pago sem as linhas?

"Agora que você sabe o romance, você tem que escrever um resumo com no máximo 50 linhas"

lembre-se disso? Mesmo na escola aprendemos sobre os números de linha!

se não foi inventado, alguém já inventou mais uma vez para que pudéssemos usá-lo bem:)

Nem todas as versões do BASIC necessário números de linha. QBasic, por exemplo, com o apoio etiquetas. Você poderia, então, saltar para aqueles com GOTO (ignorando de Dijkstra "Declaração Go To considerada prejudicial" para o momento).

A resposta já está acima. Paul Tomblin escreveu (com uma ressalva a zabzonk).
Na verdade, eu diria que qualquer resposta que não menciona "cartões perfurados" é incompleta, se menciona nem cartões perfurados nem Fortran, é errado. Posso dizer que este é definitivamente certo, porque meus pais ambos os cartões perfurados usados ??em uma base regular (que começou com Fortran 66 e 77), em seguida, migrou para o básico e COBOL na década de 80.

Nos primeiros dias, a maioria dos programas foram introduzidos com cartões perfurados. Os cartões perfurados foram geralmente entraram em sequência, usualmente uma instrução por cartão, com etiquetas (alvos JMP / JSR) ser um cartão de instrução separado.

Para editar o seu programa, você substituiu o cartão.

implementações mais tarde acrescentou um número de seqüência opcional na extremidade direita da linha, de modo que quando / se eles tem fora de ordem, eles poderiam ser resequenced por um leitor automático.

Fortran usado ambos os rótulos alvo numéricos à esquerda (col 1-5) e deixou um bloco reservado à direita (73-80) para a sequência ou comentário.

Quando BASIC foi inicialmente escrito, decidiu-se mover os números de seqüência para a esquerda, no campo rótulo do Fortran, e para permitir a substituição consumo de memória cartões anteriores ... como um modo de edição. Este foi destinado para o ambiente dev interativo, mas funcionou muito bem com cartões. E cartões foram usados ??em algumas implementações iniciais para uma variedade de razões.

Tenha em mente: Muitos computadores foram cartão-leitor e interface da impressora direita até o final da década de 1970. Mesmo tho' básico modo interativo estavam disponíveis, cartão perfurado programas básicos foram usados ??com freqüência. Uma vez que muitos simplesmente estavam se alimentando no IDE, eles trabalharam exatamente da mesma maneira. Incluindo a necessidade de um cartão de "Run" no final. Nesses casos, pode-se simplesmente alinhavar um cartão de correção e outro cartão Executar para executar novamente com uma variação em alguma variável; Da mesma forma, em programas complexos, simplesmente adicionando uma linha corrigida de um cartão antes da corrida era adequado para editar os problemas sem gastar um tempo precioso encontrar o próprio cartão errante.

Eu como a igreja robô em Futurama, nas paredes foram escritas coisas como

10 SIN
20 GOTO HELL

No Speccy você não poderia editar uma linha sem o número da linha.

eu encontrá-los muito útil quando o emparelhamento. Eu não tenho para apontar para uma linha quando meu par tem o teclado, posso apenas dizer, "na linha 74, não deve ser mesmo getMoreBeer ()?"

O editor original para DOS foi um utilitário maravilhoso chamado edlin . Você só pode editar uma única linha. Para tornar a vida ainda mais interessante em muitas versões do BASIC você pode digitar as linhas fora de ordem, linha 10, 20, 30, 25, 5, a execução seria por número da linha linha não pela ordem de aparecimento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top