Бейсик

С Сибирьска википедья
Айдать на коробушку Айдать на сыскальник

Бейсик (от англ. BASIC — Beginner's All-purpose Symbolic Instruction Code, «универсальный код символических инструкций для начинающих») — это высокоуровневый язык программирования, разработанный в 1960-х годах. Как следует из расшифровки аббревиатуры, язык изначально проектировался как доступный и простой инструмент для людей, не имеющих специальной подготовки в области информатики или высшей математики. Благодаря своей простоте, интерактивности и низкому порогу вхождения, Бейсик сыграл историческую роль в популяризации персональных компьютеров и массовом обучении программированию в 1970–1980-е годы.

История создания и развитие

Язык был разработан в середине 1960-х годов преподавателями Дартмутского колледжа (США) Джоном Кемени и Томасом Курцем при активном участии студентов в рамках проектной деятельности. Технической предпосылкой для его создания стало развитие систем разделения времени, которые позволили подключать множество терминалов к одному центральному мейнфрейму. В колледжи начали поступать студенты гуманитарных и естественнонаучных специальностей (например, биологи), для которых существовавшие на тот момент языки (такие как Фортран или Алгол) были избыточно сложными, так как требовали понимания дискретной математики, алгоритмизации и строгих форматов ввода-вывода.

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

Настоящий бум популярности Бейсика пришелся на 1970-е годы с появлением первых микрокомпьютеров. В 1975 году Билл Гейтс и Пол Аллен разработали интерпретатор Altair BASIC для компьютера Altair 8800, что стало коммерческим триумфом и фундаментом для создания корпорации Microsoft. К 1979 году ранние персональные компьютеры (включая IBM PC) поставлялись с интерпретатором языка, встроенным непосредственно в постоянное запоминающее устройство (ПЗУ/ROM). При включении такого компьютера пользователь попадал не в традиционную операционную систему с графическим интерфейсом или командной строкой, а непосредственно в среду интерпретатора Бейсик, который сам выполнял функции базовой операционной системы.

В 1980-е годы отсутствие единого стандарта привело к колоссальной фрагментации: практически каждая модель персонального компьютера имела свой собственный диалект языка. Производители внедряли в трансляторы специфические команды для работы с аппаратными прерываниями, физической памятью и выводом графики, смешивая высокоуровневые конструкции с низкоуровневыми инструкциями, близкими к ассемблеру.

Попытки упорядочить этот хаос предпринимались разработчиками компиляторов. В частности, компания Borland выпустила продукт Turbo Basic, который привнес в язык черты структурного программирования, сблизив его с языком Паскаль. В 1990-е годы корпорация Microsoft представила Visual Basic — мощную объектно-ориентированную среду для визуальной разработки. Несмотря на сохранение слова «Basic» в названии, Visual Basic (и его последующая инкарнация Visual Basic .NET) стал принципиально иным языком с полноценной поддержкой классов, объектов и структурной парадигмы.

Синтаксис и парадигмы программирования

Классический Бейсик 1960–1980-х годов представляет собой неструктурированный императивный язык. Фундаментальной синтаксической особенностью ранних диалектов являлась строгая нумерация каждой строки исходного кода (например, 10, 20, 30).

Нумерация была вынужденной мерой, так как программирование осуществлялось с помощью строчных редакторов (оконные визуальные редакторы кода появились значительно позже). Программист не видел всего текста программы целиком. Для редактирования или добавления команды необходимо было вводить номер строки. Именно поэтому строки традиционно нумеровались с шагом 10: это оставляло программисту возможность вставить новые инструкции (например, с номерами 11, 12, 13) между существующими строками в процессе отладки.

Концептуальный пример типичной программы на раннем Бейсике:

  10 CLS
  20 PRINT "HELLO WORLD"
  30 INPUT A$
  40 IF A$ = "EXIT" THEN 60
  50 GOTO 20
  60 END
  70 RUN

Основные архитектурные особенности языка:

  • Переменные и типы данных. Имена переменных в классическом Бейсике были предельно короткими (обычно одна латинская буква, либо буква и одна цифра, например, A1 или C3). Тип данных не декларировался отдельной командой, а задавался специальным суффиксом в самом имени переменной. Например, символ доллара ($) обозначал строковую переменную, а знак процента (%) — целочисленную. Позднее был добавлен универсальный тип Variant.
  • Ввод и вывод. Язык максимально упростил эти операции. Оператор PRINT позволял выводить текст и значения без необходимости расписывать сложные форматы отображения (что было обязательным в Фортране). Оператор INPUT отвечал за получение данных от пользователя.
  • Ветвления и циклы. Классическая конструкция IF ... THEN в ранних версиях не имела блока ELSE (иначе). Если условие выполнялось, программа просто совершала переход на указанный номер строки. Для итераций применялся цикл со счетчиком FOR ... NEXT.
  • Подпрограммы. В языке отсутствовали именованные функции с изолированной областью видимости и механизмом передачи параметров. Подпрограмма представляла собой просто пронумерованный блок кода в конце файла. Вызов осуществлялся оператором GOSUB (переход к подпрограмме по номеру строки), а возврат — оператором RETURN. Рекурсия не поддерживалась.
  • Управление потоком. Широчайшее применение находил оператор безусловного перехода GOTO. В сложных программах его массовое использование приводило к полному запутыванию логики алгоритма.
  • Признак конца оператора. В отличие от языков семейства Алгол или Си, окончанием команды служил не специальный символ (например, точка с запятой), а физический конец строки.

Критика и недостатки

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

Доминирование оператора безусловного перехода GOTO породило явление, получившее в программистском сленге название «макаронное программирование» (spaghetti code) — логика программы была перепутана, как клубок макарон, и переход от одной части алгоритма к другой происходил хаотично.

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

Сферы применения

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

В СССР язык также получил широкое распространение. Выпускалось множество локализованных советских диалектов для отечественных микрокомпьютеров (например, серии ЕС ЭВМ). Академик Андрей Ершов активно продвигал внедрение Бейсика в школьную образовательную программу. Даже советские программируемые микрокалькуляторы частично перенимали логику этого языка для написания примитивных игровых и математических алгоритмов.

В современной индустрии классический Бейсик полностью выведен из эксплуатации. Однако его синтаксические потомки (в первую очередь Visual Basic for Applications — VBA) до сих пор используются в качестве стандарта де-факто для написания макросов и автоматизации бизнес-процессов в офисных пакетах корпорации Microsoft.

См. также

Дракон (язык программирования) Кобол

Смотреть видео