60 лет Бейсику
Эдуард Пройдаков
С Бейсиком у меня связано много личного – так получилось, что приходилось работать на самых разных компьютерах и западных и отечественных и, слава богу, всегда на них был хоть какой-то Бейсик. По моему опыту обучить студента работе на этом языке в простейшем варианте можно за четыре часа. К сожалению, сейчас многие языки высокого уровня (ЯВУ) стали настолько громоздкими, что на изучение того же C# мне потребовался целый осенний семестр и не скажу, что я изучил его достаточно полно. Замечу, что существует несколько видов программирования: промышленное, когда приложение разрабатывается для массового пользователя, и разовое, когда программа пишется для решения разовой задачи, и после того, как задача решена, о программе благополучно забывают. Занимаясь автоматизацией научных исследований, я писал в основном именно такие программы и Бейсик для них замечательно подходит. Вероятно, на нём были разработки и массовых приложений, но они как-то не на слуху.
Это сейчас трудно представить, но до середины 1960-х годов компьютеры во всём мире были чрезвычайно дорогими и использовались только для научных, инженерных и математических задач. В те годы был расцвет мэйнфреймов, которым требовались специальные помещения с мощными кондиционерами для поддержания нужной температуры. Действовал следующий порядок выполнения заданий в ВЦ (вычислительном центре): программист с готовой программой отправлялся в центр перфорации, где он сам или операторы на специальных устройствах (перфораторах) готовили колоду перфокарт с программой. После этого программа передавалась оператору ЭВМ, который ставил её в очередь. Как только перфокарты пользователя достигали своей очереди, программа считывалась, компилировалась и исполнялись. Понятно, что в случае ошибки, колода и листинг трансляции возвращался программисту для исправления (а перфокарты ещё могли заминаться в устройстве ввода перфокарт и их следовало перебить на специальном устройстве и заменить в колоде, затем повторить все действия с самого начала). Такой подход к программированию, который назывался «пакетная обработка заданий», был совершенно неэффективным. Язык BASIC изменил ситуацию коренным образом.
История создания. Но давайте вернёмся к юбиляру. Basic (также BASIC) – процедурный ЯВУ. Разработан в 1964 г. математиками из Дартмута Джоном Джорджем Кемени (John George Kemeny, 1926-1993) и Томом Курцасом (Tom Kurtzas) и командой студентов-программистов, в качестве учебного пособия для студентов Дартмутского колледжа (Dartmouth College in Hanover, New Hampshire, USA). Название BASIC (букв. “основной, базовый”) расшифровывается как Beginner’s All-purpose Symbolic Instruction Code – универсальный код символических (символьных) инструкций для начинающих. Отмечу, что Бейсик – это скорее общее имя для целого семейства языков, обладающих некоторым сходством, чем обозначение стандартизованного языка, не меняющегося от машины к машине.
Джон Кемени в 1945 году работал над Манхэттенским проектом, а затем (1948—1949 гг.) трудился в качестве помощника Альберта Эйнштейна, встретил Курцаса в Дартмуте в 1956 году. В то время Кемени был заведующим кафедрой математики, а Курцас только что присоединился к факультету, перейдя из Принстонского университета. Язык Бейсик родился не сразу, а только с третьей попытки. Вначале они сразу же начали работать вместе над новым упрощенным языком программирования и результатом этой работы стал язык Darsimco (Dartmouth Simplified Code), который не вызвал особого интереса.
Вторым экспериментом была система DOPE («Эксперимент по упрощенному программированию Дартмута»), который привлек ещё меньше внимания. Тем не менее, они продолжали работать над воплощением идеи Кемени о том, что новый язык был необходим как для обучения, так и для изучения компьютерных наук для всего мира неопытных пользователей.
Томас Курцас, ставший директором вычислительного центра Kiewit в Дартмуте, считал, что каждый студент должен иметь доступ к вычислительным возможностям ВЦ, придумал то, что он назвал «системой разделения времени». Эта система также нуждалась в новом, простом и эффективном языке. Таким образом, пока Джон Кемени писал язык программирования, Курцас разрабатывал свою систему разделения времени. Они оба осознали, что новый язык должен соответствовать следующим требованиям:
- это должна быть простая в использовании расширяемая система общего назначения;
- она должна быть интерактивной, с возможностью отладки непосредственно с экрана;
- при этом система не должна зависеть от оборудования и от ОС.
Разработчики Бейсика начали с изучения языков FORTRAN и ALGOL, которые в то время уже широко использовались. Из Фортрана была взята нумерация строк, что помогло упростить редактирование (строки можно было удалить, просто написав номер строки, или изменить, написав новую строку с тем же номером. Обычно строки нумеровали с шагом 10, чтобы в программу можно было вставлять новые операторы). Окончательная версия того, что называлось «Dartmouth BASIC», имела всего 14 инструкций. Как и в раннем Фортране, на строке должно было размещаться только одно предложение программы и каждая строка должна начинаться с названия оператора (это было явно для упрощения разработки интерпретатора языка). Усилия Кемени и Курцаса были вознаграждены 1 мая 1964 года, когда в 4:00 утра две программы BASIC были одновременно запущены на мэйнфрейме General Electric 225 (GE-225) в Дартмутском колледже.
Кемени и Курцас не патентовали и не защищали каким-либо образом свою разработку, они заявили, что хотели, чтобы их язык был общественным достоянием.
BASIC был задуман как компьютерный язык для нетехнических специалистов, чтобы раскрыть мощь компьютера в бизнесе и других сферах. Традиционно он был одним из наиболее часто используемых языков программирования, считавшимся простым шагом для студентов в изучении перед более мощными языками, такими как FORTRAN. До недавнего времени BASIC (в форме Visual BASIC и Visual BASIC .NET) был самым широко известным компьютерным языком среди разработчиков.
Первоначально язык реализовывался в виде интерпретаторов, что существенно облегчало программирование и особенно отладку программ, но это заметно замедляло исполнение программы. В настоящее время существуют также и компиляторы с этого языка. Бейсик хорошо подходил для первых микрокомпьютеров, имевших ОЗУ ёмкостью всего 4 или 8 Кбайт. Однако недостаток стандартизации, привёл к появлению многочисленных версий Бейсика, в большинстве своём не совместимых. Можно даже сказать, что, сколько интерпретаторов, столько и версий Бейсика (каждый разработчик вносил в него что-то своё, поскольку это было легко сделать), расплата – потеря мобильности программ между различными платформами. В оправдание могу сказать, что программы в те времена были достаточно компактными и часто одноразовыми. Я написал довольно много таких программ на Бейсике для проводившихся в институте научных исследований – после того, как программа решила поставленную задачу, о ней обычно забывали (кроме программ статистической обработки результатов экспериментов, поскольку они были и большими и часто использовались).
Диалекты: Basica (IBM), GW-Basic (название от Gee Whiz, Microsoft), MSX-Basic, Turbo-Basic (Borland), QuickBasic и его усечённая версия QBasic (Microsoft), XYBasic, CBasic, Basic-80, Basic-86 и 87Basic/387Basic (MicroWay) и множество других. В основе ANSI-стандарта был выбран True BASIC.
Tiny BASIC. Появление первых микрокомпьютеров в середине 1970-х годов стало началом взрывного роста популярности Бейсика. Одним из первых появился Tiny BASIC, простой вариант Бейсика, разработанный Деннисом Эллисоном (Dennis Allison) по настоянию Боба Альбрехта Bob Albrecht) из Homebrew Computer Club. Боб видел реализации BASIC на миникомпьютерах и посчитал, что он идеально подойдёт для новых 8-разрядных ПК таких как MITS Altair 8800. Как разработать и реализовать урезанную версию интерпретатора для языка BASIC, было описано в статьях Эллисона в первых трех квартальных выпусках информационного бюллетеня People's Computer Company, опубликованного в 1975 году, а реализации с исходным кодом были опубликованы в журнале доктора Добба «Tiny BASIC Calisthenics & Orthodontia: Running Light without Overbyte».[10]. У Tiny BASIC в России было некоторое продолжение. Не помню, как ко мне попала его версия, но занимала она всего 2 или 4 Кбайт, помещалась в одной микросхеме ППЗУ. В 1983-м году я адаптировал её для одноплатной микро-ЭВМ В-6 (ВНИИЭМ) и дописал к ней несколько полезных команд.
В 1975 году MITS выпустила Altair BASIC, разработанный Биллом Гейтсом и Полом Алленом (Paul Allen), оба из компании Micro-Soft, которая выросла в современного ИТ-гиганта Microsoft. Первая версия Altair BASIC была написана совместно Гейтсом, Алленом и Монте Давидоффом (Monte Davidoff). [3] В 1977 году были выпущены ПК Apple II, PET 2001 и TRS-80, у всех трёх BASIC был в качестве основного языка программирования и операционной среды, т. е. после загрузки пользователь направлялся не к традиционному интерфейсу командной строки, а к интерпретатору BASIC.
В 1984 появляется компилятор Microsoft BASIC, а за ним многочисленные версии, среди которых серия QuickBASIC. Её начали выпускать в 1985, а закончили в 1990 пакетом Microsoft BASIC Professional Development System 7.1 [3]
В СССР также было множество реализаций языка Бейсик. Сейчас трудно их перечислить, но некоторые разработки я знал, поскольку встречался с их авторами. В Риге на Рижском ПО ВЭФ в 1984 году был разработан язык Бейсик/F (автор А.Е. Корчак). Интерпретатор его работал под управлением ОС МикроДОС (аналог CP/M-80). К моменту публикации описания языка в документации МЦНТИ на МикроДОС [4] в 1986 году, была уже выпущена версия Бейсик/F 5.11. Язык поддерживал вычисления с длинными, до 254 цифр, целыми числами, стыковку с ассемблерными программами, деление программы на оверлейные модули. В язык были включены средства обработки прерываний, программной обработки ошибок и непосредственной работы с каналом ввода-вывода, т. е. по тем временам это была весьма продвинутая реализация языка.
Помимо ранее упомянутых диалектов BASIC, существовали и другие версии этого языка, среди которых:
- AmigaBASIC – версия Бейсика от Microsoft для компьютеров Amiga.
- BBC BASIC – был разработан для компьютеров BBC Micro и отличался мощными возможностями, включая встроенную поддержку ассемблера.
- Chipmunk BASIC – интерпретатор BASIC для macOS и других систем (https://www.nicholson.com/rhn/basic/).
- Commodore BASIC – был распространён на компьютерах Commodore, включая C64 и VIC-20.
- Color BASIC – был разработан для компьютеров TRS-80 Color Computer.
- DarkBASIC – ориентирован на разработку игр на базе Windows для персональных компьютеров и включает поддержку 3D-графики. DarkBASIC был разработан британской компанией The Game Creators и выпущен в 2000 году. DarkBASIC предлагал удобные инструменты для работы с 3D-графикой, анимацией, звуком и физикой, позволяя создавать игры даже без глубоких знаний программирования. Позднее вышла версия DarkBASIC Professional.
- FreeBASIC – современный диалект Бейсика близкий по синтаксису QuickBASIC, с усовершенствованная расширенной функциональностью, поддерживающий компиляцию в машинный код. Он предназначался для компьютеров, работающих под управлением Windows, DOS и Linux. FreeBASIC поддерживает 32- и 64-битные архитектуры, компилируется в машинный код и предоставляет расширенные возможности по сравнению с классическими диалектами BASIC (https://freebasic.net/).
- PowerBASIC 7.0 – высокопроизводительная версия Бейсик для Win32 с поддержкой низкоуровневого программирования. (https://powerbasic.narod.ru/)
- PureBasic– компилируемый диалект BASIC для различных платформ (Windows, Linux, OS X и Raspberry) с мощными возможностями для работы с графикой, сетью и базами данных (https://www.purebasic.com/).
Пример программы на Бейсик/F:
10 REM игра в кости
20 FOR
30 FOR
40 INPUT “загадайте число от 1 до 6”, NUM
50 NEXT WHILE NUM < 1 OR NUM > 6
60 SIZ = FIX(RND(0) * 5) +1
65 REM Здесь FIX иRND встроенные функции. FIX – округляет аргумент до ближайшего целого, а RND – возвращает случайное число от 0 до 1.
70 IF NUM = SIZ THEN PRINT «Вы угадали!»
ELSE PRINT “неудача. Выпало число ” : SIZ
80 NEXT
В 1988-м году в СССР появился стандарт языка Бейсик «ГОСТ 27787-88 Язык программирования БЕЙСИК». Однако, как и на американский стандарт языка, никто особого внимания на него не обращал.
Из современных Бейсиков нельзя не сказать о VBA. VBA – это аббревиатура от Visual Basic for Applications, что означает Visual Basic для приложений. Язык программирования VBA встроен во множество приложений от Microsoft Office, Microsoft Project, Visio и AutoCAD до многочисленных специализированных приложений (утверждается, что даже предназначенных для управления производственными процессами). Чтобы использовать VBA, необходимо иметь, по крайней мере, одно приложение, в которое встроены средства разработки VBA-программ, обычно это любое приложение из Microsoft Office — Word, Excel, PowerPoint, Access, Outlook или FrontPage. Что важно, проект на VBA нельзя создать независимого от какого-либо документа, даже если никакие свойства этого документа не используются.
У VBA довольно длинная история и за это время появилось довольно много версий этого языка. А всё началось с языка Visual Basic. Язык VBA – это подмножество Visual Basic (VB), которое включает почти все его средства создания приложений, структуры данных и управляющие структуры, возможность создания пользовательских типов данных. Отмечу, что VBA не является языком объектно-ориентированного программирования (ООП) в строгом смысле этого слова, но в нём широко используются элементы объектно-ориентированного подхода и связанные с ним понятия. VBA – язык визуального и событийно-управляемого программирования, т. е. обеспечивает написание процедур, обрабатывающих события, которые возникают при тех или иных действиях системы и пользователя для чего в нём определены все объекты приложений MS Office.
Если открыть документ Word, предварительно разрешив в параметрах использование макросов, в этот момент в языке VBA автоматически становится доступным объект Application, а также все встроенные в него объекты. Кроме того, VBA имеет собственную графическую инструментальную среду, позволяющую создавать экранные формы и управляющие элементы. Самым простым событием в VBA является щелчок кнопкой мыши. Событие, как правило, меняет ход выполнения программы, поскольку управление передаётся обработчику конкретного события. VBA 6.3 входит в состав приложений пакета Microsoft Office ХР.
Список команд BASIC
Ниже дан список команд самой ранней версии Бейсика, разработанного в Дартмуте.
HELLO — войти в интерпретатор
BYE — выйти из интерпретатора
BASIC — запустить режим BASIC
NEW — начать новую программу. Ввести имя программы и начать запись программы
OLD — загрузить программу из постоянной памяти
LIST — распечатать текущую программу
SAVE — сохранить текущую программу в постоянной памяти
UNSAVE — стереть текущую программу из постоянной памяти
CATALOG — распечатать имена программ в постоянной памяти
SCRATCH — стереть программу
RENAME — переименовать программу
RUN — выполнить программу
STOP — останов программы
Литература
1. Mary Bellis. The History of the BASIC Programming Language. https://www.thoughtco.com/history-basic-programming-language-1991662 (26.01.2019)
2. Andrea M. Marconi. History of BASIC. https://www.q7basic.org/History%20of%20BASIC.pdf
3. BASIC. https://camaraethiopia.org.et/rachel/wikip/wp/b/BASIC.htm
4. А.Е. Корчак. Язык программирования Бейсик/F. Часть 1. – М.: МЦНТИ. – 1986. – 60 с.
5. Гарнаев А.Ю. Самоучитель VBA. 2-е издание, 2014 год.
6. Happy Birthday, BASIC. https://techcrunch.com/2014/05/02/happy-birthday-basic/
Об авторе: Директор Виртуального Компьютерного Музея
Помещена в музей с разрешения автора
23 февраля 2025