tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 06БЛОК 1 — НЕМНОГО ИСТОРИИРЕВ. 1
Глава 06 · Немного истории

BASIC: номера строк, GOTO, дух домашних компьютеров

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

Откуда взялся BASIC

BASIC (Beginner's All-purpose Symbolic Instruction Code) появился в 1964 году в Дартмутском колледже — специально спроектированный как язык для обучения, максимально простой в освоении по сравнению с языками того времени. Настоящая массовость пришла в конце 1970-х — 1980-х, когда BASIC зашивали прямо в ПЗУ домашних компьютеров (Apple II, Commodore 64, ZX Spectrum и множество других) — компьютер при включении сразу показывал приглашение командной строки BASIC, без отдельной загрузки операционной системы в привычном сегодня смысле.

Номера строк — организация программы по числам

Каждая строка программы на классическом BASIC начиналась с числа — обычно с шагом в 10 (10, 20, 30...), намеренно оставляя промежутки для вставки новых строк между уже написанными без необходимости перенумеровывать всё остальное. Программа по умолчанию выполнялась в порядке возрастания номеров строк.

10 PRINT "СКОЛЬКО ТЕБЕ ЛЕТ?"
20 INPUT A
30 IF A < 18 THEN GOTO 60
40 PRINT "ТЫ ВЗРОСЛЫЙ"
50 GOTO 70
60 PRINT "ТЫ ЕЩЁ МОЛОД"
70 END

GOTO — единственный настоящий инструмент управления потоком

В раннем BASIC не было привычных сегодня структурных конструкций (циклов for/ while и условных блоков с чёткими границами, тема глав 15 дальше в книге) — почти вся логика ветвления и повторения строилась на команде GOTO номер_строки, безусловном переходе к указанной строке. Циклы делались вручную: условие проверялось, и при его выполнении программа "прыгала" обратно на более раннюю строку.

Почему GOTO стал печально известным

Программа, целиком построенная на прыжках по номерам строк, довольно быстро становится трудночитаемой — поток выполнения скачет туда-сюда без явной видимой структуры, усложняя понимание того, что вообще происходит и в каком порядке, особенно в длинных программах. В 1968 году исследователь Эдсгер Дейкстра опубликовал знаменитое письмо "Считать оператор GOTO вредным" (Go To Statement Considered Harmful), давшее толчок развитию структурного программирования — идеи, что программы должны строиться из чётко вложенных блоков (условия, циклы), а не из произвольных прыжков. Именно это направление развития привело к языку Pascal — теме следующей главы.

GOSUB/RETURN — прообраз функций

Отдельная команда GOSUB номер_строки работала как GOTO, но "запоминала", откуда был совершён переход — команда RETURN в конце вызываемого фрагмента кода возвращала выполнение туда, откуда был вызов. Это простейший, но узнаваемый прообраз функций (глава 16) — блока кода, который можно многократно "вызывать" из разных мест программы, не копируя его текст каждый раз заново.

Переменные — минимализм по необходимости

Ранние диалекты BASIC часто ограничивали имена переменных одной буквой или буквой с цифрой (A, B, A1) — не стилистическая прихоть, а следствие жёстких ограничений памяти домашних компьютеров той эпохи. Строковые переменные обычно отмечались знаком доллара в конце имени (A$) — явное указание типа данных прямо в имени переменной, поскольку строгой системы типов (тема, которая появится в главе 07 про Pascal и вернётся в главе 14 про Python) в раннем BASIC не было.

Прямой режим — прямой предок интерактивного Python

Забегая вперёд, к главе 13

Помимо запуска пронумерованной программы целиком, BASIC поддерживал прямой (immediate) режим — можно было напрямую набрать команду вроде PRINT 2+2 без номера строки и сразу увидеть результат, без сохранения и запуска отдельной программы. Это прямой концептуальный предок интерактивного режима Python (глава 13) — той самой возможности опробовать выражение сразу, не создавая отдельный файл со скриптом. Идея "мгновенной обратной связи от языка" не появилась вместе с современными языками — она была центральной идеей BASIC ещё полвека назад.

Наследие

Несмотря на заслуженную критику GOTO-ориентированного стиля, именно простота и немедленная обратная связь BASIC сделали программирование доступным для огромного поколения людей, у которых никогда не было бы доступа к профессиональным языкам и инструментам того времени. Прямые потомки того же духа доступности живы и сегодня — от Visual Basic до самой философии "код должен быть по возможности понятным и не требовать церемоний", которая через десятилетия отчётливо прослеживается в дизайне Python.

Что дальше

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

Глава06 — BASIC
Блок1 — Немного истории
Далее07 — Pascal
СтатусГотово · рев. 1
Предыдущая глава ← 05 · Компиляция vs интерпретация Следующая глава 07 · Pascal →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.