Минимальный БЕЙСИК
Минимальный BASIC — это диалект языка программирования BASIC , разработанный в качестве международного стандарта . Эта работа началась в ANSI в январе 1974 года, а в сентябре к ней присоединилась параллельная группа в ECMA . Первый проект был выпущен для комментариев в январе 1976 года, а окончательный стандарт, известный поочередно как ANSI X3.60-1978 или ECMA-55 , был опубликован в декабре 1977 года. Бюро стандартов США NBSIR 77-1420 представило набор тестов для обеспечения реализации соответствовали определению.
К этому времени Microsoft BASIC начал захватывать рынок после его появления на первых микрокомпьютерах в 1975 году, и особенно после появления в 1977 году «троицы» — Apple II , Commodore PET и TRS-80 , которые все укрепили. BASIC в стиле MS как фактический стандарт. ISO Стандартизация Minimal BASIC началась как ISO 6373:1984, но от нее отказались в 1998 году. Попытка создать более мощный диалект Full BASIC (также известный как Standard BASIC) не была выпущена до января 1987 года и оказала небольшое влияние на рынок.
История [ править ]
Предыдущие разработки [ править ]
Dartmouth BASIC был представлен в мае 1964 года в Дартмутском колледже как очищенный интерактивный язык, вдохновленный FORTRAN . [1] Система объединила несколько концепций, которые в то время были горячими темами в компьютерной индустрии, в частности, разделение времени , позволяющее нескольким пользователям получить доступ к одной машине, и прямое взаимодействие с машиной с помощью компьютерных терминалов . General Electric , поставившая компьютер GE-225 , на котором он работал, предложила небольшую модификацию коммерческим пользователям и сразу же получила признание. [2] Вскоре ряд других компаний внедрили собственные аналогичные системы, продавая онлайн-время поминутно. К концу 1960-х годов существовала версия BASIC почти для каждой мейнфреймовой платформы и онлайн-сервиса . [3] [4]
В 1966 году компания Hewlett-Packard (HP) представила новый мини-компьютер HP 2100 . Предназначавшиеся для использования в лабораториях и на заводах, компания с удивлением обнаружила, что большинство из них продавались для коммерческой обработки. [5] Желая воспользоваться этим, в ноябре 1968 года они представили HP 2000, систему с двумя процессорами HP 2100, в которой реализовано разделение времени для поддержки до 32 пользователей. Система работала аналогично модели Дартмута: одна машина использовалась для управления вводом/выводом , а другая — для запуска программ. В отличие от версий Dartmouth, которые представляли собой компиляторы , HP Time-Shared BASIC был интерпретатором . [6]
Интерпретаторы быстро стали обычным явлением на небольших машинах и миникомпьютерах. Другие поставщики быстро скопировали диалект HP, в частности Data General для своей серии Nova , которая имела большой успех в начале 1970-х годов. Wang Laboratories также добилась определенного успеха со своими специализированными машинами BASIC серии Wang 2200 . Каждая версия имела свои отличия. Одним из воздержавшихся была компания Digital Equipment Corporation (DEC), которая участвовала в программе JOSS в Стэнфордском исследовательском институте (SRI) и представила FOCAL на ее основе свой язык . К началу 1970-х годов успех BASIC вынудил DEC представить собственный BASIC со своим набором модификаций. [7]
Усилия по стандартизации
Расхождение BASIC привело к интересу к созданию стандарта, чтобы попытаться объединить их. Первые встречи по такой возможности состоялись в январе 1974 года в рамках недавно сформированной рабочей группы ANSI X3J2. Это привело к тому, что в сентябре 1974 года в Европе в рамках ECMA была создана TC 21, соответствующая группа. Обе группы поддерживали тесный контакт на протяжении всей работы и одновременно выпустили свои соответствующие стандарты. Первый проект был выпущен ANSI в январе 1976 года. Окончательная версия была подготовлена в июне 1977 года и официально принята ECMA 14 декабря 1977 года. [8]
Первые несколько лет X3J2 были потрачены (оглядываясь назад, некоторые могли бы сказать «впустую») на стандартизацию того, что составляет оригинальный Dartmouth Basic 1964 года... Minimal Basic был скорее игрушкой, чем реальным языком.
Артур Люрманн [9]
Минимальный BASIC, по сути, представлял собой оригинальный Dartmouth BASIC 1964 года, написанный как формальный стандарт с использованием расширенной формы Бэкуса-Наура с соответствующим набором тестов для обеспечения соответствия реализации определению. Он прояснил ранее неопределенные понятия, например, GO TO
и GOTO
были тем же самым, в данном случае заявляя, что goto statement = GO space* TO line number
, значение GOTO
, GO TO
и даже GO TO
были идентичны. [10] Там, где существовали различия между реализациями, например, при обработке FOR
операторов или требовались ли пробелы между ключевыми словами и значениями, стандарт всегда выбирал шаблон Дартмута. [9]
Всегда считалось, что Minimal BASIC сам по себе бесполезен, поскольку в нем отсутствуют многие общие функции, такие как манипулирование строками . Эти более продвинутые функции будут в центре внимания последующего проекта Full BASIC , серьезная работа над которым началась после публикации Minimal. Full BASIC не был просто версией Minimal с большим количеством функций. Вместо этого он был основан на усилиях Дартмутского структурированного BASIC и был разработан, чтобы предложить структурированное программирование для поддержки создания больших программ. В отличие от Minimal, Standard BASIC был разработан для значительного обновления BASIC. [11]
Неуместность [ править ]
Пока разрабатывался Minimal BASIC, первый широко доступный микрокомпьютер был выпущен — Altair 8800 . Вскоре после этого Altair BASIC выпустила Microsoft . В течение года были выпущены десятки новых микросхем и столько же новых версий BASIC. К тому времени, когда минимальный стандарт был ратифицирован, уже существовали десятки тысяч машин, на которых использовались некоторые варианты языка. Какой диалект использовал тот или иной переводчик, обычно определялся машинами, использованными для его разработки; MS BASIC был разработан на PDP-10. [12] от DEC и имеет множество функций из BASIC-PLUS , в то время как Apple BASIC был написан Стивом Возняком на основе руководства HP и использует систему обработки строк HP. [13] [а]
Первый проект Минимального стандарта был опубликован для комментариев в январе 1976 года. Для обновления проекта были использованы многочисленные комментарии, а его окончательный вариант был подготовлен в июне 1977 года и официально ратифицирован ECMA 14 декабря 1977 года. [14] Бюро стандартов США NBSIR 77-1420, выпустило набор тестов позволяющий поставщикам проверять соответствие стандарту. [15] Поскольку в группах стандартов не было поставщиков микрокомпьютеров, система в основном находила применение в версиях для мэйнфреймов, которые неизменно имели множество расширений. Одной из немногих версий микрокомпьютеров, реализовавших этот стандарт, был Microsoft BASIC-80 для Zilog Z80 , более известный как MBASIC , который получил соответствие стандарту в своей версии 5.0. [16]
После выпуска Minimal группы по стандартизации обратили свое внимание на Full BASIC, но это затянулось на годы. Работа продвигалась настолько медленно, что участники Дартмута ушли и выпустили свою собственную версию все еще развивающегося стандарта под названием True Basic в 1984 году. Это было полно ошибок и сбивало с толку, что заставило Джерри Пурнелла высмеять его как «безумие». [17] и Джон Дворжак назвал его «печальным» и «обреченным на провал». [18] От планов по переводу Minimal BASIC в Международную организацию по стандартизации (ISO) отказались. [19] и группа ANSI распалась, оставив первоначальные стандарты неактивными. [20]
Описание [ править ]
Минимальный BASIC во многом основан на ранних версиях Dartmouth BASIC и следует его соглашениям. Стандарт в основном разъясняет определенные ограничения, пытаясь создать стандарт, который может работать практически на любой машине. Следующее описание предполагает базовое знакомство с распространенными BASICами и подчеркивает различия в Minimal.
Код программы [ править ]
Как и большинство реализаций BASIC, Minimal основан на том, что исходный код редактируется с помощью строкового редактора , поэтому каждая строка кода в Minimal должна иметь номер строки . Стандарт допускает номера строк от 0 до 9999. В отличие от некоторых интерпретаторов, Minimal требует пробела перед каждым ключевым словом и пробела или конца строки после него. [21]
Ключевые слова включают REM
, DIM
, OPTION
, DEF
, LET
, PRINT
, INPUT
, READ
, DATA
, RESTORE
, IF...THEN
, FOR...TO...STEP...NEXT
, GO TO
, GO SUB...RETURN
, ON...GO TO
и ON...GO SUB...
, RANDOMIZE
, STOP
и END
. [22]
Программы должны иметь END
как их последняя строка. [23] INPUT
может иметь необязательную строку приглашения, но это зависит от реализации, а не является частью стандарта. [24] RESTORE
не допускал указания номера строки - опция, которую можно было увидеть в большинстве интерпретаторов той эпохи. FOR...NEXT
Циклы проходят верхнее тестирование и не будут выполнять свое тело, если тест не пройден на первой итерации. [25]
Имена переменных могут состоять из одной буквы или буквы и одной цифры. Двухбуквенные имена переменных не допускаются. [26] Числа ограничены диапазоном от 1E-38 до 1E38. [21] Строковые переменные могут содержать максимум 18 символов. [27] Массивы могут быть одномерными или двумерными, используя DIM
, но поддерживаются только числовые массивы. Всем переменным обычно выделяется место в связанном одномерном массиве без использования DIM
, им предоставляется место для 11 элементов с индексами от 0 до 10. Нижняя граница для массивов обычно равна 0, но при использовании OPTION BASE 1
можно изменить индекс на 1. [28]
Существует 11 определенных функций; ABS
, ATN
, COS
, EXP
, INT
, LOG
, RND
, SGN
, SIN
, SQR
и TAN
. [29] Операторы включают в себя =
, <=
, >=
, <>
. Строки можно было сравнивать только на предмет равных или неравных, сравнения большего и меньшего размера не поддерживались. Обратите внимание, что логические операторы AND
, OR
и NOT
, не поставляются. [10]
Пользовательские функции с использованием DEF FN
поддерживались, но только для числовых значений. Никаких встроенных или пользовательских функций для строк не было. [30]
Пример [ править ]
Этот код реализует Решето Эратосфена : [31]
1000 REM СИТО ЭРАТОСФЕНА
1010 REM МОДИФИЦИРОВАНО ИЗ ДЕМО ПРОЕКТА QUICK BASIC MATH
REM 2010
REM L – ПРЕДЕЛ СИТА
2020 REM МЫ НАЙДЕМ ВСЕ ПРОСТЫХ ЧИСЛА ДО L
2030 L 1020 = 1000
2040 REM N – СИТО САМ
2050 ДИМ N ( 1000 )
2060 REM ЗАПОЛНИТЕ СИТО ВСЕМИ ЧИСЛАМИ ДО L
2070 ДЛЯ I = 1 ДО L
2080 ПУСТЬ N ( I ) = I
2090 СЛЕДУЮЩИЙ I
2100 REM НАЧНИТЕ С ПЕРВОГО ПРОСТОГО ЧИСЛА: 2
2110 ПУСТЬ P = 2
2120 ПЕЧАТЬ P ,
2130 REM «ВЫЧЕРКНУТЬ» Р, КОРНОТ P
2140 FOR I = P TO L STEP P
2150 LET N ( I ) = 0
2160 СЛЕДУЮЩИЙ I
2170 REM НАЙТИ СЛЕДУЮЩЕЕ НЕ ВЫЧЕРКНЕННОЕ ЧИСЛО
2180 LET P = P + 1
2190 ЕСЛИ P = L THEN 2220
2200 IF N ( P ) <> 0 THEN 2120
2210 ПЕРЕЙТИ К 2180
2220 ПЕЧАТЬ
2230 КОНЕЦ
Примечания [ править ]
Ссылки [ править ]
Цитаты [ править ]
- ^ Курц 1981 , с. 532.
- ^ Курц 1981 , стр. 532, 534.
- ^ Маккракен 2014 .
- ^ «IBM против всего мира: вот как оно есть» . Компьютерный мир . 5 декабря 1973 года. Архивировано из оригинала 28 января 2022 года . Проверено 26 апреля 2022 г.
- ^ Лейбсон, Стив (2017). «HP: случайно созданная компьютерная компания» . HP9825.COM . Архивировано из оригинала 21 октября 2019 г. Проверено 26 апреля 2022 г.
- ^ «Описание процессора Hewlett-Packard 2100, 1972 г.» (PDF) . Архивировано (PDF) из оригинала 12 апреля 2021 г. Проверено 18 августа 2020 г.
- ^ Савец, Кевин (апрель 2013 г.). «Дэйв Ал и Бетси Ах» (интервью). Архивировано из оригинала 31 марта 2022 г. Проверено 26 апреля 2022 г.
- ^ ECMA 1978 , с. iii.
- ^ Перейти обратно: а б Луерман 1984 , с. 173.
- ^ Перейти обратно: а б ECMA 1978 , с. 15.
- ^ Люрманн 1984 , с. 171.
- ^ Фридсон 1999 , с. 116.
- ^ Перейти обратно: а б Возняк 2014 .
- ^ ECMA 1978 , с. я.
- ^ Гилсинн и Шеппард 1978 .
- ^ Справочное руководство по BASIC-80 . Майкрософт. 1981. Архивировано из оригинала 21 мая 2022 г. Проверено 26 апреля 2022 г.
- ^ Пурнель 1985 , с. 366.
- ^ Дворжак 1984 , с. 88.
- ^ «ИСО 6373:1984» . Архивировано из оригинала 03 марта 2021 г. Проверено 26 апреля 2022 г.
- ^ «ECMA-55 Минимальный БЕЙСИК» . ЭКМА Интернешнл . Архивировано из оригинала 3 апреля 2022 г. Проверено 26 апреля 2022 г.
- ^ Перейти обратно: а б ECMA 1978 , с. 6.
- ^ ECMA 1978 .
- ^ ECMA 1978 , с. 5.
- ^ ECMA 1978 , с. 22.
- ^ ECMA 1978 , с. 17.
- ^ ECMA 1978 , с. 8.
- ^ ECMA 1978 , с. 9.
- ^ ECMA 1978 , с. 25.
- ^ ECMA 1978 , с. 11.
- ^ ECMA 1978 , с. 13.
- ^ Хэм, Джон Гейтвуд (15 мая 2015 г.). "ЭРАТОСФЕН.БАС" . Сорсфордж . Архивировано из оригинала 26 апреля 2022 г. Проверено 26 апреля 2022 г.
Библиография [ править ]
- Дворжак, Джон (19 ноября 1984 г.). «Грустно, но правда, базовый» . Инфомир . п. 88.
- Фридсон, Мартин С. (1999). Как стать миллиардером: проверенные стратегии от титанов богатства . Джон Уайли и сыновья. ISBN 0-471-33202-Х .
- Гилсинн, Дэвид Э.; Шеппард, Чарльз Л. (1978). NBSIR 78-1420-1: Минимальные тестовые программы NBS BASIC — Версия 1. Руководство пользователя: Vol. 1 - Обзор испытательной системы (PDF) (Технический отчет). Национальное бюро стандартов.
- Курц, Томас (1981). "БАЗОВЫЙ" . В Вексельблате, Ричард (ред.). История языков программирования I. АКМ . стр. 515–537. дои : 10.1145/800025.1198404 . ISBN 0127450408 .
- Люерманн, Артур (сентябрь 1984 г.). «Структурное программирование на языке Basic; часть 4: ANSI Basic, Macintosh Basic и True Basic» . Творческие вычисления . стр. 171–177. Архивировано из оригинала 30 декабря 2012 г.
- Маккракен, Гарри (29 апреля 2014 г.). «Пятьдесят лет BASIC, языка программирования, сделавшего компьютеры персональными» . Время .
- Пурнель, Джерри (сентябрь 1985 г.). «ПК, периферийные устройства, программы и люди» . Байт . стр. 366–373 . Проверено 20 марта 2016 г.
- Возняк, Стивен (1 мая 2014 г.). «Как Стив Возняк написал BASIC для оригинальной Apple с нуля» . Гизмодо .
- ECMA (январь 1978 г.). ECMA-55: Минимальный БЕЙСИК . Архивировано из оригинала (PDF) 24 июля 2019 г.
Дальнейшее чтение [ править ]
- ANSI X3.113-1987: Языки программирования — полный BASIC (PDF) . АНСИ. 1987.
- Гилсинн, Дэвид Э.; Шеппард, Чарльз Л. (1978b). NBSIR 78-1420-4: Минимальные тестовые программы NBS BASIC — Версия 1. Руководство пользователя: Vol. 4 - Математические и пользовательские функции, составные выражения (PDF) (Технический отчет). Национальное бюро стандартов.
- ECMA (июнь 1986 г.). Стандарт ECMA-116: БАЗОВЫЙ (PDF) . Архивировано из оригинала (PDF) 14 октября 2011 г.
- Хэм, Джон Гейтвуд (30 августа 2021 г.). Введение в программирование на минимальном BASIC ECMA-55 (PDF) .