GW-BASIC
GW-BASIC — это диалект языка программирования Бейсик (BASIC), разработанный компанией Microsoft и распространявшийся в составе операционной системы MS-DOS и ранних версий IBM PC DOS. Представлял собой интерпретатор, позволяющий создавать и выполнять программы непосредственно в среде командной строки, и был одной из наиболее распространённых сред для обучения программированию и написания несложных прикладных программ на персональных компьютерах в 1980-х — начале 1990-х годов.
История
Предпосылки создания
В конце 1970-х годов компания Microsoft, возглавляемая Биллом Гейтсом и Полом Алленом, разработала интерпретатор языка BASIC для микрокомпьютера Altair 8800. Впоследствии этот интерпретатор был адаптирован для различных платформ, включая CP/M и Apple II. С появлением IBM PC в 1981 году Microsoft заключила контракт с IBM на поставку операционной системы MS-DOS и встроенного интерпретатора BASIC. Первоначально для IBM PC была разработана версия под названием IBM BASICA (BASIC Advanced), которая для работы требовала наличия ПЗУ (ROM) с интерпретатором на материнской плате.
Появление GW-BASIC
В 1983 году Microsoft выпустила версию интерпретатора, не зависящую от аппаратного ПЗУ и работающую как обычная программа под управлением MS-DOS. Эта версия получила название GW-BASIC. Расшифровка аббревиатуры «GW» официально не раскрывалась; наиболее распространённые версии — «Gee Whiz» (от междометия, выражающего удивление) или «Graphics and Windows» (графика и окна), что отражало расширенные по сравнению с BASICA графические возможности. GW-BASIC поставлялся в комплекте с MS-DOS версий 3.x и 4.x, а также входил в состав некоторых OEM-версий системы. В СССР и России GW-BASIC получил широкое распространение благодаря копированию нелицензионных версий MS-DOS для клонов IBM PC.
Закат эпохи
С развитием графических интерфейсов и появлением более совершенных сред разработки (например, QuickBASIC и Turbo Pascal) популярность GW-BASIC стала снижаться. Начиная с MS-DOS 5.0 (1991 год) в комплект поставки вместо GW-BASIC стал включаться QBASIC — более современный интерпретатор, основанный на синтаксисе QuickBASIC. Последней версией GW-BASIC считается версия 3.23, выпущенная в 1988 году. Тем не менее, вплоть до середины 1990-х годов GW-BASIC продолжал использоваться в учебных заведениях и на предприятиях для выполнения старых программ.
Характеристики и возможности
Среда разработки
GW-BASIC представлял собой интерпретатор с интегрированной средой разработки (IDE), работающей в текстовом режиме. Пользовательский интерфейс состоял из двух основных окон:
- Окно редактора — для ввода и редактирования текста программы.
- Окно вывода — для отображения результатов выполнения программы и сообщений об ошибках.
Редактор поддерживал нумерацию строк, которая была обязательной для всех программ. Команды вводились построчно; для выполнения программы использовалась команда RUN. Предусматривался также режим непосредственного выполнения (direct mode), когда команды вводились и выполнялись немедленно, без сохранения в программе.
Типы данных и переменные
GW-BASIC поддерживал следующие типы данных:
- Числовые: целые числа (от -32768 до 32767), числа с плавающей запятой одинарной точности (7 значащих цифр) и двойной точности (16 значащих цифр).
- Строковые: строки переменной длины (до 255 символов).
Переменные не требовали предварительного объявления. Тип переменной определялся суффиксом в её имени: % — целое, ! — одинарная точность, # — двойная точность, $ — строковый. Отсутствие суффикса по умолчанию означало тип с плавающей запятой одинарной точности.
Управляющие конструкции
Язык поддерживал основные конструкции структурного программирования:
- Условный оператор
IF ... THEN ... ELSE. - Циклы
FOR ... NEXT,WHILE ... WEND. - Оператор безусловного перехода
GOTOи оператор перехода по вычисляемому значениюON ... GOTO. - Подпрограммы с использованием
GOSUB ... RETURN.
Графика и звук
Одной из ключевых особенностей GW-BASIC по сравнению с предшественниками была поддержка графики. Интерпретатор позволял работать в нескольких графических режимах, зависящих от типа видеоадаптера (CGA, EGA, VGA):
- SCREEN 0 — текстовый режим.
- SCREEN 1 — графический режим 320×200 пикселей, 4 цвета (CGA).
- SCREEN 2 — графический режим 640×200 пикселей, монохромный (CGA).
- SCREEN 7 — режим 320×200, 16 цветов (EGA).
- SCREEN 9 — режим 640×350, 16 цветов (EGA).
- SCREEN 12 — режим 640×480, 16 цветов (VGA).
Для вывода графических примитивов использовались команды: LINE (линия), CIRCLE (окружность), PSET и PRESET (точка), PAINT (заливка). Для работы со звуком применялась команда SOUND, генерирующая звуковые сигналы заданной частоты и длительности через встроенный динамик ПК.
Работа с файлами
GW-BASIC поддерживал последовательный и произвольный доступ к файлам. Команды OPEN, CLOSE, INPUT#, PRINT#, GET, PUT позволяли читать и записывать данные на дискету или жёсткий диск. Программы могли сохраняться в двух форматах: в виде текста (ASCII) и в сжатом токенизированном виде (обычно с расширением .BAS).
Пример программы
Ниже приведён пример простой программы на GW-BASIC, выводящей на экран таблицу умножения:
`` 10 CLS 20 FOR I = 1 TO 9 30 FOR J = 1 TO 9 40 PRINT I; ""; J; "="; I J, 50 NEXT J 60 PRINT 70 NEXT I 80 END ``
Программа очищает экран (строка 10), затем в двойном цикле перебирает множители от 1 до 9 и выводит результат на экран.
Применение
Обучение программированию
Благодаря простоте синтаксиса, интерактивной среде и отсутствию необходимости в компиляции, GW-BASIC широко использовался в школах, техникумах и вузах для начального обучения программированию. В СССР и России в конце 1980-х — начале 1990-х годов многие учебные заведения, оснащённые клонами IBM PC/XT, использовали GW-BASIC в качестве основной среды для изучения основ алгоритмизации.
Разработка прикладных программ
Несмотря на ограниченную производительность, на GW-BASIC создавались различные прикладные программы: бухгалтерские расчёты, инженерные вычисления, простые игры, учебные программы и системы тестирования. В условиях отсутствия широкого выбора коммерческого ПО, GW-BASIC позволял пользователям самостоятельно автоматизировать рутинные задачи.
Демонстрация возможностей ПК
В составе MS-DOS GW-BASIC часто использовался для демонстрации графических и звуковых возможностей персонального компьютера при его продаже или настройке. В комплект поставки входили примеры программ (например, DONKEY.BAS — простая игра, демонстрирующая графику и звук), которые позволяли покупателю оценить функциональность машины.
Ограничения и критика
- Отсутствие структурного программирования. Обязательная нумерация строк и широкое использование
GOTOприводили к созданию «спагетти-кода», который было трудно читать и сопровождать. - Низкая производительность. Как интерпретатор, GW-BASIC выполнял программы значительно медленнее, чем компилируемые языки (например, Turbo Pascal или C).
- Ограничения по памяти. Максимальный размер программы и данных был ограничен доступной оперативной памятью (обычно не более 64 КБ для кода и переменных в стандартной конфигурации).
- Отсутствие поддержки современных графических режимов. С появлением VGA и SVGA возможности GW-BASIC по работе с графикой стали недостаточными для создания полноценных приложений.
- Несовместимость с многозадачностью. GW-BASIC работал только в однозадачной среде MS-DOS и не мог быть запущен в окне под управлением Windows 9x без эмуляции.
Наследие
GW-BASIC оказал значительное влияние на развитие персональных компьютеров и популяризацию программирования. Многие профессиональные программисты 1990-х годов начинали свой путь именно с GW-BASIC. Интерпретатор стал основой для последующих продуктов Microsoft, таких как QuickBASIC и QBASIC, а также косвенно повлиял на разработку Visual Basic. В настоящее время GW-BASIC представляет исторический интерес и может быть запущен на современных компьютерах с помощью эмуляторов DOS (например, DOSBox).
Источники
- Microsoft GW-BASIC User's Guide and Reference Manual (1983).
- «Программирование на языке Бейсик» (Г. В. Боков, 1988).
- «MS-DOS: руководство пользователя» (Microsoft Corporation, 1985).
- Статья «GW-BASIC» в англоязычной Википедии (версия от 2023 года).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →