Минимальный БЕЙСИК
Минимальный 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 с большим количеством функций, он был основан на усилиях Dartmouth Structured 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 SIEVE OF ERATOSTHENES
1010 REM MODIFIED FROM QUICK BASIC MATH PROJECT DEMO
1020 REM
2010 REM L IS THE LIMIT OF THE SIEVE
2020 REM WE WILL FIND ALL PRIME NUMBERS UP TO L
2030 LET L = 1000
2040 REM N IS THE SIEVE ITSELF
2050 DIM N(1000)
2060 REM FILL THE SIEVE WITH ALL NUMBERS UP TO L
2070 FOR I = 1 TO L
2080 LET N(I) = I
2090 NEXT I
2100 REM START WITH THE FIRST PRIME NUMBER: 2
2110 LET P = 2
2120 PRINT P,
2130 REM "CROSS OUT" MULTIPLES OF P
2140 FOR I = P TO L STEP P
2150 LET N(I) = 0
2160 NEXT I
2170 REM FIND THE NEXT NUMBER NOT CROSSED OUT
2180 LET P = P + 1
2190 IF P = L THEN 2220
2200 IF N(P) <> 0 THEN 2120
2210 GOTO 2180
2220 PRINT
2230 END
Примечания [ править ]
Ссылки [ править ]
Цитаты [ править ]
- ^ Курц 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) .