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

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

Когда вы пишете что-то в BASIC, вам необходимо использовать номера строк. Как:

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

Но мне интересно: кто придумал использовать номера строк? Это такая неприятность, и она оставила довольно "эхо" в развивающемся мире (каламбур)!

4b9b3361

Ответ 1

В то время идея заключалась в том, что вы легко можете добавить код в своей программе, используя соответствующий номер строки. Вот почему каждый использует номера строк 10, 20, 30.. так что остается место:

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

На первых интерфейсах был доступен BASIC, не было блестящего редактора, даже не похоже на vi или emacs (или DOS edit, heh). Вы можете распечатать свою программу только на консоли, а затем добавить новые строки или заменить их, указав сначала номер строки. Вы не могли перемещаться по "файлу" (программа хранилась в памяти, хотя вы могли сохранить копию на диске) с помощью курсора, как вы привыкли в настоящее время.

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

Ответ 2

Раньше существовала такая вещь, как VDT (терминал видеодисплея), мы старожилы, запрограммированные на перфокартах. Перфорированные карточки зарезервировали столбцы 72-80 для порядковых номеров - если вы уронили колоду карт, и все они вышли из строя, вы можете поместить колоду в сортировщик карт, который будет заказывать карты на основе этих порядковых номеров. Во многих отношениях номера строк BASIC были похожи на эти порядковые номера.

Еще одно преимущество в мире BASIC заключается в том, что в прежние времена BASIC интерпретировался так, как он был запущен. Использование меток, а не последовательных номеров строк для веток, потребует первого прохода, чтобы забрать все метки и их местоположения, где, как если бы вы использовали номера строк, интерпретатор знает, нужно ли начинать сканирование вперед или назад для пункта назначения.

Ответ 3

Он имеет историю с коротким периодом.

Нумерация строк на самом деле происходит от Dartmouth BASIC, которая была оригинальной версией языка программирования BASIC и была неотъемлемой частью так называемой системы распределения времени Дартмута. У DTSS была рудиментарная среда разработки, которая была не более чем интерактивной командной строкой.

Таким образом, каждая строка, введенная внутри этой "IDE" и начинающаяся с номера строки, была добавлена ​​в программу, заменив любую ранее сохраненную строку на тот же номер; что-то еще считалось командой DTSS и немедленно выполнялось.

Ответ 4

В тот же день, когда у вас не было 2-мерного редактора, такого как emacs или vi. Все, что у вас было, это командная строка.

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

Если вы были богом Unix, вы могли бы сделать это с помощью ed или что-то еще, но для BASIC на C-64, VIC-20 или TRS-80 вы просто перезаписали бы линию.

Итак, сеанс может выглядеть так:

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

И теперь программа будет работать правильно.

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

Ответ 5

"Кто?" были бы изобретателями, Кемейни и Курцем.

После прочтения ответов я проверил запись в Википедии для "Dartmouth BASIC" и с удивлением узнал

Первый компилятор был подготовлен до того, как система разделения времени была готова. Известный как CardBASIC, он предназначался для стандартной системы пакетной обработки на основе карточного ридера.

Итак, похоже, что Пол Томблин "получает квадрат".

Ответ 6

Они возникли в FORTRAN, из которого был получен BASIC. Однако в FORTRAN нужны только строки, на которые ссылаются другие строки (например, цели GOTO). В BASIC они использовали вторичное использование, которое позволяло редактировать определенные строки.

Ответ 7

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

Система BASIC, которая была разработана для достижения этой цели, показала терминалы печати Teletype ASR-33 (и более поздние). При подключении к ОС, поддерживающей временные интервалы, они позволяли редактировать и запускать программы BASIC в интерактивном режиме (в отличие от работы с перфокартами), но они не адресуются курсору. Номера строк были удобными для новичков, как для указания порядка программных операторов, так и для однозначного редактирования в отсутствие редактора экрана. В статье Wikipedia для "линейного редактора" объясняется далее, и любой, кто когда-либо пытался использовать редактор строк (например, Un * x 'ed'), может оценить, почему Куртц и Кемени следует поблагодарить за то, что они не хотят, чтобы новичок начал изучать загадочную последовательности команд, необходимые для редактирования текста таким образом.

Ответ 8

Я предполагаю, что это происходит от ассемблера, где каждая команда имеет адрес, к которому может быть добавлена ​​другая команда.

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

Наконец, в старые добрые времена не было никаких причудливых редакторов. Единственным "редактором" был простой интерфейс командной строки, который обрабатывал все, начиная с числа, являющегося частью программы, и всего остального в качестве команд, которые должны выполняться немедленно. Наиболее ярким примером может служить Commodore 64.

Новые диалекты Basic не требуют больше номеров строк.

Ответ 9

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

Каждая перфокарта имела свой номер. Для этого было несколько причин; от чисто поддержания их в порядке, до определения последовательности исполнения. Каждая карта была одной строкой кода (на сегодняшний день). Так как в то время не было таких конструкций, как если бы.. то есть, или какой-либо другой вариант подобной последовательности, нужно было каким-то образом определить последовательность выполнения. Поэтому были введены заявления GOTO. Они были основой петель. Термин "код спагетти" также исходит из этого периода времени, поскольку плохо написанный код был относительно трудно следовать, например, спагетти на пластине:)

Ответ 10

в Basic, если у вас не было номера строки, как вы можете преформировать

GOTO 10 

Это был способ прыгнуть в линию, хороший способ, который был найден... более 20 лет назад!

сегодня, линии помогают нам ловить ошибки/исключения, потому что отладочные механизмы сделаны, чтобы отправить нам сообщение, что мы получили исключение в строке xxx, и мы сразу же переходим к нему!

представьте себе мир без номеров строк... как можно репортера оплатить без строк?

"Теперь, когда вы знаете роман, вам нужно написать сводку с не более чем 50 строками"

запомнить это? Даже в школе мы узнаем о номерах строк!

если он не был изобретен, кто-то уже изобрел снова, чтобы мы могли использовать его красиво:)

Ответ 11

Не все версии базовых номеров BASIC. QBasic, например, поддерживает метки. Затем вы можете перейти к тем, у кого есть GOTO (игнорируя Dijkstra "Go To Statement, считающееся вредным" на данный момент).

Ответ 12

Ответ уже выше. Пол Томблин написал (с оговоркой к zabzonk).

На самом деле, я бы сказал, что любой ответ, который не упоминает "перфокарты", является неполным, если в нем не упоминаются ни перфокарты, ни FORTRAN, это неправильно. Я могу сказать, что это окончательно правильно, потому что мои родители использовали перфокарты на регулярной основе (они начинались с FORTRAN 66 и 77), а затем мигрировали в Basic и COBOL в 80-е годы.

Ответ 13

В первые дни большинство программ были введены перфокартами. Перфокартные карточки обычно вводились последовательно, обычно одна инструкция на карточку, с ярлыками (цели JMP/JSR), являющимися отдельной инструкцией.

Чтобы изменить свою программу, вы заменили карту.

В последующих реализациях добавлен необязательный порядковый номер в правом конце строки, поэтому, когда/если они вышли из строя, они могут быть перенастроены автоматическим считывателем.

Fortran использовал как числовые метки-метки слева (col 1-5), так и левый зарезервированный блок справа (73-80) для последовательности или комментариев.

Когда BASIC был изначально написан, было решено переместить порядковые номера влево, в поле метки FORTRAN и разрешить перезапись памяти памяти предыдущих карт... в качестве режима редактирования. Это было предназначено для интерактивной среды разработчиков, но так же хорошо работало с картами. И карты использовались в некоторых ранних реализациях по разным причинам.

Имейте в виду: многие компьютеры были с кард-ридером и интерфейсом принтера вплоть до конца 1970-х годов. Даже в "базовых интерактивных режимах" часто использовались базовые программы с перфокартами. Поскольку многие просто кормились в IDE, они работали точно так же. Включая в конце карту "Запуск". В таких случаях можно просто прикрепить карточку коррекции и другую карточку запуска, чтобы повторить вариацию на некоторой переменной; аналогично, в сложных программах, просто добавляя исправленную строку карты до того, как запуск был достаточным для устранения проблем, не тратя драгоценное время на поиск ошибочной карты.

Ответ 14

Мне нравится робот-церковь на Футураме, на стенах были написаны такие вещи, как

10 SIN
20 GOTO HELL

В Speccy вы не можете редактировать строку без номера строки.

Ответ 15

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

Ответ 16

Оригинальный редактор для DOS был замечательной утилитой, называемой edlin. Вы можете редактировать только одну строку. Чтобы сделать жизнь еще более интересной во многих версиях BASIC, вы можете набрать строки не по порядку, строки 10, 20, 30, 25, 5, выполнение будет по номеру строки не по порядку появления.