Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

BASIC ( Универсальная Символическая Инструкция для начинающих Код ) [1] представляет собой семейство общего назначения , языков программирования высокого уровня , чья философия дизайна подчеркивает простоту использования. Первоначальная версия была разработана Джоном Г. Кемени и Томасом Э. Куртцем и выпущена в Дартмутском колледже в 1964 году. Они хотели дать возможность студентам, не относящимся к естественным наукам и математике, использовать компьютеры. В то время почти все виды использования компьютеров требовали написания специального программного обеспечения, чему, как правило, учились только ученые и математики .

В дополнение к самому языку Кемени и Курц разработали Дартмутскую систему разделения времени (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 перестал использоваться в конце 1980-х, когда на рынок вышли новые машины с гораздо большими возможностями, а другие языки программирования (такие как Pascal и C ) стали приемлемыми. В 1991 году Microsoft выпустила Visual Basic , объединив сильно обновленную версию BASIC с конструктором визуальных форм . Это возрожденное использование языка, и "VB" остается основным языком программирования в форме VB.NET .

Происхождение [ править ]

Джон Г. Кемени был заведующим математическим факультетом Дартмутского колледжа. Основываясь в основном на его репутации новатора в преподавании математики, в 1959 году школа выиграла премию Фонда Альфреда П. Слоана в размере 500 000 долларов на строительство нового здания кафедры. [2] Томас Курц присоединился к кафедре в 1956 году, а с 1960-х годов Кемени и Курц пришли к соглашению о необходимости повышения грамотности в программировании среди студентов вне традиционных областей STEM. Позже Кемени отметил, что «Наше видение состояло в том, что каждый студент в кампусе должен иметь доступ к компьютеру, а любой преподаватель должен иметь возможность использовать компьютер в классе, когда это необходимо. Это было так просто». [3]

Кемени и Курц провели два предыдущих эксперимента с упрощенными языками, DARSIMCO (упрощенный код Дартмута) и DOPE (эксперимент Дартмутского упрощенного программирования) . Они не продвинулись дальше одного класса первокурсников. Последовали новые эксперименты с использованием Fortran и ALGOL , но Курц пришел к выводу, что эти языки слишком сложны для того, чего они желали. Как заметил Курц, в Фортране было множество команд странной формы, в частности, «почти невозможно запомнить соглашение для определения цикла:« DO 100, I = 1, 10, 2 ». Это« 1, 10, 2 »или '1, 2, 10', и требуется ли запятая после номера строки? " [3]

Более того, ключевой проблемой было отсутствие какой-либо немедленной обратной связи; машины той эпохи использовали пакетную обработку, и выполнение программы занимало много времени. Пока Курц был в Массачусетском технологическом институте , Джон Маккарти предположил, что разделение времени предлагает решение; одна машина может разделить время обработки между множеством пользователей, создавая у них иллюзию наличия (медленного) компьютера. [4] Небольшие программы возвращали результаты за несколько секунд. Это привело к росту интереса к системе с разделением времени и новому языку, специально предназначенному для студентов, не изучающих естественные науки. [3]

Кемени написал первую версию BASIC. Акроним BASIC происходит от имени неопубликованной работе Томаса Курца. [5] Новый язык в значительной степени основан на FORTRAN II; операторы были однострочными, числа использовались для обозначения цели циклов и ветвлений, и многие команды были похожи или идентичны Фортрану. Однако синтаксис был изменен везде, где его можно было улучшить. Например, сложный для запоминания DOцикл был заменен гораздо более простым для запоминания FOR I = 1 TO 10 STEP 2, а номер строки, использованный в DO, вместо этого был обозначен символом NEXT I. [a] Точно так же загадочныйIFОператор Фортрана, синтаксис которого соответствовал конкретной инструкции машины, на которой он был первоначально написан, стал проще IF I=5 THEN GOTO 100. Эти изменения сделали язык менее своеобразным, сохранив при этом общую структуру и похожий на оригинальный FORTRAN. [3]

Проект получил грант в $ 300,000 от Национального научного фонда , который был использован для приобретения GE-225 компьютера для обработки, и процессор Datanet-30 в режиме реального времени для обработки Телетайпной Модели 33 телепринтеров , используемых для ввода и вывода. Команда из дюжины студентов работала над проектом около года, написав как систему DTSS, так и компилятор BASIC. [3] Первая версия языка BASIC была выпущена 1 мая 1964 года. [6] [7] Одной из аспирантов группы внедрения была Мэри Кеннет Келлер , одна из первых людей в США, получивших докторскую степень. . в информатике и первая женщина, сделавшая это. [8]

Первоначально BASIC был сконцентрирован на поддержке простой математической работы, с поддержкой матричной арифметики, начиная с его первоначальной реализации в качестве языка пакетной обработки, а функциональность символьных строк была добавлена ​​к 1965 году. Использование в университете быстро расширилось, потребовав замены основного ЦП на GE- 235, [3] и еще позже GE-635. К началу 1970-х годов к машинам в Дартмуте были подключены сотни терминалов, некоторые из которых были удаленными.

Желая, чтобы использование языка стало широко распространенным, его разработчики сделали компилятор доступным бесплатно. В 1960-х годах программное обеспечение стало платным товаром; до этого она предоставлялась бесплатно как услуга с очень дорогими компьютерами, обычно доступными только в аренду. Они также сделали его доступным для средних школ в Ганновере, районе Нью-Гэмпшира и на региональном уровне по всей Новой Англии на телетайпах Teletype Model 33 и Model 35, подключенных к Дартмуту через коммутируемые телефонные линии, и они приложили значительные усилия для продвижения языка. В последующие годы, когда появились другие диалекты BASIC, оригинальный диалект BASIC Кемени и Курца стал известен как Dartmouth BASIC .

Нью-Гэмпшир признал это достижение в 2019 году, установив в Ганновере исторический маркер шоссе, описывающий создание «первого удобного языка программирования». [9]

Распространение на сервисах с разделением времени [ править ]

Появление BASIC произошло как часть более широкого движения к системам с разделением времени. Идея, впервые сформулированная в конце 1950-х годов, стала настолько доминирующей в компьютерной индустрии к началу 1960-х годов, что ее сторонники говорили о будущем, в котором пользователи будут «покупать время на компьютере так же, как в среднем домохозяйство покупает электроэнергию и воду. от коммунальных предприятий ". [10]

General Electric, работавшая над проектом в Дартмуте, написала свою собственную операционную систему и запустила онлайн-систему с разделением времени, известную как Mark I. В ней BASIC был одним из основных аргументов в пользу продаж. Другие компании в развивающейся сфере быстро последовали их примеру; Tymshare представила SUPER BASIC в 1968 году, CompuServe имела версию на DEC-10 при запуске в 1969 году, а к началу 1970-х годов BASIC стал в основном универсальным для универсальных мэйнфреймов. Даже IBM в конечном итоге присоединилась к клубу, представив VS-BASIC в 1973 году. [11]

Хотя службы разделения времени с BASIC какое-то время были успешными, предсказанного ранее широкого успеха не суждено было сбыться. Появление миникомпьютеров в тот же период, и особенно недорогих микрокомпьютеров в середине 1970-х, позволило каждому покупать и запускать свои собственные системы, а не покупать время в сети, которое обычно оплачивается в долларах за минуту. [b] [12]

Распространение на миникомпьютерах [ править ]

Система HP 2000 была разработана для выполнения BASIC с разделением времени в качестве своей основной задачи.

BASIC, будучи небольшим по своей природе, естественно подходил для перехода на рынок мини-компьютеров , который зарождался одновременно с сервисами с разделением времени. Эти машины имели очень маленькую основную память , возможно, всего 4 Кбайт в современной терминологии [c], и не имели высокопроизводительной памяти, такой как жесткие диски, которые делают компиляторы практичными. В этих системах BASIC обычно реализовывался как интерпретатор, а не как компилятор из-за уменьшения потребности в рабочей памяти. [d]

Особенно важным примером был HP Time-Shared BASIC , который, как и оригинальная система Dartmouth, использовал два компьютера, работающих вместе, для реализации системы разделения времени. Первый, младший компьютер серии HP 2100 , использовался для управления вводом данных пользователем, а также для сохранения и загрузки своих программ на ленту или диск. Другая, высокопроизводительная версия той же базовой машины, запускала программы и генерировала выходные данные. За 100 000 долларов можно было приобрести машину, способную одновременно обслуживать от 16 до 32 пользователей. [13] Система, представленная как HP 2000, была первой мини-платформой, предлагающей разделение времени, и сразу же имела безудержный успех, благодаря чему HP стала третьим по величине поставщиком в области миникомпьютеров после DEC иОбщие данные (DG). [14]

DEC, лидер в области миникомпьютеров с середины 1960-х годов, изначально игнорировала BASIC. Это произошло из-за их работы с RAND Corporation , которая приобрела PDP-6 для запуска своего языка JOSS , концептуально очень похожего на BASIC. [15] Это привело к тому, что DEC представила уменьшенную, очищенную версию JOSS, известную как FOCAL , которую они активно продвигали в конце 1960-х годов. Однако, поскольку системы с разделением времени широко предлагают BASIC, и все их конкуренты в области миникомпьютеров делают то же самое, клиенты DEC требовали BASIC. После того, как руководство неоднократно игнорировало их просьбы, Дэвид Х. Аль взял на себя ответственность купить BASIC для PDP-8., который имел большой успех на рынке образования. К началу 1970-х годов о FOCAL и JOSS забыли, и BASIC стал почти универсальным на рынке мини-компьютеров. [16] DEC представит свою обновленную версию BASIC-PLUS для использования в операционной системе с разделением времени RSTS / E.

В этот период на BASIC было написано несколько простых текстовых игр, в первую очередь Star Trek Майка Мэйфилда . Дэвид Аль собрал их, некоторые из них были перенесены из FOCAL, и опубликовал их в образовательном информационном бюллетене, который он составил. Позже он собрал некоторые из них в виде книги « 101 BASIC Computer Games» , опубликованной в 1973 году. [17] В тот же период Аль был вовлечен в создание небольшого компьютера для образовательных целей, первого персонального компьютера . Когда руководство отказалось поддержать эту концепцию, Аль покинул DEC в 1974 году, чтобы основать основополагающий компьютерный журнал Creative Computing . Книга оставалась популярной и несколько раз переиздавалась. [18]

Взрывной рост: эпоха домашних компьютеров [ править ]

Commodore BASIC v2.0 на Commodore 64
MSX BASIC версии 3.0
«Тренируйся Basic каждый день!» - гласит плакат (внизу в центре) в русской школе (ок. 1985–1986).

Появление первых микрокомпьютеров в середине 1970-х стало началом стремительного роста BASIC. Его преимущество было в том, что он был довольно хорошо известен молодым дизайнерам и компьютерным энтузиастам, проявлявшим интерес к микрокомпьютерам, многие из которых видели BASIC на мини- или мэйнграммах. Несмотря на знаменитое суждение Дейкстры в 1975 году: «Практически невозможно научить хорошему программированию студентов, которые ранее знакомы с BASIC: как потенциальные программисты они умственно искалечены без всякой надежды на возрождение», [19] BASIC был одним из несколько языков, которые были достаточно высокоуровневыми, чтобы их могли использовать те, кто не обучен, и достаточно маленькими, чтобы поместиться в микрокомпьютеры того времени, что делает его де-факто стандартный язык программирования на ранних микрокомпьютерах.

Первая версия BASIC для микрокомпьютера была написана в соавторстве с Биллом Гейтсом , Полом Алленом и Монте Давидофф для их недавно созданной компании Micro-Soft. Он был выпущен MITS в формате перфоленты для Altair 8800 вскоре после самой машины [20], сразу же закрепив BASIC как основной язык ранних микрокомпьютеров. Члены Homebrew Computer Club начали распространять копии программы, в результате чего Гейтс написал Открытое письмо любителям , в котором жаловался на этот ранний пример компьютерного пиратства .

Частично в ответ на письмо Гейтса, и частично , чтобы сделать еще меньше BASIC , который будет работать с пользой на 4 кбайт машинах, [е] Боб Альбрехт призвал Деннис Эллисон написать свой собственный вариант языка. О том, как разработать и реализовать урезанную версию интерпретатора для языка BASIC, рассказывалось в статьях Эллисон в первых трех ежеквартальных выпусках информационного бюллетеня Народной компьютерной компании, опубликованном в 1975 году, и реализациях с исходным кодом, опубликованных в журнале доктора Добба. Tiny BASIC Художественная гимнастика и ортодонтия: бегущий свет без овербайта . Это привело к появлению большого количества Tiny BASIC.с добавленными функциями или другими улучшениями, причем версии от Tom Pittman и Li-Chen Wang становятся особенно известными. [21]

Micro-Soft, к тому времени Microsoft , портировала свой интерпретатор для MOS 6502 , который быстро стал одним из самых популярных микропроцессоров 8-битной эры. Когда начали появляться новые микрокомпьютеры, особенно «троица 1977 года» TRS-80 , Commodore PET и Apple II , они либо включали версию кода MS, либо быстро вводили с ней новые модели. К 1978 году MS BASIC стал стандартом де-факто, и практически каждый домашний компьютер 1980-х годов включал его в ПЗУ . При загрузке был представлен интерпретатор BASIC в прямом режиме .

Commodore Business Machines включает Commodore BASIC , основанный на Microsoft BASIC. У Apple II и TRS-80 было по две версии BASIC, меньшая вводная версия, представленная с начальными выпусками машин, и версия на базе MS, представленная по мере роста интереса к платформам. По мере появления новых компаний в этой области были добавлены дополнительные версии, которые слегка изменили семейство BASIC. В 8-битном семействе Atari был собственный Atari BASIC, который был модифицирован для установки на картридж ROM емкостью 8 КБ. Sinclair BASIC был представлен в 1980 году с Sinclair ZX-80 , а позже был расширен для Sinclair ZX-81 и Sinclair ZX Spectrum . ВBBC опубликовала BBC BASIC , разработанный Acorn Computers Ltd , включающий множество дополнительных ключевых слов структурированного программирования и расширенные функции операций с плавающей запятой.

По мере роста популярности BASIC в этот период компьютерные журналы публиковали полный исходный код на BASIC для видеоигр, утилит и других программ. Учитывая прямолинейный характер BASIC, было несложно набрать код из журнала и запустить программу. Были опубликованы различные журналы с программами для конкретных компьютеров, хотя некоторые программы BASIC считались универсальными и могли использоваться на машинах, работающих под управлением любого варианта BASIC (иногда с небольшими изменениями). Также было доступно множество книг по программам для набора текста, и, в частности, Ahl опубликовал версии оригинальной игры 101 BASIC, преобразованные в диалект Microsoft, и опубликовал их из Creative Computing как BASIC Computer Games. Эта книга и ее продолжения содержат сотни готовых программ, которые можно легко преобразовать практически на любую платформу, работающую на BASIC. [17] [22] [23] Книга поступила в магазины в 1978 году, когда начинался рынок домашних компьютеров , и стала первой компьютерной книгой, разошедшейся миллионным тиражом. Более поздние пакеты, такие как Learn to Program BASIC , также будут посвящены играм в качестве вводной. На компьютерах CP / M, ориентированных на бизнес, которые вскоре получили широкое распространение в среде малого бизнеса, Microsoft BASIC ( MBASIC ) был одним из ведущих приложений. [24]

В 1978 году Дэвид Лиен опубликовал первое издание The BASIC Handbook: An Encyclopedia of the BASIC Computer Language , в котором были задокументированы ключевые слова на более чем 78 различных компьютерах. К 1981 году во втором издании были задокументированы ключевые слова с более чем 250 различных компьютеров, что свидетельствует о стремительном росте эпохи микрокомпьютеров. [25]

IBM PC и совместимые устройства [ править ]

Кассета IBM BASIC 1.10

Когда 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) и QBasic , которые обычно поставляются вместе с машиной. Кроме того, они выпустили компилятор Microsoft BASIC Compiler, предназначенный для профессиональных программистов. Turbo Pascal - издатель Borland опубликовалTurbo Basic 1.0 в 1985 году (предыдущие версии все еще продаются первоначальным автором под именем PowerBASIC ). Microsoft написала оконный AmigaBASIC, который поставлялся с версией 1.1 компьютеров Amiga с упреждающим многозадачным интерфейсом (конец 1985 - начало 1986), хотя продукт обычно не имел никаких знаков Microsoft.

Эти более поздние варианты представили множество расширений, таких как улучшенное управление строками и поддержка графики, доступ к файловой системе и дополнительные типы данных . Более важными были средства для структурного программирования , включая дополнительные управляющие структуры и соответствующие подпрограммы, поддерживающие локальные переменные . Однако ко второй половине 1980-х годов пользователи все чаще использовали готовые приложения, написанные другими, вместо того, чтобы изучать программирование самостоятельно; в то время как профессиональные программисты теперь имели широкий спектр более продвинутых языков, доступных на небольших компьютерах. C и более поздние C ++стали предпочтительными языками для разработки профессиональных приложений для "термоусадочной упаковки" . [26] [27]

Visual Basic [ править ]

В 1991 году Microsoft представила Visual Basic , эволюционное развитие QuickBasic. Он включал конструкции из этого языка, такие как операторы управления с блочной структурой, параметризованные подпрограммы и необязательная статическая типизация, а также объектно-ориентированные конструкции из других языков, таких как «With» и «For Each». Язык сохранил некоторую совместимость со своими предшественниками, такими как ключевое слово Dim для объявлений, операторы «Gosub» / Return и дополнительные номера строк, которые можно было использовать для поиска ошибок. Важным драйвером для разработки Visual Basic был новый язык макросов для Microsoft Excel , электронная таблица.программа. К удивлению многих в Microsoft, которые изначально продавали его как язык для любителей, этот язык стал широко использоваться для небольших специализированных бизнес-приложений вскоре после выпуска VB версии 3.0, которая широко считается первой относительно стабильной версией.

В то время как многие продвинутые программисты все еще насмехались над его использованием, VB эффективно удовлетворял потребности малого бизнеса, поскольку к тому времени компьютеры под управлением Windows 3.1 стали достаточно быстрыми, чтобы многие бизнес-процессы могли выполняться «в мгновение ока» даже с использованием «медленный» язык, пока не задействованы большие объемы данных. Многие владельцы малого бизнеса обнаружили, что они могут создавать свои собственные небольшие, но полезные приложения за несколько вечеров для удовлетворения своих особых потребностей. В конце концов, за долгую жизнь VB3 знание Visual Basic стало востребованным профессиональным навыком. Microsoft также выпустила VBScript в 1996 году и Visual Basic .NET в 2001 году. Последний по сути имеет те же возможности, что и C # и Java.но с синтаксисом, который отражает исходный базовый язык. IDE , с его событиями GUI Builder , также оказал влияние на другие инструменты, в первую очередь Borland Software «s Delphi для Object Pascal и его собственных потомков , таких как Лазаря . [28]

Основная поддержка окончательной версии 6.0 исходного Visual Basic закончилась 31 марта 2005 г., а в марте 2008 г. последовала расширенная поддержка. [29] 11 марта 2020 г. Microsoft объявила, что эволюция языка VB.NET также завершилась, хотя все еще поддерживается. [30] Между тем существуют конкуренты, такие как Xojo и Gambas .

Три современных варианта Basic: Mono Basic, OpenOffice.org Basic и Gambas

Версии и диалекты после 1990 г. [ править ]

Многие другие диалекты BASIC также возникли с 1990 года, включая QB64 и FreeBASIC с открытым исходным кодом , вдохновленные QBasic, и RapidQ в стиле Visual Basic , Basic для Qt и Gambas . Современные коммерческие версии включают PureBasic , PowerBASIC , Xojo , Monkey X и True BASIC (прямой преемник Dartmouth BASIC от компании, контролируемой Курцем).

Сейчас также существует несколько простых интерпретаторов BASIC на базе Интернета, в том числе Small Basic от Microsoft . Многие версии BASIC теперь доступны для смартфонов и планшетов через Apple App Store или Google Play store для Android. На игровых консолях приложение для Nintendo 3DS и Nintendo DSi под названием Petit Computer позволяет программировать в слегка измененной версии BASIC с поддержкой кнопки DS.

Калькуляторы [ править ]

Варианты BASIC доступны для графических и других программируемых калькуляторов производства Texas Instruments , HP, Casio и других.

Командная строка Windows [ править ]

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 и другие, находятся в тех же каталогах.

Другое [ править ]

BASIC появился в некоторых системах видеоигр, таких как Nintendo Famicom .

