Зачем нам вообще нужны номера строк?[закрыто]

StackOverflow https://stackoverflow.com/questions/541421

  •  23-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

У него давняя история.

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

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

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

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

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

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

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

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

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

И теперь программа будет работать корректно.

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

ВОЗ?" были бы изобретатели, Кемени и Курц.

Прочитав ответы, я проверил запись в Википедии для «Дартмутского БЕЙСИКА» и был удивлен, узнав

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

Итак, похоже, что Пол Томблин «понял суть».

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

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

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

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

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

Я предполагаю, что это пришло из ассемблера, где каждая инструкция имеет адрес, по которому может перейти другая инструкция.

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

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

В новых диалектах Basic больше нет необходимости в номерах строк.

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

GOTO 10 

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

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

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

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

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

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

Не все версии BASIC требуют номеров строк.QBasic, например, поддерживал метки.Затем вы можете перейти к тем, у которых есть GOTO (на данный момент игнорируя фразу Дейкстры «Перейти к заявлению, считающемуся вредным»).

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

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

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

Для редактирования вашей программы вы заменили карту.

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

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

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

Иметь ввиду:В конце 1970-х многие компьютеры имели интерфейс кард-ридера и принтера.Несмотря на то, что основы интерактивного режима были доступны, часто использовались базовые программы с перфокартами.Поскольку многие просто подключались к IDE, они работали точно так же.В том числе и необходимость карты «Бег» в конце.В таких случаях можно просто прикрепить карту исправления и еще одну карту «Выполнить», чтобы повторить эксперимент с изменением какой-либо переменной;Аналогичным образом, в сложных программах простого добавления исправленной строки карты перед запуском было достаточно, чтобы устранить проблемы, не тратя драгоценное время на поиск самой ошибочной карты.

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

10 SIN
20 GOTO HELL

На Speccy вы не могли редактировать строку без номера строки.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top