BASIC ( Beginners' All-purpose Symbolic Instruction Code ) [1] — это семейство языков программирования общего назначения высокого уровня , разработанных для простоты использования. Первоначальная версия была создана Джоном Г. Кемени и Томасом Э. Курцем в Дартмутском колледже в 1963 году. Они хотели дать возможность студентам в ненаучных областях использовать компьютеры. В то время почти все компьютеры требовали написания специального программного обеспечения, которое, как правило, изучали только ученые и математики .
В дополнение к языку программирования Кемени и Курц разработали Dartmouth Time Sharing System (DTSS), которая позволяла нескольким пользователям редактировать и запускать программы BASIC одновременно на удаленных терминалах. Эта общая модель стала популярной в мини-компьютерных системах, таких как PDP-11 и Data General Nova в конце 1960-х и начале 1970-х годов. Hewlett-Packard выпустила целую линейку компьютеров для этого метода работы, представив серию HP2000 в конце 1960-х годов и продолжая продажи в 1980-х годах. Многие ранние видеоигры ведут свою историю от одной из этих версий BASIC.
Появление микрокомпьютеров в середине 1970-х годов привело к разработке нескольких диалектов BASIC, включая Microsoft BASIC в 1975 году. Из-за крошечного объема основной памяти , доступной на этих машинах, часто 4 КБ, были также созданы различные диалекты Tiny BASIC . BASIC был доступен практически для любой системы той эпохи и стал фактическим языком программирования для домашних компьютерных систем, которые появились в конце 1970-х годов. Эти ПК почти всегда имели интерпретатор BASIC, установленный по умолчанию, часто в прошивке машины или иногда на картридже ROM .
BASIC потерял популярность в 1990-х годах, поскольку на рынке появились более мощные микрокомпьютеры, и языки программирования с расширенными возможностями (такие как Pascal и C ) стали приемлемыми на таких компьютерах. К тому времени большинство нетехнических пользователей персональных компьютеров полагались на предварительно написанные приложения, а не на написание собственных программ. В 1991 году Microsoft выпустила Visual Basic , объединив обновленную версию BASIC с визуальным конструктором форм . Это возродило использование языка, и «VB» остается основным языком программирования [2] [3] в форме VB.NET , в то время как любительская сцена для BASIC в более широком смысле продолжает существовать. [4] [5]
Джон Г. Кемени был председателем математического факультета Дартмутского колледжа. Во многом благодаря его репутации новатора в преподавании математики, в 1959 году колледж выиграл премию Фонда Альфреда П. Слоуна в размере 500 000 долларов на строительство нового здания факультета. [6] Томас Э. Курц присоединился к факультету в 1956 году, и с 1960-х годов Кемени и Курц пришли к согласию о необходимости грамотности в программировании среди студентов за пределами традиционных областей STEM . Позже Кемени отметил, что «наше видение заключалось в том, что каждый студент в кампусе должен иметь доступ к компьютеру , и любой преподаватель должен иметь возможность использовать компьютер в классе, когда это уместно. Вот так просто». [7]
Кемени и Курц провели два предыдущих эксперимента с упрощенными языками, DARSIMCO (Dartmouth Simplified Code) и DOPE (Dartmouth Oversimplified Programming Experiment) . Они не продвинулись дальше одного класса первокурсников. Затем последовали новые эксперименты с использованием Fortran и ALGOL , но Курц пришел к выводу, что эти языки слишком сложны для того, чего они хотели. Как заметил Курц, в Fortran было множество странно сформированных команд, в частности, «почти невозможное для запоминания соглашение для указания цикла: . Это '1, 10, 2' или '1, 2, 10', и требуется ли запятая после номера строки или нет?» [7]DO 100, I = 1, 10, 2
Более того, отсутствие какой-либо немедленной обратной связи было ключевой проблемой; машины той эпохи использовали пакетную обработку и требовали много времени для завершения запуска программы. Пока Курц посещал MIT , Джон Маккарти предположил, что разделение времени предлагает решение; одна машина могла бы разделить свое время обработки между многими пользователями, создавая у них иллюзию того, что у них есть (медленный) компьютер. [8] Небольшие программы возвращали бы результаты через несколько секунд. Это привело к росту интереса к системе, использующей разделение времени, и новому языку, специально предназначенному для использования студентами, не являющимися STEM-специалистами. [7]
Кемени написал первую версию BASIC. Аббревиатура BASIC происходит от названия неопубликованной статьи Томаса Курца. [9] Новый язык был в значительной степени скопирован с FORTRAN II; операторы были по одному в строке, числа использовались для указания цели циклов и ветвей, и многие команды были похожи или идентичны Fortran. Однако синтаксис был изменен везде, где его можно было улучшить. Например, сложный для запоминания DO
цикл был заменен на гораздо более легкий для запоминания , а номер строки, используемый в DO, вместо этого обозначался . [a] Аналогично, криптографический оператор Fortran, синтаксис которого соответствовал определенной инструкции машины, на которой он был изначально написан, стал более простым . Эти изменения сделали язык гораздо менее идиосинкразическим, при этом все еще имея общую структуру и ощущаясь похожим на оригинальный FORTRAN. [7]FOR I = 1 TO 10 STEP 2
NEXT I
IF
IF I=5 THEN GOTO 100
Проект получил грант в размере 300 000 долларов от Национального научного фонда , который был использован для покупки компьютера GE-225 для обработки и процессора реального времени Datanet-30 для обработки телетайпов Teletype Model 33, используемых для ввода и вывода. Команда из дюжины студентов работала над проектом около года, написав как систему DTSS, так и компилятор BASIC. [7] Первая версия языка BASIC была выпущена 1 мая 1964 года. [10] [11]
Первоначально BASIC был сосредоточен на поддержке простых математических работ, с поддержкой матричной арифметики из его первоначальной реализации в качестве пакетного языка и функциональностью символьных строк , добавленной к 1965 году. Использование в университете быстро расширялось, что потребовало замены основного ЦП на GE-235, [7] а еще позже на GE-635. К началу 1970-х годов к машинам в Дартмуте были подключены сотни терминалов, некоторые из них удаленно.
Желая, чтобы использование языка стало широко распространенным, его разработчики сделали компилятор доступным бесплатно. В 1960-х годах программное обеспечение стало платным товаром; до тех пор оно предоставлялось бесплатно как услуга с дорогими компьютерами, обычно доступными только для аренды. Они также сделали его доступным для средних школ в районе Ганновера, Нью-Гемпшир , и на региональном уровне по всей Новой Англии на телетайпных терминалах модели 33 и модели 35, подключенных к Дартмуту через коммутируемые телефонные линии, и они приложили значительные усилия для продвижения языка. В последующие годы, по мере появления других диалектов BASIC, оригинальный диалект BASIC Кемени и Курца стал известен как Dartmouth BASIC .
В 2019 году власти Нью-Гэмпшира отметили это достижение, установив в Ганновере исторический маркер на шоссе, свидетельствующий о создании «первого удобного для пользователя языка программирования» [12] .
Появление BASIC произошло как часть более широкого движения к системам разделения времени. Впервые концептуализированная в конце 1950-х годов, эта идея стала настолько доминирующей в компьютерной индустрии к началу 1960-х годов, что ее сторонники говорили о будущем, в котором пользователи будут «покупать время на компьютере примерно так же, как среднестатистическое домохозяйство покупает электроэнергию и воду у коммунальных компаний». [13]
General Electric, работая над проектом Dartmouth, написала свою собственную базовую операционную систему и запустила онлайн-систему разделения времени, известную как Mark I. Она показала BASIC как один из своих основных коммерческих аргументов. Другие компании в новой области быстро последовали примеру; Tymshare представила SUPER BASIC в 1968 году, CompuServe имела версию на DEC-10 при их запуске в 1969 году, и к началу 1970-х годов BASIC был в значительной степени универсальным на универсальных мэйнфреймах . Даже IBM в конечном итоге присоединилась к клубу, представив VS-BASIC в 1973 году. [14]
Хотя службы разделения времени с BASIC были успешны некоторое время, широкомасштабный успех, предсказанный ранее, не был достигнут. Появление мини-компьютеров в тот же период, и особенно недорогих микрокомпьютеров в середине 1970-х годов, позволило любому человеку приобретать и запускать свои собственные системы, а не покупать онлайн-время, которое обычно оплачивалось по доллару за минуту. [b] [15]
BASIC, по своей природе будучи небольшим, был естественным образом приспособлен для переноса на рынок мини-компьютеров , который возник одновременно с сервисами разделения времени. Эти машины имели небольшую основную память , возможно, всего 4 КБ в современной терминологии, [c] и не имели высокопроизводительного хранилища, такого как жесткие диски , которые делают компиляторы практичными. На этих системах BASIC обычно реализовывался как интерпретатор, а не как компилятор из-за его меньших требований к рабочей памяти. [d]
Особенно важным примером был HP Time-Shared BASIC , который, как и оригинальная система Dartmouth, использовал два компьютера, работающих вместе, для реализации системы разделения времени. Первый, низкоуровневая машина в серии HP 2100 , использовался для управления вводом данных пользователем и сохранения и загрузки его программ на ленту или диск. Другой, высокоуровневая версия той же базовой машины, запускал программы и генерировал вывод. За сумму около 100 000 долларов можно было владеть машиной, способной одновременно запускать от 16 до 32 пользователей. [16] Система, объединенная как HP 2000, была первой мини-платформой, предлагающей разделение времени, и имела немедленный ошеломительный успех, выведя HP на третье место по величине среди поставщиков мини-компьютеров после DEC и Data General (DG). [17]
DEC, лидер в области мини-компьютеров с середины 1960-х годов, изначально игнорировала BASIC. Это было связано с их работой с RAND Corporation , которая приобрела PDP-6 для запуска своего языка JOSS , который был концептуально очень похож на BASIC. [18] Это привело к тому, что DEC представила меньшую, очищенную версию JOSS, известную как FOCAL , которую они активно продвигали в конце 1960-х годов. Однако, поскольку системы разделения времени широко предлагали BASIC, и все их конкуренты в области мини-компьютеров делали то же самое, клиенты DEC требовали BASIC. После того, как руководство неоднократно игнорировало их просьбы, Дэвид Х. Аль взял на себя смелость купить BASIC для PDP-8 , что имело большой успех на рынке образования. К началу 1970-х годов FOCAL и JOSS были забыты, и BASIC стал практически универсальным на рынке мини-компьютеров. [19] DEC продолжила представлять свою обновленную версию, BASIC-PLUS , для использования в операционной системе с разделением времени RSTS/E .
В этот период на BASIC было написано несколько простых текстовых игр , наиболее примечательной из которых является Star Trek Майка Мэйфилда . Дэвид Аль собрал их, некоторые из них были перенесены из FOCAL, и опубликовал их в образовательном информационном бюллетене, который он составил. Позже он собрал некоторые из них в форме книги, 101 BASIC Computer Games , опубликованной в 1973 году. [20] В тот же период Аль участвовал в создании небольшого компьютера для использования в образовании, раннего персонального компьютера . Когда руководство отказалось поддержать эту концепцию, Аль покинул DEC в 1974 году, чтобы основать основополагающий компьютерный журнал Creative Computing . Книга оставалась популярной и была переиздана несколько раз. [21]
Появление первых микрокомпьютеров в середине 1970-х годов стало началом взрывного роста BASIC. Он имел то преимущество, что был довольно хорошо известен молодым разработчикам и любителям компьютеров, которые интересовались микрокомпьютерами, многие из которых видели BASIC на мини- или мэйнфреймах. Несмотря на известное суждение Дейкстры в 1975 году: «Практически невозможно научить хорошему программированию студентов, которые имели опыт работы с BASIC: как потенциальные программисты они ментально изуродованы без надежды на восстановление», [22] BASIC был одним из немногих языков, который был и достаточно высокоуровневым, чтобы его могли использовать те, кто не имел подготовки, и достаточно маленьким, чтобы вписаться в микрокомпьютеры того времени, что сделало его фактически стандартным языком программирования на ранних микрокомпьютерах.
Первая микрокомпьютерная версия BASIC была написана совместно Биллом Гейтсом , Полом Алленом и Монте Давидоффом для их недавно созданной компании Micro-Soft. [23] Она была выпущена MITS в формате перфоленты для Altair 8800 вскоре после самой машины, [24] немедленно закрепив BASIC как основной язык ранних микрокомпьютеров. Члены Homebrew Computer Club начали распространять копии программы, заставив Гейтса написать свое Открытое письмо любителям , в котором он жаловался на этот ранний пример программного пиратства .
Частично в ответ на письмо Гейтса, а частично для того, чтобы сделать еще меньший BASIC, который мог бы работать на машинах с 4 КБ, [e] Боб Альбрехт призвал Денниса Эллисона написать собственную вариацию языка. Как разработать и реализовать урезанную версию интерпретатора для языка BASIC, было описано в статьях Эллисона в первых трех квартальных выпусках информационного бюллетеня People's Computer Company , опубликованного в 1975 году, и реализациях с исходным кодом, опубликованных в журнале доктора Добба «Dr. Dobb's Journal of Tiny BASIC Calisthenics & Orthodontia: Running Light Without Overbyte» . Это привело к появлению большого разнообразия Tiny BASIC с дополнительными функциями или другими улучшениями, причем версии от Тома Питтмана и Ли-Чена Вана стали особенно известны. [25]
Micro-Soft, к тому времени Microsoft , портировала свой интерпретатор для MOS 6502 , который быстро стал одним из самых популярных микропроцессоров 8-битной эры. Когда начали появляться новые микрокомпьютеры, в частности «троица 1977 года» TRS-80 , Commodore PET и Apple II , они либо включали версию кода MS, либо быстро представляли новые модели с ним. Персональные компьютеры Ohio Scientific также присоединились к этой тенденции в то время. К 1978 году MS BASIC стал фактическим стандартом, и практически каждый домашний компьютер 1980-х годов включал его в ПЗУ . После загрузки был представлен интерпретатор BASIC в прямом режиме .
Commodore Business Machines включает Commodore BASIC , основанный на Microsoft BASIC. Apple II и TRS-80 имеют по две версии BASIC: меньшую вводную версию с начальными выпусками машин и версию на базе Microsoft, представленную по мере увеличения интереса к платформам. По мере того, как в эту область входили новые компании, добавлялись дополнительные версии, которые тонко изменяли семейство BASIC. 8-битные компьютеры Atari используют 8-килобайтный Atari BASIC , который не является производным от Microsoft BASIC. Sinclair BASIC был представлен в 1980 году с Sinclair ZX80 и позже был расширен для Sinclair ZX81 и Sinclair ZX Spectrum . Опубликованный BBC BASIC , разработанный Acorn Computers , включает в себя дополнительные ключевые слова структурного программирования и функции с плавающей точкой.
По мере роста популярности BASIC в этот период компьютерные журналы публиковали полный исходный код на BASIC для видеоигр, утилит и других программ. Учитывая простоту BASIC, было просто набрать код из журнала и запустить программу. Были изданы различные журналы с программами для определенных компьютеров, хотя некоторые программы BASIC считались универсальными и могли использоваться на машинах, работающих под управлением любого варианта BASIC (иногда с небольшими изменениями). Было также доступно множество книг с программами для ввода, и в частности, Аль опубликовал версии оригинальных 101 игр BASIC, преобразованных в диалект Microsoft, и опубликовал их в Creative Computing как BASIC Computer Games . Эта книга и ее продолжения содержали сотни готовых к использованию программ, которые можно было легко преобразовать практически для любой платформы, работающей под управлением BASIC. [20] [26] [27] Книга поступила в продажу в 1978 году, как раз когда начинался рынок домашних компьютеров , и стала первой компьютерной книгой, проданной миллионным тиражом. Более поздние пакеты, такие как Learn to Program BASIC, также имели игровую направленность в качестве вводного фокуса. На ориентированных на бизнес компьютерах CP/M , которые вскоре стали широко распространены в среде малого бизнеса, Microsoft BASIC ( MBASIC ) был одним из ведущих приложений. [28]
В 1978 году Дэвид Лиен опубликовал первое издание The BASIC Handbook: An Encyclopedia of the BASIC Computer Language , документировав ключевые слова для более чем 78 различных компьютеров. К 1981 году второе издание документировало ключевые слова для более чем 250 различных компьютеров, демонстрируя взрывной рост эры микрокомпьютеров. [29]
Когда IBM проектировала IBM PC , они следовали парадигме существующих домашних компьютеров, имея встроенный интерпретатор BASIC. Они взяли его у Microsoft — IBM Cassette BASIC — но Microsoft также выпустила несколько других версий BASIC для MS-DOS / PC DOS , включая IBM Disk BASIC (BASIC D), IBM BASICA (BASIC A), GW-BASIC (совместимая с BASICA версия, не нуждающаяся в ПЗУ IBM) [30] и QBasic , все они обычно поставлялись в комплекте с машиной. Кроме того, они выпустили компилятор Microsoft BASIC, предназначенный для профессиональных программистов. Издатель Turbo Pascal Borland опубликовал Turbo Basic 1.0 в 1985 году (более поздние версии все еще продаются под названием PowerBASIC ). В Unix-подобных системах были созданы специализированные реализации, такие как XBasic и X11-Basic. [31] XBasic был портирован на Microsoft Windows как XBLite , и появились кроссплатформенные варианты, такие как SmallBasic , yabasic , Bywater BASIC , [32] [33] nuBasic, [34] MyBasic, [35] Logic Basic, [36] Liberty BASIC и wxBasic . FutureBASIC и Chipmunk Basic тем временем были нацелены на Apple Macintosh , в то время как yab — это версия yaBasic, оптимизированная для BeOS , ZETA и Haiku . [37]
Эти более поздние вариации ввели множество расширений, таких как улучшенная обработка строк и поддержка графики, доступ к файловой системе и дополнительные типы данных . Более важными были возможности для структурного программирования , включая дополнительные структуры управления и соответствующие подпрограммы, поддерживающие локальные переменные . [38] Однако ко второй половине 1980-х годов пользователи все чаще использовали готовые приложения, написанные другими, а не изучали программирование самостоятельно; в то время как профессиональные программисты теперь имели широкий спектр более продвинутых языков, доступных на небольших компьютерах. C и позже C++ стали языками выбора для профессиональной разработки приложений «в термоусадочной пленке» . [39] [40]
Ниша, которую продолжал заполнять BASIC, была предназначена для любительской разработки видеоигр , поскольку системы создания игр и легкодоступные игровые движки все еще находились в зачаточном состоянии. Atari ST имел STOS BASIC, в то время как Amiga имел AMOS BASIC для этой цели. Microsoft впервые представила BASIC для разработки игр с DONKEY.BAS для GW-BASIC , а позже GORILLA.BAS и NIBBLES.BAS для QuickBASIC . QBasic поддерживал активное сообщество разработчиков игр, [41] [42] что позже помогло породить реализации QB64 и FreeBASIC . [43] В 2013 году игра, написанная на QBasic и скомпилированная с помощью QB64 для современных компьютеров, под названием Black Annex была выпущена в Steam . [44] [45] Blitz Basic , Dark Basic , SdlBasic , Super Game System Basic, [46] PlayBASIC, [47] CoolBasic, [48] AllegroBASIC , [49] ethosBASIC, [50] GLBasic и Basic4GL в дальнейшем удовлетворили этот спрос, вплоть до современных RCBasic, [51] NaaLaa, [52] AppGameKit , [53] Monkey 2 и Cerberus-X. [54]
В 1991 году Microsoft представила Visual Basic , эволюционное развитие QuickBASIC . Он включал конструкции из этого языка, такие как блочно-структурированные управляющие операторы, параметризованные подпрограммы и необязательная статическая типизация , а также объектно-ориентированные конструкции из других языков, такие как «With» и «For Each». Язык сохранил некоторую совместимость со своими предшественниками, например, ключевое слово Dim для объявлений, операторы «Gosub»/Return и необязательные номера строк, которые можно было использовать для поиска ошибок. Важным фактором развития Visual Basic стал новый макроязык для Microsoft Excel , программы для работы с электронными таблицами . К удивлению многих в Microsoft, которые изначально все еще позиционировали его как язык для любителей, язык стал широко использоваться для небольших пользовательских бизнес-приложений вскоре после выпуска VB версии 3.0, которая широко считается первой относительно стабильной версией. Microsoft также выделила его в Visual Basic for Applications и Embedded Visual Basic .
Хотя многие продвинутые программисты все еще насмехались над его использованием, VB эффективно отвечал потребностям малого бизнеса , поскольку к тому времени компьютеры под управлением Windows 3.1 стали достаточно быстрыми, чтобы многие бизнес-процессы могли быть завершены «в мгновение ока» даже с использованием «медленного» языка, если только не были задействованы большие объемы данных. Многие владельцы малого бизнеса обнаружили, что могут создавать свои собственные небольшие, но полезные приложения за несколько вечеров для удовлетворения своих собственных специализированных потребностей. В конце концов, за долгое время существования VB3, знание Visual Basic стало востребованным навыком работы. Microsoft также выпустила VBScript в 1996 году и Visual Basic .NET в 2001 году. Последний по сути обладает той же мощностью, что и C# и Java, но с синтаксисом, который отражает исходный язык Basic, а также обладает некоторой кроссплатформенной возможностью благодаря таким реализациям, как Mono-Basic . [55] IDE с ее событийно-управляемым GUI-конструктором также оказала влияние на другие инструменты быстрой разработки приложений , в частности, на Delphi for Object Pascal компании Borland Software и ее собственные потомки, такие как Lazarus . [56] [57]
Основная поддержка финальной версии 6.0 оригинального Visual Basic закончилась 31 марта 2005 года, за ней последовала расширенная поддержка в марте 2008 года. [58] В связи с его сохраняющейся популярностью [59] существуют попытки сторонних организаций продолжить его поддержку. [60] 2 февраля 2017 года Microsoft объявила, что разработка на VB.NET больше не будет вестись параллельно с разработкой на C#, [61] а 11 марта 2020 года было объявлено, что эволюция языка VB.NET также завершена. [62] Несмотря на это, язык все еще поддерживался. [63]
С 1990 года появилось много других диалектов BASIC, включая QB64 и FreeBASIC с открытым исходным кодом , вдохновлённые QBasic, а также RapidQ , HBasic , Basic For Qt и Gambas в стиле Visual Basic . [4] Современные коммерческие воплощения включают PureBasic , PowerBASIC , Xojo , Monkey X и True BASIC (прямой преемник Dartmouth BASIC от компании, контролируемой Курцем).
В настоящее время также существует несколько простых веб-интерпретаторов BASIC, включая Small Basic от Microsoft и wwwBASIC от Google . [64] Также существует ряд компиляторов, которые преобразуют BASIC в JavaScript . [65] например, NS Basic .
Благодаря более ранним разработкам, таким как Mobile Basic , [66] [67] многие диалекты теперь доступны для смартфонов и планшетов.
На игровых консолях приложение для Nintendo 3DS и Nintendo DSi под названием Petit Computer позволяет программировать на слегка измененной версии BASIC с поддержкой кнопки DS. Версия также была выпущена для Nintendo Switch , которая также поставлялась с версией Fuze Code System, [68] вариантом BASIC [69], впервые реализованным как пользовательская машина Raspberry Pi . [70] Ранее BASIC был доступен на консолях как Family BASIC (для Nintendo Famicom ) и PSX Chipmunk Basic (для оригинальной PlayStation ), в то время как yabasic был портирован на PlayStation 2 , а FreeBASIC — на оригинальный Xbox .
Варианты BASIC доступны на графических и иных программируемых калькуляторах, производимых Texas Instruments ( TI-BASIC ), HP (HP BASIC), Casio ( Casio BASIC ) и другими.
QBasic , версия Microsoft QuickBASIC без компоновщика для создания EXE-файлов, присутствует в потоках операционных систем Windows NT и DOS- Windows 95 и может быть получена для более поздних выпусков, таких как Windows 7 , в которых их нет. До DOS 5 интерпретатором Basic был GW-Basic . QuickBasic является частью серии из трех языков, выпущенных Microsoft для домашних и офисных продвинутых пользователей и мелкомасштабной профессиональной разработки; QuickC и QuickPascal являются двумя другими. Для Windows 95 и 98, в которых QBasic не установлен по умолчанию, их можно скопировать с установочного диска, на котором будет набор каталогов для старого и необязательного программного обеспечения; другие отсутствующие команды, такие как Exe2Bin и другие, находятся в этих же каталогах.
Различные офисные пакеты Microsoft, Lotus и Corel и связанные с ними продукты программируются с помощью Visual Basic в той или иной форме, включая LotusScript , который очень похож на VBA 6. Эмулятор терминала Host Explorer использует WWB в качестве макроязыка; или, в последнее время, программа и пакет, в котором он содержится, программируются на внутреннем варианте Basic, известном как Hummingbird Basic. Вариант VBScript используется для программирования веб-контента, Outlook 97, Internet Explorer и Windows Script Host. WSH также имеет движок Visual Basic for Applications (VBA), установленный как третий из движков по умолчанию вместе с VBScript, JScript и многочисленными фирменными или открытыми движками, которые можно установить, такими как PerlScript , несколько движков на основе Rexx, Python, Ruby, Tcl, Delphi, XLNT, PHP и другими; Это означает, что две версии Basic могут использоваться вместе с другими упомянутыми языками, а также LotusScript, в файле WSF, через компонентную объектную модель и другие конструкции WSH и VBA. VBScript — один из языков, к которому могут обращаться 4Dos, 4NT и улучшенные оболочки Take Command. SaxBasic и WWB также очень похожи на линию реализаций Visual Basic Basic. Макроязык Microsoft Word до Office 97 известен как WordBASIC . Excel 4 и 5 используют сам Visual Basic в качестве макроязыка. Chipmunk Basic , старый интерпретатор, похожий на BASIC 1970-х годов, доступен для Linux , Microsoft Windows и macOS .
Распространенность интерпретаторов BASIC на персональных компьютерах была такова, что учебники когда-то включали простые упражнения «Попробуй это на BASIC», которые побуждали студентов экспериментировать с математическими и вычислительными концепциями на компьютерах в классе или дома. Популярные компьютерные журналы того времени обычно включали программы ввода .
Футурист и писатель-фантаст Дэвид Брин оплакивал потерю повсеместного BASIC в статье в Salon 2006 года [71], как и другие, кто впервые использовал компьютеры в эту эпоху. В свою очередь, статья побудила Microsoft разработать и выпустить Small Basic ; [72] она также вдохновила на подобные проекты, такие как Basic-256 [73] [74] и веб-ориентированный Quite Basic. [75] Дартмут провел празднование 50-летия BASIC 1 мая 2014 года. [76] Педагогическое использование BASIC последовало за другими языками, такими как Pascal , Java и особенно Python . [77]
Дартмутский колледж отпраздновал 50-ю годовщину языка BASIC днем мероприятий [78] 30 апреля 2014 года. Для мероприятия был снят короткометражный документальный фильм. [79]
LET
LET
является необязательным, и строка без другого идентифицируемого ключевого слова будет считать, что это ключевое слово LET
.DATA
READ
DATA
оператора и присваивает его переменной. Внутренний указатель отслеживает последний DATA
считанный элемент и перемещает его на одну позицию вперед с каждым READ
. Большинство диалектов допускают несколько переменных в качестве параметров, считывая несколько значений за одну операцию.RESTORE
DATA
оператор, позволяя программе начать READ
с первого значения. Многие диалекты допускают необязательный номер строки или порядковое значение, чтобы позволить сбросить указатель на выбранное место.DIM
IF ... THEN ... {ELSE}
THEN
, но более поздние версии позволяли любому допустимому утверждению следовать за ним. ELSE
не получил широкой поддержки, особенно в ранних версиях.FOR ... TO ... {STEP} ... NEXT
WHILE ... WEND
иREPEAT ... UNTIL
DO ... LOOP {WHILE}
или{UNTIL}
WHILE
, эти ключевые слова в основном встречаются в более поздних диалектах.GOTO
GO TO
.GOSUB ... RETURN
RETURN
команды, после которой он переходит обратно к оператору, следующему за GOSUB
, либо после двоеточия, либо на следующей строке. Это используется для реализации подпрограмм .ON ... GOTO/GOSUB
DEF FN
DEF FND(x) = x*x
в начале программы. Имена функций изначально ограничивались FN, плюс одна буква, т. е . FNA, FNB ...LIST
PRINT
INPUT
TAB
PRINT
для установки позиции, в которой следующий символ будет показан на экране или напечатан на бумаге. AT
— альтернативная форма.SPC
TAB
но перемещается на несколько дополнительных пробелов из текущего столбца, а не перемещается в указанный столбец.ABS
ATN
COS
EXP
INT
LOG
RND
SIN
SQR
TAN
REM
USR
(«Процедура, обслуживаемая пользователем»)CALL
USR
встречается в некоторых диалектах. Не требует искусственного параметра для завершения синтаксиса, похожего на функцию USR
, и имеет четко определенный метод вызова различных подпрограмм в памяти.TRON
/ TROFF
ASM
Минимальные версии BASIC имели только целочисленные переменные и одно- или двухбуквенные имена переменных, что минимизировало требования к ограниченной и дорогой памяти (RAM). Более мощные версии имели арифметику с плавающей точкой, и переменные могли быть помечены именами длиной шесть или более символов. Были некоторые проблемы и ограничения в ранних реализациях; например, Applesoft BASIC допускал имена переменных длиной в несколько символов, но только первые два были значимыми, поэтому можно было непреднамеренно написать программу с переменными «LOSS» и «LOAN», которые бы рассматривались как одно и то же; присвоение значения «LOAN» молча перезаписывало бы значение, предназначенное как «LOSS». Ключевые слова не могли использоваться в переменных во многих ранних BASIC; «SCORE» интерпретировалось бы как «SC» ИЛИ «E», где ИЛИ было ключевым словом. Строковые переменные обычно различаются во многих диалектах микрокомпьютеров по суффиксу $ после их имени в качестве сигила , а значения часто идентифицируются как строки, будучи разделенными "двойными кавычками". Массивы в BASIC могут содержать целые числа, числа с плавающей точкой или строковые переменные.
Некоторые диалекты BASIC поддерживали матрицы и матричные операции , которые можно было использовать для решения наборов одновременных линейных алгебраических уравнений. Эти диалекты напрямую поддерживали матричные операции, такие как присваивание, сложение, умножение (совместимых матричных типов) и вычисление определителя. Многие микрокомпьютерные BASIC не поддерживали этот тип данных; матричные операции все еще были возможны, но их нужно было явно программировать на элементах массива.
Начинающие программисты на BASIC на домашнем компьютере могут начать с простой программы, возможно, используя оператор PRINT языка для отображения сообщения на экране; хорошо известным и часто воспроизводимым примером является программа Кернигана и Ритчи « Hello, World!» :
10 ПЕЧАТЬ "Привет, мир!" 20 КОНЕЦ
Для заполнения дисплея сообщением можно использовать бесконечный цикл :
10 ПЕЧАТЬ "Привет, мир!" 20 ПЕРЕЙТИ К 10
Обратите внимание, что END
оператор необязателен и не имеет действия в большинстве диалектов BASIC. Он не всегда включался, как в этом примере. Эту же программу можно изменить для печати фиксированного количества сообщений с помощью общего FOR...NEXT
оператора:
10 ПУСТЬ N = 10 20 ДЛЯ I = 1 ДО N 30 ПЕЧАТЬ "Hello, World!" 40 ДАЛЕЕ I
Большинство версий BASIC для домашних компьютеров, таких как MSX BASIC и GW-BASIC , поддерживали простые типы данных, циклы и массивы. Следующий пример написан для GW-BASIC, но будет работать в большинстве версий BASIC с минимальными изменениями:
10 ВВОД "Как вас зовут: " ; U$ 20 ПЕЧАТЬ "Привет " ; U$ 30 ВВОД "Сколько звезд вы хотите: " ; N 40 S$ = "" 50 ДЛЯ I = 1 ДО N 60 S$ = S$ + "*" 70 ДАЛЕЕ I 80 ПЕЧАТЬ S$ 90 ВВОД "Хотите больше звезд?" ; A$ 100 ЕСЛИ ДЛИНА ( A$ ) = 0 ТО ПЕРЕЙТИ К 90 110 A$ = ЛЕВОСТЬ$ ( A$ , 1 ) 120 ЕСЛИ A$ = "Y" ИЛИ A$ = "y" ТО ПЕРЕЙТИ К 30 130 ПЕЧАТЬ "До свидания " ; U$ 140 КОНЕЦ
Полученный диалог может выглядеть примерно так:
Как тебя зовут: МайкПривет МайкСколько звезд вы хотите: 7*******Хотите больше звезд? даСколько звезд вы хотите: 3***Хотите больше звезд? нетПрощай, Майк.
Оригинальный Dartmouth Basic был необычен тем, что имел ключевое слово матрицы, MAT. [f] Хотя оно и не было реализовано в большинстве более поздних производных микропроцессоров, оно используется в этом примере из руководства 1968 года [83] , которое усредняет введенные числа:
5 ПУСТЬ S = 0 10 ВВОД MAT V 20 ПУСТЬ N = ЧИСЛО 30 ЕСЛИ N = 0 ТО 99 40 ДЛЯ I = 1 ДО N 45 ПУСТЬ S = S + V ( I ) 50 ДАЛЕЕ I 60 ПЕЧАТЬ S / N 70 ПЕРЕЙТИ К 5 99 КОНЕЦ
Второе поколение BASIC (например, VAX Basic , SuperBASIC , True BASIC , QuickBASIC , BBC BASIC , Pick BASIC , PowerBASIC , Liberty BASIC , QB64 и (возможно) COMAL ) ввело в язык ряд функций, в первую очередь связанных со структурным и процедурно-ориентированным программированием. Обычно нумерация строк опускается из языка и заменяется метками (для GOTO ) и процедурами для поощрения более простого и гибкого проектирования. [38] Кроме того, были введены ключевые слова и структуры для поддержки повторения, выбора и процедур с локальными переменными.
Следующий пример приведен на языке Microsoft QuickBASIC:
Пример REM QuickBASICREM Предварительное объявление — позволяет основному коду вызывать REM-подпрограмму, которая определена позже в исходном коде DECLARE SUB PrintSomeStars ( StarCount! ) REM Основная программа следует INPUT "Как вас зовут: " , ИмяПользователя$ PRINT "Привет " ; ИмяПользователя$ DO INPUT "Сколько звезд вы хотите: " , NumStars CALL PrintSomeStars ( NumStars ) DO INPUT "Хотите еще звезд? " , Ответ$ LOOP UNTIL Ответ$ <> "" Ответ$ = LEFT$ ( Ответ$ , 1 ) LOOP WHILE UCASE$ ( Ответ$ ) = "Y" PRINT "До свидания " ; ИмяПользователя$ END REM определение подпрограммы SUB PrintSomeStars ( StarCount ) REM Эта процедура использует локальную переменную с именем Stars $ Stars$ = STRING$ ( StarCount , "*" ) PRINT Stars$ END SUB
Третье поколение диалектов BASIC, таких как Visual Basic , Xojo , Gambas , StarOffice Basic , BlitzMax и PureBasic, представило возможности для поддержки объектно-ориентированной и событийно-управляемой парадигмы программирования. Большинство встроенных процедур и функций теперь представлены как методы стандартных объектов, а не операторы . Кроме того, операционная система стала более доступной для языка BASIC.
Следующий пример написан на Visual Basic .NET :
Открытый модуль StarsProgram Частная функция Ask ( prompt As String ) As String Console . Write ( prompt ) Возврат Console . ReadLine () Конец функции Public Sub Main () Dim userName = Ask ( "Как вас зовут:" ) Console.WriteLine ( "Привет, {0} " , userName ) Dim ответ как строка Do Dim numStars = CInt ( Ask ( "Сколько звезд вы хотите: " )) Dim stars As New String ( "*"c , numStars ) Console . WriteLine ( stars ) Do answer = Ask ( "Хотите больше звезд?" ) Цикл до ответа <> "" Цикл до ответа . StartsWith ( "Y" , StringComparison . OrdinalIgnoreCase ) Console.WriteLine ( " Goodbye {0}" , userName ) End Sub End Module
continue
для этой цели был DO, но все равно требовалось вводить номер строки.В 1980-х годах компиляторы C получили широкое распространение, и C стал чрезвычайно популярным языком.
Появляется Borland Delphi, который объединил Object Pascal с визуальным конструктором форм в стиле VB. Object Pascal был собственным языком Borland с полной поддержкой наследования. Он нечувствителен к регистру и не намного сложнее VB для кодирования, как только вы привыкнете часто вводить begin и end (приблизительно эквивалентно фигурным скобкам в C). В отличие от VB, в нем разумно используются разные операторы для присваивания (:=) и сравнения (=).
В качестве альтернативы можно пережить дни соперничества BASIC/Pascal с помощью совместимого с Delphi Lazarus.
я слышал о других языках, которые предположительно делают возможной разработку без обращения к Java, таких языках, как CellularBASIC (который немного похож на QBASIC) и Hecl (который, кажется, основан на Tcl).
После некоторых исследований в сети я наткнулся на этот сайт о CellularBASIC. Это полноценный интерпретатор BASIC, написанный на JAVA.
Ознакомьтесь со статьей "Почему Джонни не умеет кодировать", которая вдохновила на создание BASIC-256.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )