Почему ОСНОВНОЙ пронумеровал строки? [дубликат]

20
задан Community 23 May 2017 в 10:32
поделиться

15 ответов

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

>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 , которая изменит нумерацию вашего кода (и соответствующим образом скорректирует GOTO и GOSUB ).

Веселые времена!

26
ответ дан 29 November 2019 в 22:35
поделиться

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

1
ответ дан 29 November 2019 в 22:35
поделиться

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


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

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

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

2
ответ дан 29 November 2019 в 22:35
поделиться

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

edit 100

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

1
ответ дан 29 November 2019 в 22:35
поделиться

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

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

ВЫ БУДЕТЕ ПОЛУЧИТЬ:

WOOPS
MORE WHOOPS

Пробел 20 эффективно удалит эту строку.

1
ответ дан 29 November 2019 в 22:35
поделиться

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

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

то есть:

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

где он будет логическим 10 15 20

1
ответ дан 29 November 2019 в 22:35
поделиться

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

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

7
ответ дан 29 November 2019 в 22:35
поделиться

Они использовались как метки для 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/ (установка не требуется)

8
ответ дан 29 November 2019 в 22:35
поделиться

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

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

9
ответ дан 29 November 2019 в 22:35
поделиться

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

3
ответ дан 29 November 2019 в 22:35
поделиться

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

.
4
ответ дан 29 November 2019 в 22:35
поделиться

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

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

6
ответ дан 29 November 2019 в 22:35
поделиться

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

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

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

1
ответ дан 29 November 2019 в 22:35
поделиться

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

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

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

1
ответ дан 29 November 2019 в 22:35
поделиться

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

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

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

6
ответ дан 29 November 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: