Объявление в газете: «Для ухода за пожилым программистом требуется приятная женщина, говорящая на FORTRAN, BASIC и C++».
Если вам необходимо использовать PROLOG, то подождите пока он будет «проглочен» языком BASIC, этим питоном, пожирающим все, что лежит на его пути. BASIC уже закончил «переваривать» язык Pascal со всеми его управляющими структурами. После небольшой паузы и нескольких отрыжек он будет в состоянии «слопать» PROLOG , так что мы увидим варианты BASIC со встроенным механизмом доказательство теорем методом резолюций Тогда наступит время подумать о возможном переходе на PROLOG.
Р.Форсайт
История создания: Дартмутский проект
BASIC (Beginner’s All-purpose Symbolic Instruction Code — Многоцелевой язык символьных инструкций для начинающих) был разработан в начале 1960-х годов профессорами Дартмутского колледжа Джоном Кемени и Томасом Куртцем.
В то время компьютеры были огромными и дорогими, а работа на них велась в пакетном режиме (подготовил перфокарты — жди результат). Целью создателей было дать студентам не-технических специальностей простой инструмент для работы с ЭВМ через новую систему разделения времени DTSS (Dartmouth Time Sharing System). По замыслу, изучение языка не должно было занимать больше двух часов.
Ключевая дата: В 4 часа утра 1 мая 1964 года в подвале College Hall была запущена первая интерактивная версия BASIC — несколько коротких программ выполнились одновременно, доказав, что система работает.
Интересный факт: Первая опубликованная программа на Dartmouth BASIC выглядела так (в ней даже не требовались номера строк — они появились позже):
LET X = (7 + 8) / 3
PRINT X
END
Сама идея «живого» ввода и мгновенного получения результата была революционной для 1964 года.
От мейнфреймов к микрокомпьютерам (Altair BASIC)
До середины 1970-х BASIC был уделом университетов и мини-ЭВМ. Всё изменилось в 1975 году после выхода Popular Electronics с обложкой Altair 8800.
История гласит: Билл Гейтс и Пол Аллен прочитали статью об Altair и поняли, что компьютеры станут массовыми. Они позвонили в MITS и соврали, что у них уже есть работающий интерпретатор BASIC (на деле они только начали разработку). В результате родился Altair BASIC (впоследствии Microsoft BASIC). Интерпретатор занимал всего 4 КБ памяти и помещался на одной микросхеме ПЗУ, изменив представление о том, что программа может быть встроена прямо в компьютер. Этот продукт стал первым коммерческим успехом компании Micro-Soft (тогда ещё с дефисом).
Именно успех Altair BASIC спровоцировал бум клонов: почти каждая домашняя ЭВМ конца 70-х — начала 80-х (Apple II, Commodore PET, TRS-80, ZX Spectrum) поставлялась со своим диалектом BASIC, вшитым в ПЗУ.
Особенности развития (1960–1978)
Хотя язык развивался, процесс его унификации шёл медленно. Первый стандарт ANSI появился только в 1978 году — к тому моменту компании уже вовсю выпускали свои версии, несовместимые между собой.
Почему возникла несовместимость?
Программы, написанные на AppleSoft BASIC (Apple II), не могли работать на IBM BASIC и наоборот. Причина — каждый производитель адаптировал язык под конкретную платформу, добавлял собственные графические и звуковые команды и часто использовал «токенизированное» хранение, когда команды заменялись байтами для экономии памяти. Кроме того, в ранних версиях (Apple DOS) программа загружалась целиком в память, в то время как более продвинутые интерпретаторы (например, в ZX Spectrum) использовали постраничную подгрузку кода, что отражалось на поведении циклов и условных переходов.
Уровень и философия языка
BASIC прошёл долгий путь от «игрушки для студентов» до языка высокого уровня (1970-е). Фраза «BASIC уже закончил переваривать Pascal» (Р. Форсайт) отражает реальную эволюцию: язык постепенно впитывал структурные конструкции (процедуры, функции, нормальные циклы), которые изначально в нём отсутствовали.
Структура программы (в современных версиях):
- Программу следует начинать с
REM(комментарий), содержащего название, автора, дату. - Номера строк — опциональны. Если нужен
GOTO(что противоречит хорошему стилю), используйте метки. - Допустимо несколько операторов в строке через двоеточие
:. - Блоки
DATAдля хранения предопределённых данных лучше располагать передEND.
Переменные и типы данных
Имя переменной должно начинаться с латинской буквы. Остальные символы — буквы, цифры, иногда точка. Длина — до 255 символов, но значимы первые 40.
Суффиксы, определяющие тип (в Microsoft BASIC):
| Суффикс | Тип | Примечание |
|---|---|---|
$ | Строка | до 255 символов |
% | Целое | -32 767 … 32 767 |
! | Обычная точность | 6 значащих цифр |
# | Удвоенная точность | 16 значащих цифр |
По умолчанию (без суффикса) — одинарная точность (!). Переменной можно присвоить значение через LET или без него (a = 5).
Массивы объявляются DIM. Пример: DIM A(3, 3) — двумерный массив 4×4 (индексы от 0). Границы могут задаваться переменными (диалектно).
Операторы и выражения
Арифметические: +, -, *, /, \ (целочисленное деление), ^ (возведение в степень), MOD (остаток от деления).
Отношений: =, <, >, <=, >=, <>. Используйте => как альтернативу >=, где поддерживается.
Логические (в порядке убывания приоритета):NOT → AND → OR → XOR → IMP → EQV. (Порядок в различных реализациях может незначительно отличаться, всегда уточняйте по документации.)
Математические функции:
SQR,SIN,COS,TAN,ATN,EXP,LOG,ABS,FIX,INT,SGN,RND(x)PI— встроенная константа (работает в QBasic, QuickBasic; в других диалектах может отсутствовать)RND(x)возвращает псевдослучайное число от 0 до 1; приx > 0— новое, приx = 0— предыдущее, приx < 0— последовательность всегда начинается с одного и того же значения.
Управляющие конструкции
END,STOP,WAIT$— завершение/приостановкаGOSUB метка/RETURN— вызов подпрограммыGOTO метка— безусловный переходIF условие THEN операторы [ELSE операторы] END IFFOR var = start TO end [STEP step] ... NEXT varON выражение GOTO/GOSUB список_метокON ERROR GOTO— обработка ошибок
Ввод-вывод и графика
INPUT,PRINT,PRINT USING,LPRINT— на экран/принтер/файлOPEN,CLOSE,INPUT #,PRINT #— файловые операцииREAD/DATA— чтение встроенных данныхCLS,LOCATE,COLOR,PSET,LINE,CIRCLE,PAINT,DRAW— графические операторы (диалект‑зависимы; проверяйте наличие)SOUND,BEEP— звук (диалект‑зависимо)
Примечание: В ранних версиях (например, в Altair BASIC) не было полноценной работы с файлами, а графика отсутствовала вовсе.
Строковые функции
ASC, CHR$, LEN, MID$, LEFT$, RIGHT$, STR$, VAL.
Дополнительные возможности
POKE адрес, значениеиPEEK(адрес)— прямой доступ к памяти (требует знания архитектуры)CALL адрес— вызов машинного кода (например, подпрограммы на ассемблере)DEF FN— определение простых числовых функцийSWAP— обмен значений двух переменных (поддерживается не везде)
Коды ошибок
Код последней ошибки обычно хранится в специальной переменной (например, ERR или PEEK(222)). Во многих реализациях он доступен после оператора ON ERROR. В AppleSoft BASIC код ошибки считывался через PEEK(222) и мог принимать значения, такие как 90 (NEXT без FOR), 133 (деление на ноль), 163 (ошибочный тип) и 254 (введите заново). Конкретные значения зависят от диалекта.
Реализации и диалекты
Зарубежные:
- Dartmouth BASIC (1964) — компилируемый, основа всех диалектов.
- Altair BASIC (Microsoft, 1975) — 4 КБ, интерпретатор для первого ПК.
- Integer BASIC (Apple, Возняк за неделю) — только целые числа.
- AppleSoft BASIC (Microsoft) — основной язык для Apple II, поддержка графики и строковых массивов.
- Sinclair BASIC — для ZX Spectrum/ZX80; операторы вводились одной клавишей; 88 ключевых слов, в ПЗУ 16К/48К ZX Spectrum; поддержка команд для графики, звука, портов.
- GW-BASIC — интерпретатор до MS-DOS 5.0.
- QuickBASIC / QBASIC — компилируемый / бесплатный интерпретатор в DOS 5+.
- Turbo BASIC (Borland) — быстрый компилятор.
- True BASIC — попытка создать стандарт ANSI (1980-е).
- Visual Basic / VB.NET / VBA / VBScript.
- FreeBASIC, Gambas, DarkBASIC.
Советские (информация нуждается в подтверждении):
- Вильнюсский Бейсик — БК-0010.
- Тужилинский Бейсик — ДЗ-28.
Почему BASIC остаётся актуальным?
Сегодня он живёт в виде Visual Basic for Applications (макросы Excel, Word). Его влияние заметно в таких языках, как Python (простой синтаксис, интерактивный режим). Исторически BASIC выполнил свою миссию: открыл компьютеры для миллионов людей — и не только в США, но и в СССР.