Язык, с которого началось программирование для миллионов людей, у которых компьютер впервые появился дома, а не в исследовательской лаборатории. Понимание его логики — не просто ностальгия, а честный взгляд на то, откуда растут корни удобства современных языков.
BASIC (Beginner's All-purpose Symbolic Instruction Code) появился в 1964 году в Дартмутском колледже — специально спроектированный как язык для обучения, максимально простой в освоении по сравнению с языками того времени. Настоящая массовость пришла в конце 1970-х — 1980-х, когда BASIC зашивали прямо в ПЗУ домашних компьютеров (Apple II, Commodore 64, ZX Spectrum и множество других) — компьютер при включении сразу показывал приглашение командной строки BASIC, без отдельной загрузки операционной системы в привычном сегодня смысле.
Каждая строка программы на классическом BASIC начиналась с числа — обычно с шагом в 10 (10, 20, 30...), намеренно оставляя промежутки для вставки новых строк между уже написанными без необходимости перенумеровывать всё остальное. Программа по умолчанию выполнялась в порядке возрастания номеров строк.
В раннем BASIC не было привычных сегодня структурных конструкций (циклов for/
while и условных блоков с чёткими границами, тема глав 15 дальше в книге) —
почти вся логика ветвления и повторения строилась на команде GOTO номер_строки,
безусловном переходе к указанной строке. Циклы делались вручную: условие проверялось, и при
его выполнении программа "прыгала" обратно на более раннюю строку.
Программа, целиком построенная на прыжках по номерам строк, довольно быстро становится трудночитаемой — поток выполнения скачет туда-сюда без явной видимой структуры, усложняя понимание того, что вообще происходит и в каком порядке, особенно в длинных программах. В 1968 году исследователь Эдсгер Дейкстра опубликовал знаменитое письмо "Считать оператор GOTO вредным" (Go To Statement Considered Harmful), давшее толчок развитию структурного программирования — идеи, что программы должны строиться из чётко вложенных блоков (условия, циклы), а не из произвольных прыжков. Именно это направление развития привело к языку Pascal — теме следующей главы.
Отдельная команда GOSUB номер_строки работала как GOTO, но "запоминала", откуда
был совершён переход — команда RETURN в конце вызываемого фрагмента кода
возвращала выполнение туда, откуда был вызов. Это простейший, но узнаваемый прообраз
функций (глава 16) — блока кода, который можно многократно "вызывать" из разных мест
программы, не копируя его текст каждый раз заново.
Ранние диалекты BASIC часто ограничивали имена переменных одной буквой или буквой с цифрой (A, B, A1) — не стилистическая прихоть, а следствие жёстких ограничений памяти домашних компьютеров той эпохи. Строковые переменные обычно отмечались знаком доллара в конце имени (A$) — явное указание типа данных прямо в имени переменной, поскольку строгой системы типов (тема, которая появится в главе 07 про Pascal и вернётся в главе 14 про Python) в раннем BASIC не было.
Помимо запуска пронумерованной программы целиком, BASIC поддерживал прямой (immediate)
режим — можно было напрямую набрать команду вроде PRINT 2+2 без номера
строки и сразу увидеть результат, без сохранения и запуска отдельной программы. Это
прямой концептуальный предок интерактивного режима Python (глава 13) — той самой
возможности опробовать выражение сразу, не создавая отдельный файл со скриптом.
Идея "мгновенной обратной связи от языка" не появилась вместе с современными языками —
она была центральной идеей BASIC ещё полвека назад.
Несмотря на заслуженную критику GOTO-ориентированного стиля, именно простота и немедленная обратная связь BASIC сделали программирование доступным для огромного поколения людей, у которых никогда не было бы доступа к профессиональным языкам и инструментам того времени. Прямые потомки того же духа доступности живы и сегодня — от Visual Basic до самой философии "код должен быть по возможности понятным и не требовать церемоний", которая через десятилетия отчётливо прослеживается в дизайне Python.
Следующая глава — язык, родившийся как прямая реакция на проблемы, честно обозначенные в этой главе: Pascal и идея структурного программирования, дисциплинирующая как раз тот хаос, который создавал бесконтрольный GOTO.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.