Подтвердить что ты не робот

Почему у BASIC были пронумерованные строки?

Возможный дубликат:
Почему мы вообще беспокоили номера строк?

Мне интересно, почему ранние версии языка программирования BASIC имели нумерацию строк, например:

42 PRINT "Hello world!"

Текстовые редакторы тогда не имели нумерации строк?

EDIT: Да, я знаю, что они используются для GOTO, но почему? Я имею в виду, что ярлыки были слишком дорогостоящими для вычислений?

4b9b3361

Ответ 1

У многих микрокомпьютеров был встроенный интерпретатор BASIC в ROM, который начинался с загрузки. Проблема заключалась в отсутствии текстового редактора или файловой системы. У вас было интерактивное приглашение сделать все. Если вы хотите вставить строку кода, вы просто набрали ее, начиная с номера строки. Он вставляет его в правильное место в вашем коде. например:

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

(В этом примере > это приглашение BASIC)

Если вы хотите стереть строку, вы должны ввести что-то вроде ERASE 20. Некоторые действительно фантастические системы дали вам редактор строк (т.е. EDIT 10) И если вы не планировали номера строк и не закончили (как вставить строку между 10 и 11?), Некоторые системы предоставили вам команду RENUM, которая изменила бы нумерацию вашего кода (и настроила GOTOs и GOSUBs соответственно).

Веселое время!

Ответ 2

Первоначальная нумерация строк BASIC была на самом деле неотъемлемой частью языка и использовалась для управления потоком.

Команды GOTO и GOSUB берут линию и используют ее для управления потоком. Это было распространено тогда (хотя оно и отчаивалось сейчас).

Ответ 3

Они использовались в качестве меток для GOTO и GOSUB

Вот так:

10 PRINT "HELLO WORLD"
20 GOTO 10

В некоторых ранних версиях BASIC не было названных ярлыков

Они также требовались, если вы хотели вставить строку между двумя существующими строками кода, потому что в первые дни у вас не было полнотекстовых редакторов. Все должно было быть введено в "интерактивном" интерпретаторе.

Итак, если вы набрали:

15 PRINT "AND THE UNIVERSE"

Программа станет следующей:

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

Когда у вас закончились номера строк, вы можете запустить инструмент "Перенумерация", чтобы перенумеровать все строки в вашей программе, но в самые ранние дни Commodore 64 и других домашних компьютеров у нас даже не было этого, поэтому вам придется перенумеровать вручную. Вот почему вам пришлось оставить пробелы в 10 или более номеров в строке, чтобы вы могли легко добавить линии между ними.

Если вы хотите попробовать интерпретатор Commodore 64, ознакомьтесь с этим эмулятором C64, написанным во Flash: http://codeazur.com.br/stuff/fc64_final/ (не требуется установка )

Ответ 4

В BASIC номера строк обозначают последовательность.

Кроме того, многие старые редакторы не для файлов, а просто строки ( "редакторы строк", например ed, стандартный редактор). Путем их нумерации вы знали, на какой линии вы работали.

Ответ 5

В тот же день на всех языках были порядковые номера, все было на перфокартах. На карту была одна строка. Пакеты карт составили вашу программу.

Когда вы уронили карты, вы поместили их в сортировщик карт, который использовал эти порядковые номера.

И, конечно, на них ссылались конструкторы потока управления.

Ответ 6

Простой google показывает, что википедия должна сказать об этом:

Номера строк были обязательным элементом синтаксиса на некоторых старых языках программирования, таких как GW-BASIC. [2] Основная причина этого в том, что в большинстве операционных систем в то время не было интерактивных текстовых редакторов; поскольку интерфейс программиста обычно ограничивался редактором строк, номера строк обеспечивали механизм, с помощью которого конкретные ссылки в исходном коде могли быть указаны для редактирования, и с помощью которых программист мог вставить новую строку в определенную точку. Номера строк также предоставляют удобное средство для различения кода, который необходимо ввести в программу, и команд, которые должны выполняться сразу же при вводе пользователем (которые не имеют номеров строк).

Ответ 7

На C64 не было даже реального редактора (по крайней мере, встроенного). Чтобы отредактировать часть программы, вы бы сделали что-то вроде LIST 100-200, и тогда вы сможете редактировать только те строки, которые в настоящее время отображаются на экране (без прокрутки вверх!)

Ответ 8

Они были ярлыками для операторов, чтобы вы могли GOTO номер строки. Число операторов не обязательно должно совпадать с номерами физических строк в файле.

Ответ 9

Номера линий использовались в потоке управления. Не было названных подпрограмм. Вы должны были использовать GOSUB 60, например, для вызова подпрограммы, начинающейся со строки 60.


В вашем обновлении не все языки имели метки, но все языки имели номера строк за один раз. В свое время все было перфокартами. BASIC был одним из первых интерактивных языков, где вы могли набрать что-то и немедленно ответить. Номера линий по-прежнему были текущей технологией.

Ярлыки являются дополнительными расходами. Вы должны следить за корреляцией между символической меткой и кодом или данными, к которым она относится. Но если каждая строка имеет номер строки (и если вся передача операторов потока управления всегда относится к началу строки), вам не нужна отдельная таблица символов.

Также имейте в виду, что оригинальным интерпретаторам BASIC не нужна таблица символов для переменных: было 26 переменных с именем A-Z. Некоторые из них были сложными и имели An-Zn. Некоторые из них очень причудливы и добавили различие между строкой, целым числом и плавающей точкой, добавив после переменной "$" или "%". Но таблица символов не требовалась.

Ответ 10

IIRC, номера строк в основном использовались в качестве меток для операторов GOTO и GOSUB, поскольку в некоторых (большинство?) вариантах BASIC не было никакого способа обозначить раздел кода.

Ответ 11

Они также использовались редактором, то есть вы сказали:

edit 100

для редактирования строки 100.

Ответ 12

Как указывали другие, эти номера строк использовались как часть подпрограмм.

Конечно, есть причина, по которой это больше не делается. Представьте, если вы скажете GOTO 20 на строке 10, а затем позже поймете, что вам нужно написать еще 10 строк кода после строки 10. Внезапно вы разбиваете против 20, поэтому вам нужно либо сдвинуть свою подпрограмму дальше ( более высокие номера) и изменить значение GOTO, или вам нужно написать другую подпрограмму, которая скачет дальше в коде.

Другими словами, это стало кошмаром истинного кода спагетти, и это не забавно поддерживать.

Ответ 13

У некоторых редакторов был только "перезаписываемый" режим и режим "вставки". Это сделало редактирование существующего кода чрезвычайно болезненным. Добавив эту функцию номера строки, вы могли бы исправить существующий код из любого места в файле:

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

Поскольку номера строк не нужно было заказывать в файле.

Ответ 14

Он был введен в командной строке во многих случаях (или был на моем старом Commodore 64), поэтому не всегда мог быть текстовый редактор, или если это было, это было довольно просто.

Кроме того, вам нужно будет делать GOTO и т.п., а также вставлять строки между другими.

т

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

где он пойдет в логическом режиме 10 15 20

Ответ 15

Номера строк были ЧАСТЬЮ языка, в некоторых ОЧЕНЬ ранних, даже ОС была именно этими простыми строками. Все, что у вас было, было одной строкой за раз, чтобы манипулировать. Попробуйте написать систему учета с использованием программных файлов 1-4k и разделить ее по размеру, чтобы сделать что-то полезное. Для редактирования вы использовали номера строк, чтобы указать, что вы редактировали. Итак, если вы ввели как:

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

ВЫ ДОЛЖНЫ ПОЛУЧИТЬ:

WOOPS
MORE WHOOPS

Заготовка 20 будет эффективно удалять эту строку.