Различные офисные пакеты Microsoft, Lotus и Corel и связанные с ними продукты программируются с помощью Visual Basic в той или иной форме, включая LotusScript , который очень похож на VBA 6. Эмулятор терминала Host Explorer использует WWB в качестве языка макросов; или в последнее время программа и набор, в котором она содержится, могут быть запрограммированы во внутреннем базовом варианте, известном как «Hummingbird Basic». Вариант VBScript используется для программирования веб-содержимого, Outlook 97, Internet Explorer и Windows Script Host. WSH также имеет движок Visual Basic для приложений (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. Макроязык до Office 97 для Microsoft Word известен как WordBASIC . В Excel 4 и 5 в качестве языка макросов используется сам Visual Basic. Chipmunk Basic , интерпретатор старой школы, похожий на BASIC 1970-х годов, доступен для Linux , Microsoft Windows иmacOS .

Наследие [ править ]

Повсеместное распространение интерпретаторов BASIC на персональных компьютерах было таково, что учебники когда-то включали простые упражнения «Попробуй на BASIC», которые побуждали студентов экспериментировать с математическими и вычислительными концепциями на классных или домашних компьютерах. Популярные компьютерные журналы того времени обычно включали программы для ввода текста .

Футурист и писатель-фантаст Дэвид Брин оплакивал потерю вездесущего BASIC в статье Салона 2006 года [31], как и другие, кто впервые использовал компьютеры в ту эпоху. В свою очередь, статья побудила Microsoft разработать и выпустить Small Basic , [32] ; он также вдохновил на создание подобных проектов, таких как Basic-256 . [33] Дартмут провел празднование 50-летия BASIC 1 мая 2014 года [34], как и другие организации; по крайней мере одна организация программистов VBA организовала празднование 35-й годовщины в 1999 году. [35]

30 апреля 2014 г. Дартмутский колледж отметил 50-летие языка BASIC днем ​​событий [36] . По этому случаю был снят короткометражный документальный фильм. [37]

Синтаксис [ править ]

Типичные ключевые слова BASIC[ редактировать ]

Обработка данных [ править ]

LET
присваивает значение (которое может быть результатом выражения ) переменной. В большинстве диалектов BASIC LETэто необязательно, и строка без других идентифицируемых ключевых слов предполагает, что это ключевое слово является LET.
DATA
содержит список значений, которые назначаются последовательно с помощью команды READ.
READ
читает значение из DATAоператора и присваивает его переменной. Внутренний указатель отслеживает последний DATAпрочитанный элемент и перемещает его на одну позицию вперед с каждым READ.
RESTORE
сбрасывает внутренний указатель на первый DATAоператор, позволяя программе начать READс первого значения.

Управление потоком программы [ править ]

IF ... THEN ... {ELSE}
используется для сравнения или принятия решений. ELSEне получил широкой поддержки, особенно в более ранних версиях.
FOR ... TO ... {STEP} ... NEXT
повторить часть кода заданное количество раз. В цикле доступна переменная, которая действует как счетчик .
WHILE ... WEND и REPEAT ... UNTIL
повторить часть кода, пока выполняется указанное условие. Условие может оцениваться перед каждой итерацией цикла или после. Обе эти команды встречаются в основном в более поздних диалектах.
DO ... LOOP {WHILE} или же {UNTIL}
повторять часть кода бесконечно или пока / до тех пор, пока указанное условие не станет истинным. Условие может оцениваться перед каждой итерацией цикла или после. Подобно WHILEэтим ключевым словам, в основном встречаются в более поздних диалектах.
GOTO
переходит к пронумерованной или маркированной строке в программе.
GOSUB
переходит к пронумерованной или помеченной строке, выполняет найденный там код до тех пор, пока не достигнет RETURNкоманды, после чего переходит обратно к оператору, следующему за GOSUBдвоеточием, либо на следующей строке. Это используется для реализации подпрограмм .
ON ... GOTO/GOSUB
выбирает, куда прыгать, исходя из указанных условий. См. Инструкции Switch для других форм.
DEF FN
пара ключевых слов, введенная в начале 1960-х годов для определения функций. Исходные функции BASIC были смоделированы на основе однострочных функций FORTRAN. Функции BASIC были одним выражением с переменными аргументами, а не подпрограммами , с синтаксисом на модели 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
содержит комментарий программиста или REMark; часто используется, чтобы дать название программе и помочь определить цель данного раздела кода.
USR
передает управление программой в подпрограмму на машинном языке , обычно вводимую как буквенно-цифровую строку или в список операторов DATA.
CALL
Альтернативная форма USRвстречается в некоторых диалектах. Не требует искусственного параметра для завершения функционального синтаксиса USRи имеет четко определенный метод вызова различных подпрограмм в памяти.
TRON
включает отображение номера каждой строки по мере ее выполнения («TRace ON»). Это было полезно для отладки или исправления проблем в программе.
TROFF
выключает отображение номеров строк.
ASM
некоторые компиляторы, такие как Freebasic, [38] Purebasic, [39] и Powerbasic [40], также поддерживают встроенный язык ассемблера , позволяя программисту смешивать высокоуровневый и низкоуровневый код, обычно с префиксом "ASM" или "!" заявления.

Типы данных и переменные [ править ]

Минимальные версии BASIC имели только целочисленные переменные и одно- или двухбуквенные имена переменных, что минимизировало требования к ограниченной и дорогой памяти (RAM). Более мощные версии имели арифметику с плавающей запятой, и переменные могли быть помечены именами длиной шесть или более символов. В ранних реализациях были некоторые проблемы и ограничения; например, Applesoft BASIC позволял именам переменных быть длиной в несколько символов, но только первые два были значимыми, поэтому можно было непреднамеренно написать программу с переменными «LOSS» и «LOAN», которые считались бы одинаковыми; присвоение значения «ССУДОМ» приведет к незаметной перезаписи значения, предназначенного для «УБЫТКИ». Ключевые слова не могли использоваться в переменных во многих ранних BASIC; «СЧЕТ» будет интерпретироваться как «SC».ИЛИ "E", где ИЛИ было ключевым словом. НитьВо многих диалектах микрокомпьютеров переменные обычно выделяются суффиксом $ к их имени в качестве сигилы , а значения часто идентифицируются как строки, будучи разделенными «двойными кавычками». Массивы в BASIC могут содержать целые числа, переменные с плавающей запятой или строковые переменные.

Некоторые диалекты BASIC поддерживают матрицы и матричные операции , полезные для решения наборов одновременных линейных алгебраических уравнений. Эти диалекты будут напрямую поддерживать матричные операции, такие как присваивание, сложение, умножение (совместимых типов матриц) и вычисление определителя. Многие микрокомпьютерные BASIC не поддерживают этот тип данных; матричные операции все еще были возможны, но должны были быть явно запрограммированы для элементов массива.

Примеры [ править ]

Неструктурированный BASIC [ править ]

Новички в программировании на BASIC на домашнем компьютере могут начать с простой программы, возможно, используя оператор PRINT языка для отображения сообщения на экране; хорошо известны и часто реплицируются пример Керниган и Ритчи «s „Hello, World!“ программа :

10 ПЕЧАТЬ "Hello, World!" 20 КОНЕЦ   

Можно использовать бесконечный цикл , чтобы заполнить дисплей сообщением:

10 ПЕЧАТЬ "Hello, World!" 20 GOTO 10    

Обратите внимание, что этот ENDоператор является необязательным и не имеет действия в большинстве диалектов BASIC. Он не всегда был включен, как в этом примере. Эту же программу можно изменить, чтобы печатать фиксированное количество сообщений, используя общий FOR...NEXTоператор:

10 Пусть N = 10 20 FOR I = 1 TO N 30 ПЕЧАТЬ "Hello, World!" 40 ДАЛЕЕ I          

Большинство версий BASIC первого поколения, такие как MSX BASIC и GW-BASIC , поддерживали простые типы данных, циклы цикла и массивы. Следующий пример написан для GW-BASIC, но будет работать в большинстве версий BASIC с минимальными изменениями:

10 ВВОД "Как Вас зовут:" ; U $ 20 ПЕЧАТЬ «Здравствуйте» ; U $ 30 INPUT «Сколько звезд вы хотите:» ; N 40 S $ = "" 50 FOR I = 1 TO N 60 S $ = S $ + "*" 70 NEXT I 80 PRINT S $ 90 INPUT «Хотите больше звездочек?» ; A $ 100, ЕСЛИ LEN ( A $ ) = 0                                   THEN GOTO 90 110 A $ = LEFT $ ( A $ , 1 ) 120 IF A $ = "Y" OR A $ = "y" THEN GOTO 30 130 ПЕЧАТЬ "Goodbye" ; 140 долл. США КОНЕЦ                     

В результате диалоговое окно может выглядеть следующим образом:

Как тебя зовут: МайкПривет МайкСколько звезд вы хотите: 7*******Вы хотите больше звезд? даСколько звезд вы хотите: 3***Вы хотите больше звезд? нетПрощай, Майк

Первоначальный Dartmouth Basic был необычным из-за наличия ключевого слова матрицы MAT. [f] Хотя он не реализован в большинстве более поздних производных микропроцессоров, он используется в этом примере из руководства 1968 года [41], который усредняет вводимые числа:

5 LET S = 0 10 МАТ ВХОД В 20 ЛПЭ Н = NUM 30 ЕСЛИ N = 0 ТОГДА 99 40 ДЛЯ I = 1 TO N 45 LET S = S + V ( I ) 50 СЛЕДУЮЩИЙ я 60 ПЕЧАТЬ S / N 70 ГО К 5 99 КОНЕЦ                                             

Структурированный БЕЙСИК [ править ]

BASIC второго поколения (например, VAX Basic , SuperBASIC , True BASIC , QuickBASIC , BBC BASIC , Pick BASIC , PowerBASIC , Liberty BASIC и (возможно) COMAL ) внесли в язык ряд функций, в первую очередь связанных со структурой и процедурами. ориентированное программирование. Обычно нумерация строк опускается в языке и заменяется метками (для GOTO ) и процедурами, способствующими более простому и гибкому дизайну. [42] Кроме того, были введены ключевые слова и структуры для поддержки повторения, выбора и процедур с локальными переменными.

Следующий пример находится в Microsoft QuickBASIC:

Пример REM QuickBASICОбъявление REM Forward - позволяет основному коду вызывать подпрограмму REM, которая определена позже в исходном коде. DECLARE SUB PrintSomeStars ( StarCount! )   REM Основная программа следует за INPUT "Как вас зовут:" , UserName $ PRINT "Hello" ; UserName $ DO ВХОД "Сколько звезд вы хотите:" , NumStars ВЫЗОВ PrintSomeStars ( NumStars ) DO ВХОД "? Вы хотите больше звезд" , Ответ $ LOOP ПОКА Ответ $ <> "" Нет ответа $ = ЛЕВЫЙ $ ( Ответ $ , 1 ) LOOP WHILE UCASE $ ( Ответ $ ) = "Y "                          ПЕЧАТЬ «До свидания» ; Имя пользователя $ 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 ( подсказка  как  строка )  как  строка  Console . Написать ( подсказка )  Return  Console . Функция завершения ReadLine ()   Public  Sub  Main ()  Dim  userName  =  Ask ( "Как вас зовут:" )  Консоль . ЕЫпе ( "Привет {0}" ,  имя_пользователь ) Тусклый  ответ  как  строка Сделайте  Dim  numStars  =  CInt ( Ask ( "Сколько звездочек вы хотите:" ))  Dim  stars  As  New  String ( "*" c ,  numStars )  Console . WriteLine ( звезды ) Do  answer  =  Спросите ( "Хотите больше звезд?" )  Цикл  до  ответа  <>  ""  Цикл  пока  ответ . StartsWith ( "Y" ,  StringComparison . OrdinalIgnoreCase ) Консоль . WriteLine ( "Прощай, {0}" ,  userName )  End  Sub End  Module

Стандарты [ править ]

  • Стандарт ANSI / ISO / IEC для минимального BASIC:
    • ANSI X3.60-1978 «Для минимального BASIC»
    • ISO / IEC 6373: 1984 «Обработка данных - языки программирования - минимальный BASIC»
  • ECMA -55 Minimal BASIC (снято, аналогично ANSI X3.60-1978)
  • Стандарт ANSI / ISO / IEC для Full BASIC:
    • ANSI X3.113-1987 "Языки программирования Full BASIC"
    • INCITS / ISO / IEC 10279-1991 (R2005) «Информационные технологии - Языки программирования - Полный БЕЙСИК»
  • Дополнение ANSI / ISO / IEC, определяющее модули:
    • ANSI X3.113 Interpretations-1992 "BASIC Technical Information Bulletin # 1 Interpretations of ANSI 03.113-1987"
    • ISO / IEC 10279: 1991 / Amd 1: 1994 «Модули и улучшение односимвольного ввода»
  • ECMA -116 BASIC (снято, аналогично ANSI X3.113-1987)

Компиляторы [ править ]

См. Также [ править ]

  • Список ОСНОВНЫХ диалектов
  • Список компьютеров со встроенным BASIC

Заметки [ править ]

  1. ^ DO Fortran имелcontinueдля этой цели, но по-прежнему требовал ввода номера строки.
  2. ^ Tymshare взимает около 10 долларов в час (что эквивалентно 66 долларам в 2019 году) за доступ к своим системам.
  3. ^ Широко известный как первый «истинный» мини, 12-битное пространство памяти PDP-8 позволяло 4 096 адресов по 12 бит каждый, или 6 144 байта.
  4. ^ Интерпретаторы в конечном итоге похожи на компиляторы по задачам, которые они выполняют, преобразовывая исходный код в машинный код, но отличаются тем, когда они это выполняют. Компиляторы конвертируют всю программу сразу и выводят отдельную исполняемую программу. Интерпретаторы обычно конвертируют за раз только одну строку (или даже только ее часть), а затем немедленно выпускают этот код после завершения выполнения строки. Это означает, что им требуется достаточно памяти только для выполнения одной строки и не требуется какая-либо высокопроизводительная вторичная память, например жесткий диск.
  5. ^ Microsoft BASIC оставил 780 байт свободными для кода пользовательской программы и значений переменных на машине 4k, и на ней была запущена урезанная версия без строковых переменных и других функций.
  6. ^ Начиная с версии 3.

Ссылки [ править ]

  1. ^ Кемени, Джон G .; Курц, Томас Э. (1964). Базовый: руководство по БЕЙСИКУ, элементарному алгебраическому языку, разработанному для использования с Дартмутской системой разделения времени (PDF) (1-е изд.). Ганновер, Нью-Хэмпшир: вычислительный центр Дартмутского колледжа.
  2. ^ «Высшая математика в Ганновере» . Время . 23 февраля 1959 г.
  3. ^ Б с д е е времени 2014 .
  4. ^ Рэнкин, Джой Лиси (2018), Народная история вычислений в Соединенных Штатах , Кембридж, Массачусетс: Издательство Гарвардского университета, ISBN 9780674970977, п. 23
  5. ^ "ОСНОВНОЙ" . Файл жаргона . Проверено 13 июня 2017 года .
  6. ^ «Томас Э. Курц - История языков программирования» . cis-alumni.org . Проверено 13 июня 2017 года .
  7. Альфред, Рэнди (5 января 2008 г.). «1 мая 1964 года: запускается первая базовая программа» . Проводной . Проверено 13 июня 2017 года .
  8. ^ Gurer, Дэнис (январь 1995). «Женщины-первопроходцы в области информатики». Коммуникации ACM . 38 (1): 45–54. DOI : 10.1145 / 204865.204875 . S2CID 6626310 . 
  9. Брукс, Дэвид (11 июня 2019 г.). «Наконец, исторический маркер, говорящий о чем-то важном» . Concord Monitor . Архивировано из оригинального 11 июня 2019 года . Проверено 11 августа 2019 .
  10. ^ Бауэр, У. Ф., Компьютерный дизайн с точки зрения программиста (Восточная объединенная компьютерная конференция, декабрь 1958 г.) Одно из первых описаний компьютерного разделения времени.
  11. ^ «IBM VS мир: вот как это есть» . Компьютерный мир . 5 декабря 1973 г.
  12. ^ Борн, Чарльз; Хан, Труди Беллардо (август 2003 г.). История информационных служб Интернета, 1963–1976 . п. 387. ISBN. 9780262261753.
  13. ^ "2000 Таймшер Система" .
  14. ^ «Прохождение 10-летнего рубежа» . Журнал MEASURE . Hewlett Packard. Октябрь 1976 г.
  15. ^ Маркс, Ширли (декабрь 1971 г.). Годы JOSS: Размышления об эксперименте (PDF) (Технический отчет). Rand.
  16. ^ Savetz, Кевин (апрель 2013). «Дэйв Ахл и Бетси А» (Интервью).
  17. ^ a b Ahl, Дэвид Х. (1973). 101 Базовые компьютерные игры . Морристаун, Нью-Джерси: Creative Computing Press. OCLC 896774158 . 
  18. Ahl, Дэвид Х. (11 мая 1981 г.). «Компьютерные игры» . InfoWorld . Vol. 3 шт. 9. п. 44. ISSN 0199-6649 . 
  19. Dijkstra, Edsger W. (18 июня 1975 г.). «Как нам говорить правду, которая может навредить» (PDF) . Избранные труды по вычислениям: личная перспектива . Springer-Verlag (опубликовано в 1982 г.). С.  129–131 . ISBN  978-0387906522. OCLC  693424350 .
  20. ^ «У нас есть БЕЙСИК» . Музей естественной истории и науки Нью-Мексико . Архивировано из оригинального 30 ноября 2012 года . Проверено 18 апреля 2007 года .
  21. ^ Питтман, Том. «вам пришлось заплатить 5 долларов вперед, чтобы получить это…» . www.ittybittycomputers.com . Проверено 14 июня 2017 года .
  22. ^ Ахл, Дэвид Х. (1979). Более простые компьютерные игры . Морристаун: Creative Computing Press. ISBN 978-0894801372. OCLC  839377789 .
  23. ^ Ахл, Дэвид Х. (1984). Большие компьютерные игры . Моррис Плейнс, Нью-Джерси: Creative Computing Press. ISBN 978-0916688400. OCLC  872675092 .
  24. ^ "Осборн 1" . oldcomputers.net . Проверено 14 июня 2017 года .
  25. ^ Льен, Дэвид (1981). Справочник BASIC (Второе изд.). Сан-Диего, Калифорния: Compusoft Publishing. п. внутренняя крышка. ISBN 0-932760-00-7.
  26. ^ Pravin, Jain (2011). Класс Java . Pearson Education India. ISBN 9788131755440.
  27. ^ "GNE: язык программирования C" . fysh.org . Проверено 14 июня 2017 года . В течение 1980-х компиляторы C получили широкое распространение, и C стал чрезвычайно популярным языком.
  28. ^ 25 лет Delphi и никакого Oracle в поле зрения: не убийца Visual Basic, но его трудно убить
  29. ^ «Рекомендации по жизненному циклу семейства продуктов для Visual Basic 6.0» . Msdn2.microsoft.com. 31 марта 2005 . Проверено 16 июня 2009 года .
  30. ^ https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/
  31. Брин, Дэвид (14 сентября 2006 г.). «Почему Джонни не умеет кодировать» . Салон . Архивировано из оригинального 18 -го сентября 2013 года . Проверено 19 июня 2017 года .
  32. ^ "Small Basic" . Сеть разработчиков Microsoft . Архивировано из оригинального 17 -го марта 2014 года . Проверено 19 июня 2017 года .
  33. ^ Домашняя страница BASIC-256
  34. ^ "Дартмут планирует празднование 50-летия компьютерного языка BASIC" . Лидер Союза Нью-Гэмпшира . 28 апреля 2014 . Проверено 14 июня 2017 года .
  35. ^ "50 лет BASIC - Поиску Google" . Google .
  36. ^ «ОСНОВНОЙ на 50 - Расписание событий» . Дартмутский колледж . Проверено 14 июня 2017 года .
  37. ^ "ОСНОВНОЙ в 50" . Дартмутский колледж . Проверено 14 июня 2017 года .
  38. ^ "KeyPgAsm" . FreeBasic Wiki . Проверено 2 августа 2017 года .
  39. ^ "Встроенный x86 ASM" . Чистый базовый . Проверено 2 августа 2017 года .
  40. ^ "Использование языка ассемблера в вашем коде" . Power Basic . Архивировано из оригинала на 2 августа 2017 года . Проверено 2 августа 2017 года .
  41. ^ Кемени, Джон G .; Курц, Томас Э. (январь 1968 г.). Базовый: руководство по БЕЙСИКУ, элементарному алгебраическому языку, разработанному для использования с Дартмутской системой разделения времени (PDF) (4-е изд.). Ганновер, Нью-Хэмпшир: вычислительный центр Дартмутского колледжа. п. 53.
  42. ^ «Различия между GW-BASIC и QBasic» . 12 мая 2003 года Архивировано из оригинального 19 октября 2013 года . Проверено 28 июня 2008 года .

Общие ссылки [ править ]

  • Саммет, Жан Э. (1969). Языки программирования: история и основы . Энглвуд Клиффс, Нью-Джерси: Прентис-Холл . OCLC  819683527 .
  • Курц, Томас Э. (1981). «БАЗОВЫЙ» . В Wexelblat, Ричард (ред.). История языков программирования . История Языки программирования I . Нью-Йорк: ACM . С.  515–537 . DOI : 10.1145 / 800025.1198404 . ISBN 978-0127450407.
  • Кемени, Джон Дж .; Курц, Томас Э. (1985). Назад к BASIC: история, коррупция и будущее языка . Эддисон-Уэсли. п. 141. ISBN. 9780201134339. OCLC  11399298 .
  • Льен, Дэвид А. (1986). Базовое руководство: Энциклопедия компьютерного языка BASIC (3-е изд.). Compusoft Publishing. ISBN 9780932760333. OCLC  12548310 .
  • «Пятьдесят лет BASIC, языка программирования, который сделал компьютеры персональными» . Время . 29 апреля 2014 г.

Внешние ссылки [ править ]

  • BASIC в Curlie
  • «BASIC - универсальный символьный код инструкций для начинающих» . Энциклопедия компьютерных языков . Университет Мердока .
  • Рождение Basic на YouTube