Минимальный БЕЙСИК

Из Википедии, бесплатной энциклопедии

Минимальный 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   КОНЕЦ 

Примечания [ править ]

  1. ^ Позже Возняк посетовал, что рынок отказался от обработки строк HP и использовал стиль DEC/MS, который он высмеял как «ужасный». [13]

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

Цитаты [ править ]

  1. ^ Курц 1981 , с. 532.
  2. ^ Курц 1981 , стр. 532, 534.
  3. ^ Маккракен 2014 .
  4. ^ «IBM против всего мира: вот как оно есть» . Компьютерный мир . 5 декабря 1973 года. Архивировано из оригинала 28 января 2022 года . Проверено 26 апреля 2022 г.
  5. ^ Лейбсон, Стив (2017). «HP: случайно созданная компьютерная компания» . HP9825.COM . Архивировано из оригинала 21 октября 2019 г. Проверено 26 апреля 2022 г.
  6. ^ «Описание процессора Hewlett-Packard 2100, 1972 г.» (PDF) . Архивировано (PDF) из оригинала 12 апреля 2021 г. Проверено 18 августа 2020 г.
  7. ^ Савец, Кевин (апрель 2013 г.). «Дэйв Ал и Бетси Ах» (интервью). Архивировано из оригинала 31 марта 2022 г. Проверено 26 апреля 2022 г.
  8. ^ ECMA 1978 , с. iii.
  9. ^ Перейти обратно: а б Луерман 1984 , с. 173.
  10. ^ Перейти обратно: а б ECMA 1978 , с. 15.
  11. ^ Люрманн 1984 , с. 171.
  12. ^ Фридсон 1999 , с. 116.
  13. ^ Перейти обратно: а б Возняк 2014 .
  14. ^ ECMA 1978 , с. я.
  15. ^ Гилсинн и Шеппард 1978 .
  16. ^ Справочное руководство по BASIC-80 . Майкрософт. 1981. Архивировано из оригинала 21 мая 2022 г. Проверено 26 апреля 2022 г.
  17. ^ Пурнель 1985 , с. 366.
  18. ^ Дворжак 1984 , с. 88.
  19. ^ «ИСО 6373:1984» . Архивировано из оригинала 03 марта 2021 г. Проверено 26 апреля 2022 г.
  20. ^ «ECMA-55 Минимальный БЕЙСИК» . ЭКМА Интернешнл . Архивировано из оригинала 3 апреля 2022 г. Проверено 26 апреля 2022 г.
  21. ^ Перейти обратно: а б ECMA 1978 , с. 6.
  22. ^ ECMA 1978 .
  23. ^ ECMA 1978 , с. 5.
  24. ^ ECMA 1978 , с. 22.
  25. ^ ECMA 1978 , с. 17.
  26. ^ ECMA 1978 , с. 8.
  27. ^ ECMA 1978 , с. 9.
  28. ^ ECMA 1978 , с. 25.
  29. ^ ECMA 1978 , с. 11.
  30. ^ ECMA 1978 , с. 13.
  31. ^ Хэм, Джон Гейтвуд (15 мая 2015 г.). "ЭРАТОСФЕН.БАС" . Сорсфордж . Архивировано из оригинала 26 апреля 2022 г. Проверено 26 апреля 2022 г.

Библиография [ править ]

Дальнейшее чтение [ править ]

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

в настоящее время реализации с открытым исходным Поддерживаемые кодом