Введение
Язык программирования
Microsoft BASIC – это основополагающий программный продукт компании Microsoft, который развился в целую серию интерпретаторов и компиляторов BASIC, адаптированных для множества различных микрокомпьютеров. Он впервые появился в 1975 году под названием Altair BASIC, став первой версией BASIC, выпущенной Microsoft, а также первым языком программирования высокого уровня, доступным для микрокомпьютера Altair 8800. В период бума домашних компьютеров в конце 1970-х и начале 1980-х годов BASIC был портирован и поставлялся вместе со многими моделями домашних компьютеров. Незначительные изменения, вносимые для поддержки специфических функций машин, особенно графики, привели к появлению множества связанных версий, таких как Commodore BASIC и Atari Microsoft BASIC. С появлением новых компьютеров, таких как IBM Personal Computer и Macintosh, BASIC стал использоваться реже, хотя и сохранил преданных пользователей. Выпуск Visual Basic вновь повысил его популярность, и он остаётся широко используемым на платформах Microsoft Windows в своей новейшей версии – Visual Basic .NET.
Altair BASIC и ранние микрокомпьютеры
Интерпретатор Altair BASIC был разработан основателями Microsoft Полом Алленом и Биллом Гейтсом с использованием самостоятельно написанного эмулятора Intel 8080, работающего на миникомпьютере PDP 10. Диалект MS основан на BASIC PLUS от Digital Equipment Corporation для PDP 11, который Гейтс использовал в школе. Первые версии поддерживали только целочисленную арифметику, но Монте Дэвидофф убедил их в возможности арифметики с плавающей точкой и написал библиотеку, ставшую Microsoft Binary Format. Altair BASIC поставлялся на бумажной ленте и в исходной версии занимал 4 КБ памяти. Доступны были следующие функции и операторы: LIST, NEW, PRINT, INPUT, IF THEN, FOR NEXT, SQR, RND, SIN, LET, USR, DATA, READ, REM, CLEAR, STOP, TAB, RESTORE, ABS, END, INT, RETURN, STEP, GOTO и GOSUB. В 4K BASIC не было строковых переменных, а единственным поддерживаемым числовым типом была 32-битная переменная с плавающей точкой одинарной точности. Имена переменных состояли из одной буквы (A–Z) или одной буквы, за которой следовала одна цифра (0–9), что позволяло использовать до 286 числовых переменных. Для машин с большим объемом памяти версия 8 КБ добавила 31 дополнительных операторов и поддержку строковых переменных и связанных с ними операций, таких как MID$ и конкатенация строк. Строковые переменные обозначались суффиксом $, который сохранился в более поздних версиях языка. Позже Microsoft выпустила 12K Extended BASIC, которая включала 64-битные переменные двойной точности, структуры IF THEN ELSE, пользовательские функции, более продвинутые команды редактирования программ и информативные сообщения об ошибках вместо номеров ошибок. Числовые переменные теперь имели три основных типа: % обозначало 16-битные целые числа, # – 64-битные числа двойной точности, а ! – 32-битные числа одинарной точности, но это был формат по умолчанию, поэтому ! редко встречается в программах. Расширенная версия 8 КБ была обобщена в BASIC 80 (8080/85, Z80) и портирована в BASIC 68 (6800), BASIC 69 (6809) и 6502 BASIC. Для 6502 ассемблерный код был менее компактным, и размер увеличился до чуть менее 8 КБ для версии одинарной точности или 9 КБ для версии, использующей промежуточный 40-битный формат с плавающей точкой вместо исходного 32-битного. Этот новый 40-битный формат стал наиболее распространенным, поскольку он использовался на большинстве машин на базе 6502 того времени. Он также был портирован на 16-битный BASIC 86 (8086/88). Последним крупным выпуском BASIC 80 была версия 5.x, появившаяся в 1981 году, которая добавила поддержку 40-символьных имен переменных, циклов WHILE WEND, динамического выделения памяти для строк и нескольких других функций. BASIC 5.x убрал возможность сжатия строк программы. Основной набор команд и синтаксис одинаковы во всех реализациях Microsoft BASIC, и, как правило, программа может работать на любой версии, если она не использует специфичные для оборудования функции или числа двойной точности (которые не поддерживаются в некоторых реализациях).
LIST, NEW, PRINT, INPUT, IF THEN, FOR NEXT, SQR, RND, SIN, LET, USR, DATA, READ, REM, CLEAR, STOP, TAB, RESTORE, ABS, END, INT, RETURN, STEP, GOTO, and GOSUB. There were no string variables in 4K BASIC and single precision 32 bit floating point was the only numeric type supported. Variable names consisted of one letter (A–Z) or one letter followed by one digit (0–9), thus allowing up to 286 numeric variables. For machines with more memory, the 8 KB version added 31 additional statements and support for string variables and their related operations like MID$ and string concatenation. String variables were denoted with a $ suffix, which remained in later versions of the language. Later on, Microsoft released the 12K Extended BASIC, which included double precision 64 bit variables, IF THEN ELSE structures, user defined functions, more advanced program editing commands, and descriptive error messages as opposed to error numbers. Numeric variables now had three basic types, % denoted 16 bit integers, # denoted 64 bit doubles, and ! denoted 32 bit singles, but this was the default format so the ! is rarely seen in programs. The extended 8 KB version was then generalized into BASIC 80 (8080/85, Z80), and ported into BASIC 68 (6800), BASIC 69 (6809), and 6502 BASIC. The 6502 had somewhat less dense assembler code and expanded in size to just under 8K for the single precision version, or 9K for a version using an intermediate 40 bit floating point format in place of the original 32 bit version. This new 40 bit format became the most common as it was used on most 6502 based machines of the era. It was also ported to the 16 bit BASIC 86 (8086/88). The final major release of BASIC 80 was version 5. x, which appeared in 1981 and added support for 40 character variable names, WHILE WEND loops, dynamic string allocation, and several other features. BASIC 5. x removed the ability to crunch program lines. The core command set and syntax are the same in all implementations of Microsoft BASIC and, generally speaking, a program can be run on any version if it does not use hardware specific features or double precision numbers (not supported in some implementations).
Лицензии производителям домашних компьютеров
После первоначального успеха Altair BASIC, Microsoft BASIC стал основой для прибыльного бизнеса по лицензированию программного обеспечения, будучи портированным на большинство многочисленных домашних и других персональных компьютеров 1970-х и особенно 1980-х годов, и в процессе расширенным. В отличие от оригинального Altair BASIC, большинство BASIC для домашних компьютеров хранились в ПЗУ и, таким образом, были доступны на машинах при включении в виде характерной команды "READY". Следовательно, Microsoft и другие варианты BASIC составляли значительную и заметную часть пользовательского интерфейса примитивных операционных систем многих домашних компьютеров. К 1981 году Microsoft BASIC был настолько популярен, что даже компании, у которых уже была лицензия на BASIC, лицензировали язык, такие как IBM для своего Personal Computer и Atari, которая продавала Atari Microsoft BASIC и свой собственный Atari BASIC. Дон Эстридж из IBM сказал: «У Microsoft BASIC были сотни тысяч пользователей по всему миру. Как с этим можно спорить?» Microsoft лицензировала аналогичные версии компаниям, конкурировавшим друг с другом. После лицензирования IBM Advanced BASIC (BASICA) для IBM, например, Microsoft лицензировала совместимую GW BASIC производителям клонов ПК и продавала копии розничным покупателям. Компания также лицензировала BASIC, совместимый с Applesoft, для VTech для её клона Laser 128.
Диск BASIC-80
MBASIC доступен для CP/M 80 и ISIS II. Также доступен для TEKDOS. MBASIC – это упрощенная версия BASIC 80, содержащая только аппаратно-независимые функции. Однако, благодаря популярности CP/M, большинство компьютеров на базе Z80 работали под управлением MBASIC, а не версией, настроенной для конкретного оборудования (TRS 80 BASIC был одним из немногих исключений). CP/M-карта от Microsoft для Apple II включала модифицированную версию MBASIC, в которую были добавлены некоторые графические команды из Applesoft BASIC, такие как HPLOT, но полный набор команд не поддерживался.
TRS-80 уровень II/III BASIC
Компьютер TRS 80 первоначально поставлялся с адаптацией Tiny BASIC (Level I BASIC) Ли Чен Ванга. В течение нескольких месяцев она была заменена портом BASIC 80, который включал некоторые команды из набора команд Level I BASIC, особенно команды для задания графических символов. BASIC уровня II содержал некоторые возможности Extended BASIC, однако из-за необходимости включения команд Level I, таких как SET и PSET, другие возможности, такие как информативные сообщения об ошибках, пришлось исключить; впоследствии они были добавлены в TRS 80 Disk BASIC. TRS 80 Model 4 использовал более новую дисковую версию BASIC, основанную на ядре BASIC 80 5.x, которая поддерживала переменные имена длиной до 40 символов. Таким образом, возможность сжатия строк программы (без пробелов между ключевыми словами и аргументами), как это было в Level II, больше не была доступна. Больше не требовалось резервировать память для строк. Новые возможности включали пользовательские функции (DEF FN) и доступ к системным функциям TRSDOS 6 через ключевое слово SYSTEM. Позднее, модифицированная версия, выпущенная поставщиком ОС Logical Systems в обновлении LS DOS Version 6.3, добавила однобуквенный доступ к функциям управления BASIC (например, LIST и EDIT) и прямой доступ к вызовам супервизора LS DOS. Среда редактирования программ оставалась построчной. Возможность сортировки массивов (CMD"O"), доступная в Level II, отсутствовала, поэтому программистам и пользователям приходилось искать собственные обходные пути.
BASIC-86 (в переводе с английского)
Первая реализация в виде автономной дисковой языковой системы была выполнена для платы 8086 CPU Seattle Computer Products S-100 в 1979 году. В ней использовалась 8-битная файловая система FAT. В 1980 году Microsoft также предложила версию Standalone BASIC 86 для SBC 86/12, предназначенную для платформы Intel 8086 Single Board Computer.
Texas Instruments BASIC (англ.) (англ.) (недоступная ссылка)
Это версия BASIC, использовавшаяся на домашнем компьютере TI 99/4A. Хотя она очень похожа на Microsoft BASIC, она не была написана Microsoft, как широко распространялось. По словам инженера TI Х. Шурмана, "Их (в лице Боба Гринберга из Microsoft) наняли для разработки BASIC для SR 70 (который также иногда называют 99/7), но BASIC для 99/4 был разработан внутри компании". TI 99/4 BASIC был основан на Dartmouth BASIC и соответствует американскому национальному стандарту минимального BASIC (ANSI X3.60 1978).
BASIC-68 и BASIC-69
Каталоги Microsoft 1980-х годов также демонстрировали доступность BASIC 68 и BASIC 69 для микропроцессоров Motorola 6800 и 6809 соответственно, работающих под управлением операционных систем FLEX, и также упоминают OEM-версии для систем Perkin Elmer, Ohio Nuclear, Pertec и Societe Occitane d'Electronique. Вероятно, именно это послужило основой для Microsoft/Epson BASIC в портативном компьютере Epson HX 20, который оснащен двумя процессорами Hitachi 6301, по сути являющимися улучшенной версией 6801. Большинство основных функций BASIC 68 и BASIC 69 были напрямую скопированы из BASIC 80. BASIC 69 также был лицензирован компании Tandy, где стал основой Color BASIC для TRS 80 Color Computer. Его не следует путать с BASIC09 – совершенно другим BASIC, разработанным компанией Microware как основным языком для своей ОС 9, другой операционной системы, доступной для Color Computer (Microware также написала версию 2.0 Extended Color BASIC, когда Microsoft отказалась от ее разработки). Microsoft BASIC также был включен в компьютеры Dragon 32/64, которые производились в Уэльсе и имели ограниченный успех на рынке домашних компьютеров в Великобритании в начале 1980-х годов. Компьютеры Dragon были частично совместимы с Tandy TRS 80, поскольку они были построены на очень похожем аппаратном обеспечении.
MSX
Microsoft выпустила MSX BASIC, реализованный в ПЗУ, для использования в домашних компьютерах MSX, оснащенных процессором Z80. Эта версия поддерживала графические и звуковые подсистемы компьютеров MSX, а некоторые варианты также поддерживали дисководы.
Современные потомки
Никакие версии Microsoft BASIC (BASICA, GW BASIC, QuickBasic, QBasic) в настоящее время не поставляются вместе с Microsoft Windows или DOS. Однако версии, которые всё ещё могут работать на современных компьютерах, можно загрузить с различных сайтов в интернете или найти на старых дискетах DOS. Последней версией Microsoft BASIC является Visual Basic .NET, которая включает в себя некоторые возможности из C++ и C# и может использоваться для разработки веб-форм, форм Windows, консольных и серверных приложений. Большинство примеров кода .NET представлены на VB.NET, а также на C#, и VB.NET по-прежнему популярен среди бывших программистов на Visual Basic. В октябре 2008 года Microsoft выпустила Small Basic. В этом языке всего 14 ключевых слов. Small Basic версии 1.0 (12 июня 2011 года) была выпущена вместе с обновлённым веб-сайтом Microsoft MSDN, который включал в себя полную программу обучения для преподавателей, руководство для начинающих и несколько электронных книг. Small Basic создан для того, чтобы помочь учащимся, начиная с восьмилетнего возраста, изучить основы программирования, а затем перейти к Visual Basic с помощью загружаемого программного обеспечения Visual Studio Express, где они смогут продолжить обучение, изучая Visual C#, VB.NET и Visual C++.