Dartmouth BASIC

редактировать
Язык программирования
Dartmouth BASIC
Paradigm императив
Разработано Джоном Г. Кемени, Томас Э. Курц
Впервые появилось1964; 56 лет назад (1964)
OS Дартмутская система разделения времени
Под текущей
FORTRAN, АЛГОЛ
Под текущей
См. список диалектов BASIC

Dartmouth BASIC - это исходная версия BASIC языка программирования. Его разработали два профессора Дартмутского колледжа, Джон Г. Кемени и Томас Э. Курц. С помощью системы Дартмутской системы разделения времени (DTSS) она предлагала интерактивную среду программирования всем студентам, а также всему университетскому сообществу.

В Дартмуте было выпущено несколько версий, реализованных студентами бакалавриата и работающих как система компиляции и работы. Первая версия была запущена 1 мая 1964 г. и открыта для обычных пользователей в июне. Последовали обновления, кульминацией которой стал седьмой и последний выпуск в 1979 году. Дартмут также представил радикально обновленную версию, известную как Structured BASIC (или SBASIC ) в 1975 году, которая добавила различные структурированные программирование концепций. SBASIC лег в основу разработки ANSI -стандарт Standard BASIC в начале 1980-х годов.

Большинство диалектов BASIC прослеживают свою историю до Четвертого издания и не учитывают более эзотерические особенности, такие как матричная математика. В отличие от компиляторов Дартмута, других BASIC были написаны как интерпретаторы. Это позволяло работать в ограниченной основной памяти ранних микрокомпьютеров. Microsoft BASIC - это один из примеров, предназначенный для работы в 4 КБ памяти. К 1980-х на десятках миллионов домашних компьютеров был запущен какой-либо вариант интерпретатора MS. Он стал де-факто стандартом для BASIC, что привело к отказу от ANSI SBASIC. Позже Кемени и Курц покинули Дартмут, чтобы разработать и продвигать версию SBASIC, известную как True BASIC.

. Многие ранние игры для мэйнфреймов прослеживают свою историю до Dartmouth BASIC и системы DTSS. Некоторые из них были собраны в версиих HP Time-Shared BASIC в книге People's Computer Company «Что делать после клавиш Return». Многие из первоисточников в BASIC Computer Games и связанные также работы прослеживают свою историю до Dartmouth BASIC.

Содержание
  • 1 История разработки
    • 1.1 Предыдущие работы
    • 1.2 Вычисления в гуманитарных науках
    • 1.3 Разработка концепции
    • 1.4 Первоначальная версия
    • 1.5 Новая система
    • 1.6 Расширение базы пользователей
    • 1.7 Influence
    • 1.8 Игры на BASIC
  • 2 версии
    • 2.1 Первое издание
    • 2.2 Второе издание, CARDBASIC
    • 2.3 Третье издание
    • 2.4 Четвертое издание
    • 2.5 Пятое издание
    • 2.6 Шестое издание
    • 2.7 SBASIC
    • 2.8 Седьмое издание
    • 2.9 ANSI BASIC, восьмое издание
  • 3 Интерфейс DTSS
    • 3.1 Список команд
  • 4 BASIC language
    • 4.1 Список Операторы BASIC
    • 4.2 Список операторов
    • 4.3 функций
  • 5 Примеры
  • 6 Примечания
  • 7 Ссылки
    • 7.1 Цитаты
    • 7.2 Библиография
    • 7.3 Дополнительная литература
  • 8 Внешние ссылки
История развития

Предыдущая работа

Джон Кемени поступил на математический факультет Дартмутского колледжа в 1953 году и позже стал его заведующим. В 1956 году он получил доступ к IBM 704 благодаря усилиям MIT. В том же году он написал язык DARSIMCO, который упростил программирование математических операций. Ему помогал Томас Курц, который присоединился к отделу в том же году.

О DARSIMCO забыли, когда в 1957 году на машине был установлен первый компилятор FORTRAN. Появление FORTRAN преподало важный урок. Курц, внушили, что FORTRAN медленный, потратил несколько месяцев на написание программы наемблере 704, которая занимала около часа процессорного времени на отладку и по-прежнему не работала. Сдавшись, он переписал его на ФОРТРАНЕ и запустил за пять минут. Урок заключен в том, что языки высокого уровня могут экономить время, независимо от их результатов.

В 1959 году школа получила свой первый компьютер, на основе барабана LGP-30.. Один студент написал для машины язык DART, вдохновленный Фортраном. Это привело к попытке создания компилятора ALGOL 58, обращаясь к ALGOL 60, когда это определение было окончательно доработано. Написание компилятора было трудным из-за очень маленького размера памяти, 4 Кбайт по современным меркам, и было очень медленным, исходя из скорости барабана 30 об / мин. Тем не менее, они смогли создать функциональную урезанную версию, известную как ALGOL 30.

. Дальнейшее развитие привело к появлению SCALP, «Автономный процессор Algol», однопроходного компилятора, который был готов к запуску скомпилированной программы. как только перфолента закончила считывание в новомнике. Эта операция в стиле compile-n-go позже будет любовью BASIC.

В 1962 году Кемени и ученик Сидни Маршалл начали экспериментировать с новым языком, DOPE (Дартмутский сверхупрощенный эксперимент по программированию). Это использовалось пронумерованные строки для представления инструкций, например, для сложения двух чисел, использовалось DOPE:

5 + ABC

Что означало «в строке 5 выполнить сложение значений в аргументе A. и B и поместите Результат в C ". Несмотря на несколько загадочную структуру, можно увидеть основу для будущего языка BASIC. В дополнение к основным операциям, язык включал SQR, EXP, LOG, SIN и простую конструкцию ветления.

Вычисления в гуманитарных науках

Кемени и Курц согласились с необходимостью грамотности программирования среди студентов, не входящие в традиционную область STEM ; только 25% студентов в Дартмуте посещали курсы, связанные с STEM, но некоторый уровень математики использовался почти во Как могут быть разумными решениями в обществе, как могут быть разумные решения вычисляются. ющие об этом? »

Позднее Кемени отмечал: «Наше видение состояло в том, чтобы каждый ученик мог в кампусе должен быть доступ к компьютеру, и любой преподаватель должен иметь возможность пользоваться компьютером в классе, когда это необходимо.

<сделать это было бы практически невозможно, учитывая то, что из-за чего им приходилось работать; время выполнения типичного прогона SCALP составляло около 15 минут, а языки были слишком сложны для пользователей, не занимающихся STEM, чтобы использовать их для основных задач. 11>Проблема была не в сложной, а в их концепции пакетного процесса. Как они позже выразились, «если на одну попытку увести порядок одного дня, ученик либо потеряет интерес, либо проиграет, в чем заключаются проблемы. м случае он будет тратить время, стоя и ожидая результатов дня. "

В 1959 году, во многом благодаря репутации Кемени как новатора в преподавании математики, кафедра получила награду Фонд Альфреда П. Слоана в размере 500 000 долларов на строительство нового здания кафедры.

Разработка концепции

Во время посещения Массачусетского технологического института в 1961 году они познакомились с PDP-1 и его недавно завершенной экспериментальной системой с разделением времени . Джон Маккарти спросил Курца, почему они не использовали разделение времени в своих усилиях по распространению вычислений в массы. Позже Курц сказал Кемени, что «мы должны разделить время», на что Кемени ответил «ОК». телетайпа модели 33 телетайпа, использующий недавно представленный ASCII по телефонным линиям, решило проблему доступа; программистам больше не нужно будет отправлять программы на карточках или бумажной ленте. - это новая машина, дост быстрый язык для использования программистами.

Когда тема простого языка стала обсуждаться, Кемени сразу написать новую. Курца больше интересовала урезанная версия FORTRAN или ALGOL. Но у этих языков было так много идиосинкразии, что Курц быстро согласился с Кемени. Со временем возникли четыре ключевых элемента; система будет использовать разделение времени, потребуется новый язык, чтобы привлечь пользователей к системе, новые курсы будут вводить программирование в качестве дополнения к другим предметам, и, наконец, терминалы будут открыты для всех пользователей.

Первоначальная версия

Проект официально стартовал в сентябре 1963 года. Целью было разработать язык и операционную систему на стандартном компьютере. В начале 1964 года два гранта от национального научного фонда, один на язык системы разделения времени, другой язык, вместе с образовательными скидками от General Electric привели к покупке GE -225 компьютер. Это было связано с гораздо более простой машиной DATANET-30 (DN-30) и жестким диском, подключенным к обеим машинам для обмена данными.

Система будет работать, если DN-30 запускает терминалы и сохраняет работу на диск. Когда пользователь набирал RUN, GE-225 считал этот файл, компилировал его, запускал и возвращал результаты для печати на терминале. Эта комбинация машин была позже известна как GE-265 с добавлением их номеров моделей. Компания GE построила около пятидесяти дополнительных экземпляров GE-265, многие из которых предназначены для обслуживания бюро обслуживания. GE называла их своими системами разделения времени Марк I.

Летом 1963 года, ожидая покупки компьютера, GE предоставила доступ к одному из своих GE-225. Кемени начал работать над прототипом компилятора. Этой осенью студенты Майкл Буш и Джон МакГичи начали работу над дизайном операционной системы. И язык, и ОС были объявлены в течение этого периода, хотя цели остались прежними в виде черновика в ноябре того же года.

Машина прибыла в последнюю неделю февраля 1964 г., была в рабочем состоянии середина марта, официально сдана 1 апреля. К тому моменту дизайн операционной системы был уже хорошо разработан. Большинство программистов, работающих с операционной системой, работали по 50 часов в неделю в дополнение к своей обычной учебной нагрузке. Язык разрабатывался на другой машине 225. Операционная система была завершена в апреле, а вся система, работающая на трех терминалах Модель 33, была готова к концу месяца. Джон Кемени и Джон МакГичи запустили первую программу BASIC 1 мая 1964 года в 4 часа утра. ET.

Не совсем понятно, какие были первые программы. Многие источники, в том числе Дартмут, утверждают, что это была простая программа:

PRINT 2 + 2

В течение следующего месяца система была протестирована с помощью тестовых программ класса численного анализа в системе. В течение этого периода машина продолжала нормально работать в среднем пять минут. Однако проблемы были быстро решены, и в июне было принято решение увеличить количество терминалов до одиннадцати. Примерно в это же время более быстрый GE-235 заменил 225. К осени использовалось 20 терминалов.

Новая система

Одной из первоначальных целей программы была работа, программирование в другие курсовые работы. Это был успех, но это оказало серьезную нагрузку на систему, и стало ясно, что у нее нет места для будущего роста.

В 1965 году обратилась в GE за помощью в продолжающейся разработке. В сентябре вице-президент Луи Рейдер новый GE-635, который работал примерно в 10 раз быстрее и включал два процессора. Кроме того, будет добавлен второй DN-30 для обработки большего количества параметров, достаточного для одновременного подключения 150 пользователей. Чтобы связать его, потребуется более крупный объект, чем подвал Колледж-холла, где работал 265-й. Питер Кевит, выпускник 22-го года, дополнительная поддержка NSF, привел к строительству Вычислительный центр Kiewit, который открылся в декабре 1966 года.

В ожидании прибытия этой машины летом и Осенью 1966 г. GE-635 в Римском Центре Разработки Воздуха использовался для разработки MOLDS, «Многопользовательской системы онлайн-отладки». GE-635 был введен в эксплуатацию в начале 1967 года, и с использованием новой операционной системы была полностью функциональна в сентябре, когда GE-265 был продан.

GE предоставила машину бесплатно в течение трех лет, поскольку компания GE использовала его для разработки новой версии своей операционной системы. Это оказалось сотрудничество успешным; GE начала развертывать эти машины в качестве своих систем с разделением времени Mark II, и к концу десятилетия они стали одним из производителей устройств с разделением времени в мире.

Когда эта система «Фаза I» была введена в эксплуатацию, команда Дартмута начала правила «Фазы II», идеальной операционной системы. Она была установлена ​​в марте 1969 года и вскоре после этого изменила свое название на Дартмутская система разделения времени. Когда истек трехлетний период, GE подарила машину университету. Было предпринято несколько добросовестных попыток продолжить отношения, продолжалось сотрудничество официально, продолжалось 20 1972 года.

Расширение базы пользователей

A Обзор 1968 г. Было отмечено, что 80% студентов и 70% преподавателей в той или иной форме использовали систему. Сотни терминалов были разбросаны по кампусу, от больницы до бизнес-школы. 57% процессорного использования времени было использовано для курсовой работы, 16% - для исследований, оставшиеся 27% - для «рекреационного использования»; Дартмут активно использует возможности пользователей играть в игры, как способ получить практическое применение и преодолеть страх перед компьютером.

Начиная с другой гранта NFS, в 1967 году Дартмут также начал размещать терминалы за пределами кампуса, включая высокие школы в районе. С точки зрения количества пользователей, эти терминалы обслуживали 69% от числа пользователей, хотя они использовали меньшее количество компьютерного времени. К 1971 году было 79 удаленных терминалов, таких как Нью-Джерси и Бангор, штат Мэн. Они поддерживались системы мультиплексора, которые позволяют поддерживать до 12 терминалов по одной телефонной линии голосового уровня. Кроме того, некоторые из этих основных линий были доступны для коммутируемого доступа с модемом.

Influence

Разделение времени было областью исследований в 1960-х годах, и многие в компьютерной индустрии предсказывали эту вычислительную мощность станет недорогой. и широко распространенной. Наиболее известное заявление об этом высказал Джон Маккарти, сказал: «Когда-нибудь, которое может быть организовано как коммунальное предприятие, так же как телефонная система - это коммунальное предприятие».

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

HP 2000 запускал HP Time-Shared BASIC, комбинация BASIC и операционной системы с разделением времени, почти идентичная настройка DTSS. Система поддерживает использование до 32 различных пользователей, ЦП HP 2100 начального уровня для работы терминалов таким же образом, как Datanet-30 из исходной установки GE-265, в то время как программы работали на более дорогие модели та же машина, обычно отличающаяся тем, что у нее было больше основной памяти. В HP BASIC использовался полукомпилированный «токенизированный» формат для хранения программ, что сокращало время загрузки и означало, что «компиляция» выполнялась без времени.

Digital Equipment Corporation использовала аналогичный подход, предлагая свои сопряжение PDP -11 с новой операционной системой RSTS / E и BASIC-PLUS. BASIC-PLUS более внимательно следовал за Пятым изданием, включая команды MAT, но был реализован как чистый интерпретатор, в отличие от компилятора Дартмута или токенизированного формата HP. Он также включал ряд управляющих структур, соответствующие модели JOSS, например PRINT I IF I>10. Tymshare SUPER BASIC также поддерживает структуры и матрицы в стиле JOSS. math, но сохранила исходную операцию компиляции и запуск.

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

Игры на BASIC

Кемени активно поощрял игры на платформе DTSS и считал это одной из основных причин для успех системы DTSS. Вероятно, он был автором ранней игры для мэйнфреймов. Хотя Кемени не считал это заслугой, он позже сослался на FTBALL, заявив, что он «был написан в воскресенье после некой игры Дартмут- Принстон в 1965 году, когда Дартмут выиграл трофей Ламберта. Это своего рода памятная программа ». Игра была расстроена по сравнению с очень популярным Принстоном.

По мере расширения системы, особенно после добавления обработки строк в BASIC, система DTSS стала основной платформой для разработки многих текстовых игр. В начале 1970-х годов People's Computer Company начала публиковать их в своем журнале, обычно преобразованном в более широко доступный HP BASIC. Многие из этих списков были собраны в их книге 1975 года «Что делать после нажатия клавиши возврата». Хотя они опубликованы в форме HP BASIC, большинство из них ведет свою историю либо от DTSS, либо от Lawrence Hall of Science в Калифорнии, где была установлена ​​аналогичная машина, известная как DECISION.

Более известный сборник - BASIC Computer Games 1978 года, где около половины программ в книге были написаны либо в Дартмуте, в том числе другая Кемени, Батнумом, либо, чаще, в одной из многих средних школ. которые были связаны с ним после 1968 года. Особенно плодотворной средней школой была Средняя школа Лексингтона в Массачусетсе, но появляются и многие другие школы. В некоторых программах не указано их исходное местоположение, но они исходят от авторов, которые, вероятно, были связаны с системой через школу или общественные проекты, такие как Project SOLO.

Версии

Первое издание

Исходная версия, задним числом известная как первая версия, поддерживала команды LET, PRINT, END, FOR... NEXT, GOTO, GOSUB... RETURN, IF... THEN, DEF, READ, ДАННЫЕ, DIMи REM. Он включал в себя основные математические инструкции, +, -, *и /, а также стрелку вверх для экспонент «... поскольку на пишущей машинке телетайпа невозможно напечатать надстрочные символы.». В современных вариантах стрелка вверх обычно заменяется символом «шляпы», ^. Перед вычислением экспоненты принимали абсолютное значение числа, поэтому для вычисления -X ^ 3нужно было использовать X * X * X. Была еще одна проблема в функции экспоненты, которая обрабатывала -X ^ 2как (-X) ^ 2в отличие от правильного порядка операций - (X ^ 2), который не исправлялся до третьего выпуска. Функция INT ()всегда усекается до нуля.

У языка есть ряд собственных навыков. В отличие от более поздних версий, команда LETтребовала для всех операторов, которых нет другой команды, поэтому 10 A = 5 * 5в этой версии было недопустимо. Оператор PRINTиспользует запятую при печати нескольких чисел, переходя к следующей из пяти «зон». В запятой не было необходимости в случае, когда печаталось приглашение и одно значение, поэтому значение PRINT "для A равно" Aбыло допустимым ". до десяти элементов (индексы от 1 до 10, измененные на 0 до 10 во втором издании), не объявляясь таким образом с помощью DIM.

Имена числа ограничивались одной буквой или буквой, за которую следовала цифра). Все операции выполнялись в с плавающей запятой. На GE-225 и GE-235 это давало точность около 30 бит (примерно десять цифр) с диапазоном экспонентов по основанию 2 от -256 до +255.

Кроме того, из-за GE- 235 имеет размер слова 20 бит и использует шестибитный код символов , поэтому язык закрепил использование трехбуквенных имен функций, поскольку это позволяет хранить три шестибитных символа в 20-битном слове. (используя 18 бит). Вот почему функции BASIC состоят и из трех букв, таких как INTили SQR, что осталось во многих разновидностях языка еще долгое время после того, как они покинули GE-235.

Второе издание, CARDBASIC

Второе издание BASIC, хотя в то время так и не упоминалось внесло лишь минимальные изменения. Выпущенный в октябре 1964 года, он позволяет модели начинаться с нижнего индекса 0 вместо 1 (полезно для представления многочленов ) и добавлял точку с запятой ;к ПЕЧАТЬзаявление. В отличие от более поздних реализаций, где разрешается пробел между элементами, точка с запятой расширяет печать до следующего кратного из трех символов, что позволяет «упаковать» больше чисел в вводе, чем существующий разделитель запятой.

Октябрьская версия также включает отдельное определение CARDBASIC, который был просто версией BASIC для использования в рабочих процессах на основе карт. CARDBASIC был почти идентичен интерактивной версии, за исключением того, что он не включал массивы с отсчетом от нуля. Что еще более важно для будущего языка, CARDBASIC добавил команды MAT, которые работали с числовыми матрицами. CARDBASIC не получил дальнейшего развития, так как вся идея BASIC заключалась в том, чтобы быть интерактивным.

Третье издание

Третье издание, выпущенное в 1966 году и первое, в котором использовалось название «издание», был первым, разработанным специально для работы на новом компьютере GE-635, который должен появиться в ближайшее время. Эта версия включает в себя функции MATиз CARDBASIC, хотя теперь они допускают индекс 0.

Новая функция SGNдала знак своего аргумента (положительный⇒ 0 и отрицательное ⇒1), а RESTOREбыл добавлен для «перемотки» позиции READ / DATA. Проблема возведения в степень была исправлена, поэтому -X ^ 2будет интерпретироваться как - (X ^ 2). Кроме того, функция INTбыла изменена на истинный пол, в отличие от обрезки к нулю, что можно реализовать округление с помощью INT (X + 0.5)

Главное изменение в этой версии был новый оператор INPUT, который позволяет пользователю вводить числовые значения, что впервые сделало язык действительно интерактивным во время выполнения; ранее единственное управление, которое можно было использовать во время выполнения, заключалось в том, чтобы набрать STOPв мониторе. Кроме того, теперь система позволяет цикла и нажимать отступы, функция, которой не было в других версиях BASIC.

Четвертое издание

Третье оставалось в использовании через GE-235 просуществовал до осени 1967 года. Однако, поскольку планировалось получить GE-635, 1967 года была создана экспериментальная версия модели 635. Эта версия была результатом партнерства между GE и Дартмутом при участии GE. новая операционная система, а также ряд функций BASIC от их собственных усилий Марк 1. BASIC.

Эта версия, опубликованная как дополнение к Третьему изданию, добавляла команду RANDOMIZEдля «засева» функции RNDи ON... GOTO«Вычисленный переход», что близко соответствует аналогичной функции в FORTRAN. Эта версия также допускает ON... THEN, аргументируя это тем, что IF... THENне требует GOTO, поэтому здесь должен быть разрешен тот же формат. Новая функция TABпозволяла перемещать печать в заданный столбец от 0 до 74. Другое внутреннее изменение заключалось в том, чтобы снова изменить MATна 1; можно использовать 0-й индекс, но обычно он игнорируется различными командами. В процессе разработки были внесены два основных дополнения. Первым добавлением были строковые переменные, а также изменения в операторах READ / DATA, позволяющие хранить в них строки, и в операторе INPUTдля их интерактивного чтения. Одной из функций строковой системы было то, что конечные пробелы сознательно игнорировались при сравнении, так что «ДА» и «ДА» считались равными. Позже это было сочтено серьезной ошибкой. В этой версии также добавлена ​​точка с запятой в операторы PRINTдля «плотной упаковки» вывода.

Официальное четвертое издание появилось только в 1968 году, в котором было добавлено несколько новых функций поверх предыдущего. дополнения. Это включало возможность определения многострочных функций с помощью команды DEFи мощного оператора CHANGE, который обрабатывает строки как массив кодов, подобные ASCII, чтобы разрешить посимвольные операции без необходимости перебирать строку. Это также была единственная функция манипулирования строками; чтобы извлечь один символ или подстроку, нужно было использовать CHANGE, чтобы преобразовать его в массив чисел, управлять этим массивом, а затем преобразовать его обратно. Это было причиной того, что MAT снова был основан на 1, поскольку длина строки помещалась в нулевое положение, поэтому обычно игнорировалась.

Пятое издание

Пятое издание, с конца 1970 г., снова началось как два дополнения к четвертому изданию, с февраля и апреля 1969 года.

Основным изменением стало введение обработки файлов. Ранее любые предопределенные данные, которые были назначены в программе, должны были быть помещены в строки ДАННЫЕ, а считаны по очереди с помощью команды READ. Это расширение позволяет обращаться к файлам и читать их аналогичным образом. Команда INPUTтеперь другая команда для чтения отдельного элемента из файла, а команда PRINTзаписывает его. Для произвольного доступа READтеперь можно link в любом месте файла с помощью команды RESET, в то время как WRITEбудет писать в это место. Текущее местоположение было возвращено функции LOC, а длина файла - LOF. Можно также проверить, были ли вы в конце файла во время последовательного чтения, используя IF END THEN....

Еще одним важным изменением стала возможность для одной программы BASIC вызвать другую, используя CHAIN ​​и передать ей переменные, используя список ОБЩИЙ. Позже, она использовалась для этой концепции больших программ, но она, тем не менее, использовалась для написания некоторых больших программ.

Было также добавлено множество более мелких изменений. Среди них были двумерные строковые массивы, в отличие от одномерных в предыдущей версии, а также возможность использовать DEFдля определения строковых функций, а не только математических. Новые функции включают в себя CLK $, DAT $ для работы со временем и датой, TIM, который возвращает истекшее время, и USR $, который возвращает номер пользователя, который сегодня будет именем пользователя. Новые строковые функции включают LEN, STR $, VAL, ASC, которые распространены в современных диалектах BASIC. 'как краткая форма для REMтакже появилась в этой версии.

Шестое издание

Работа над шестым изданием началась осенью 1969 г., до того, как было завершено пятое издание. В отличие от предыдущих версий, где документы указаны основывались на любых изменениях, внесенных в компилятор, для новой версии полная спецификация была написана заранее. Над этой версией работали Кемени и Курц, а также несколько бывших студентов, вернувшихся преподавателями; Стивен Гарланд, Джон МакГичи и Роберт Харгрейвс. Ему было предоставлено обширное время для созревания: версия работала в течение трех месяцев летом 1971 года, прежде чем она была окончательно выпущена 21 1971 года. В результате того, что дизайну дали время на созревание, это было, как описал Курц, «вероятно, самая продуманная и самая стабильная программная система, которую когда-либо писал Дартмут».

Одним из наиболее важных изменений была замена более ранней концепции CHAIN ​​на более четкую CALL, который работает аналогично GOSUB, но назвется на имя функции, а не на номер строки. Функции были использованы с использованием SUBENDи позволяли задать параметры как часть вызова, вместо системы использования COMMON. Другим важным изменением было использование дескрипторов файлов (номеров), созданных с помощью команды FILE, которая похожа на OPEN, найденную в большинстве современных BASIC. Новые строковые функции включаются SEG $для возврата подстрок аналогичным MID $, найденному в основанных на MS BASIC, POS, который возвращает одну строку внутри другой и для конкатенации. ИСПОЛЬЗОВАНИЕ ПЕЧАТИобеспечивал форматированный вывод способом, несколько похожим на FORTRAN.

Шестое издание было по сути последней версией оригинальной концепции BASIC. Он оставался оставшимся многие годы. Более поздние версии были подробными языками.

SBASIC

В 1976 году Стивен Гарланд собрал ряд дополнений к структурированному программированию для создания Dartmouth Structured BASIC или SBASIC. Основная цель заключалась в замене управляющих структур, основанных на ЕСЛИ... ТОГДАи GOTO, на различные блочно-ориентированные структуры. Это было сделано с помощью прекомпилятора, который взял исходный код SBASIC, преобразовал его в 6-е издание BASIC, а затем скомпилировал и запустил его как обычно. SBASIC также добавил графических функций, основанных на команде PLOT, которая была добавлена ​​другими программистами.

Структуры были завершены поставщиками, как это было в ALGOL 68, в отличие от общих блочных структур, различных языков, как Pascal или С. Например, DO WHILE...занимал несколько строк, пока не заканчивался LOOP. Из цикла DOможно также выйти снизу, удалив WHILEили UNTILи поместив условие внизу на LOOP. Бесконечные циклы поддерживались с использованием DO FOREVERили LOOP FOREVER.

«Исходный» Dartmouth BASIC не допускал операторов после THEN, только номер строки для перехода. SBASIC разрешил любой оператор, например, IF X < 5 THEN X=X+1. Это базовое расширение до IF... THEN, впервые появившееся в 1972 году с BASIC-PLUS, к этому моменту уже широко поддерживалось большинством различных BASIC, включая микрокомпьютер версий, выпущенных в это время. Вдобавок к этому SBASIC добавил блочно-ориентированный IF, поместив THENв отдельную строку, а затем завершив блок CONTINUE. Вдобавок к этому SBASIC добавил механизм SELECT CASE, который сохранился до наших дней в VB.net.

SBASIC также добавил ряд графических команд, предназначенных для использования с плоттерами. Для этого требовалось, чтобы ПЛОТТЕР "имя плоттера"направлял подчиненные команды выбранному устройству, а ОКНО...- для настройки его параметров. С этого момента PLOT X, Yбудет отображать точки на выбранном плоттере, а добавление точки с запятой в конце оператора, как используется в PRINT, оставит перо на бумаги и вывести строку, например PLOT 10,10; 20,20.

SBASIC послужил основой для ANSI BASIC, но эти усилия потребовали так много времени, что даже Гарланд отказался от ожидания он должен быть одобрен, и в начале 1980-х вместо него начал преподавать классы программирования на Паскале.

Седьмое издание

SBASIC Гарланда был написан как предварительный компилятор, сам на исходном коде SBASIC. Система будет читать исходный код SBASIC, писать соответствующий код 6-го издания и затем компилировать этот вывод. Седьмое издание, выпущенное в 1978 году, было версией SBASIC, которая была автономным компилятором. Он добавил ряд собственных дополнений. Большинство изменений было дальнейшим усовершенствованием системы вызова внешних программ и «оверлеев», которые позволяли разбивать программу на части. В этой версии SUBсовместно используют данные одного файла, предоставляя небольшое количество данных , скрывающих внутри группы подпрограмм, или того, что сегодня известно как модуль.

Кроме того, в этой редакции добавлена ​​структурированная обработка ошибок и разрешена произвольная матричная математика в операторах LET, поэтому можно LET A = M * 4, где M - матричная переменная. и выведите другую матрицу в A, умножив все элементы в M. Наконец, Другим важным обновлением стало то, что подпрограммы теперь используют систему записи активации, которая допускает рекурсию.

ANSI BASIC, восьмое издание

К началу 1970-х количество реализацийASIC выросло десятков, каждая из имеющихся в основе концепции, представленной в исходной версии. Большинство из них были основаны на пятом издании, хотя им часто не хватало инструкций MAT и возможности отступать в коде. GE была одной из таких компаний; они выпустили свои системы Mark II с 5-м изданием, а не дожидались выхода 6-го через несколько месяцев. BASIC-PLUS на платформе DEC был, пожалуй, самой близкой реализацией, включая, например, команды MAT, но затем был добавлен ряд изменений, которые не были обратно совместимы.

После выпуска 6-го издания Курц стал попыткой определить стандартный БЕЙСИК. В январе 1974 г. была рабочая группа группы Американского национального института стандартов (ANSI), X3J2, и создана соответствующая группа Европейской ассоциации компьютеров (ECMA), TC21, в сентябре. В то время целью было создание двух связанных стандартов. Minimal BASIC будет похож на Second Edition, но с добавлением строк, стандартом, которому уже соответствует соответствующий каждый BASIC. Standard BASIC добавил бы больше функциональных возможностей, чтобы создать что-то большее, соответствующее реальным разновидностям BASIC, представленным на рынке.

Процесс был медленным, и первый проект Minimal BASIC не был опубликован до января 1976 года, что привело к его появлению. официально принят в декабре 1977 г. ECMA и 1979 г. по ANSI как X3.60-1978. Minimal BASIC был похож на 3-е издание, включая строковые переменные, но в нем отсутствовал MAT и другие расширенные функции. Напротив, в Standard BASIC было много новых функций, которых не было в других BASIC, и многие из них были плохо рассмотрены и стали предметом некоторой критики. Например, стандарт включал символ продолжения строки, но выбирал амперсанд, , который также использовался для конкатенации строк. Использование их в одной приведенной к очень запутанному коду.

К этому времени выпуск первых микрокомпьютерных систем в 1975 году быстро привел к появлению Altair BASIC, первая версия того, что вскоре будет известно как Microsoft BASIC. MS BASIC был основан на BASIC-PLUS и, следовательно, в Пятой редакции, но не имел отступов, MAT и других функций. Он также добавил функции LEFT $и RIGHT $, нарушив трехбуквенное соглашение. По мере того, как количество микрокомпьютеров выросло в конце 1970-х, превратилось в рынок домашних компьютеров, MS BASIC стал фактическим стандартом.

С такими быстрыми изменениями на рынке, Standard BASIC усилия замедлились и были официально ратифицированы до 1987 года как X3.113-1987. К этому времени стандарты не имели реальной цели; не только MS BASIC был повсюду, но к середине 1980-х использование BASIC сокращалось, так как программное обеспечение для термоусадочной упаковки пришло на смену программам для ввода текста. Оба стандарта в конечном итоге были отозваны.

Несмотря на окончательный провал усилий ANSI, проект стандарта BASIC был реализован в Дартмуте как восьмое издание в 1982 году.

Интерфейс DTSS

В DTSS реализована ранняя интегрированная среда разработки (IDE): интерактивный интерфейс командной строки. Это обеспечило ряд пользовательских команд и команд управления заданиями. Например, незанятый терминал можно подключить к учетной записи записи записи пользователя, набрав HELLO, и снова выйти из системы с помощью BYE.

Любая строка, введенная вводимая с номера строки, была добавлен в программу, заменив любую ранее сохраненную строку на такой же номер; все остальное считалось командой DTSS и немедленно выполнялось. Строки, которые состояли исключительно из показателей строки, не сохранялись, но удались все ранее сохраненные строки с тем же номером. Этот метод редактирования необходим из-за использования телетайпов в оконечных устройствах.

Каждая учетная запись пользователя может иметь любое количество программ BASIC, хранящихся в автономном режиме, в то время как учетные записи администраторов также могут оставить программы в постоянном хранилище. Любая из них была активна в данный момент для данной учетной записи пользователя, и, если программа не была загружена, предполагалась новая программа. Доступ к сохраненным программам осуществляется с помощью команд, которые сегодня известны как части самого языка BASIC; например, команда LISTпредписывала DTSS распечатать текущую активную программу.

Список команд

HELLO
войти в DTSS
BYE
выйти из DTSS
BASIC
запустить BASIC режим
NEW
имя и начать запись программы
СТАРЫЙ
извлечь ранее названную программу в текущем хранилище
LIST
показать программу
SAVE
сохранить текущую программу в постоянном хранилище
UNSAVE
очистить текущую программу из хранилища
КАТАЛОГ
использовать имена программ в постоянном хранилище
SCRATCH
удалить текущую программу без удаления ее имени
ПЕРЕИМЕНОВАТЬ
изменить имя текущей программы без стирания
RUN
выполнение текущих программ
STOP
прерывание текущей запущенной программы
FRI
режим Friden для телетайпов с механическим переводом строки
NFR
выйти из режима Friden
EXP
объяснять (справка) EXP EXP для списка команд, которые могут быть объяснены системой
REPLACE
сохранить текущую программу, используя имя, уже используемое для другого файла

Команды пользователи часто считали их частным языком BASIC, но на самом деле они были частями системы времени, которые использовались при подготовке программ ALGOL или FORTRAN через терминалы DTSS.

BASIC language

В первом выпуске реализованы следующие типы операторов, некоторые операторы и ключевые слова взяты из FORTRAN II, а некоторые из ALGOL 60. В целом, язык точно следует модели FORTRAN, поскольку в нем есть один оператор на строке кода, отсутствуют «блоки» АЛГОЛА для группирования кода (эти конструкции структурного программирования были основной причиной разработки АЛГОЛОВ) и использование GOTO для управления ходом выполнения программы.

От ALGOL потребовались циклы в стиле FOR... TO... STEP, которые заменили громоздкие операторы DO... CONTINUEв FORTRAN. BASIC также упростил конструкцию IF... THEN, чтобы простые сравнения, такие как IF X>5 THEN GOTO 20, в отличие от FORTRAN IF (X-5) 20, 20,30. Стиль FORTRAN «вычисленное IF» был введен с помощью команды ON... GOTOв более поздних версиях.

Имена переменных были ограничены от A до Z, от A0 до A9, от B0 до B9,..., от Z0 до Z9, что давало максимум 286 переменных различных переменных. Нечетная система FORTRAN для настройки числа от I до N как целых чисел, а остальных как чисел с плавающей запятой была удалена, и все переменные предполагались с плавающей запятой и размером до 10 элементов. Команда DIMтребовалась, только если массив содержал более десяти элементов. Имена массивов были ограничены только от A до Z.

Список операторов BASIC

DEF
определяет однострочные функции
DIM
(сокращение от Dimension) определяет размер массивов
END
определить конец программы
STOP
остановить программу перед текстовым концом
FOR / TO/ STEP
определить циклы
NEXT
отметить конец циклов
GOSUB
передать управление простыми подпрограммами
RETURN
вернуть управление из простых подпрограмм
GOTO
передать управление другим оператору
IF/ ЗАТЕМ
принятие решения
LET / =
присвоить результаты формулы
PRINT
результаты вывода
DATA
хранить статические данные в программе
READ
входные данные, хранящиеся в операторах DATA
REM
комментарий ("REMark")

Также реализованы числовые переменные с плавающей запятой и арифметика.

Список операторов

Арифметические операторыОператоры отношения / логические
-Отрицание (унарный оператор)=Равно
+Сложение<>Не равно
-Вычитание (двоичная операция)<Меньше
*Умножение<=Меньше или равно
/Деление>Больше
Возведение в степень=>Больше или равно
Оператор группировки
()Группировка

Список функций

ABS
Абсолютное значение
ATN
Значение арктангенса (результат радиан )
COS
Значение косинуса (аргумент в радианах )
EXP
Экспоненциальное значение
INT
Целочисленное значение
LOG
Натуральное логарифмическое значение
RND
Случайное значение
SIN
Значение синуса (аргумент в радианах )
SQR
Значение квадратного корня
TAN
значение тангенса (аргумент в радианах )
Примеры

Ранние версии BASIC не имеют возможности читать и записывать внешние файлы. данных, которые обычно читаются из файла, BASIC включил слово DATA, которое может сопровождаться произвольно длинным списком элементов, заканчивающимся только на границе длины строки. ДАННЫЕне выполнялись и пропускались при обнаружении. Команды READбудут потреблять данные одну за другой, отслеживая их местоположение в полном элементе коллекции DATAво внутреннем указателе. В версии 3 была добавлена ​​команда ВОССТАНОВЛЕНИЕдля сброса указателя на первую команду ДАННЫЕв программе.

В этом примере «первые три значения данных считываются в X, Y и Z соответственно. Значение -1 считывается в N. Следующие 11 значений, от.1 до.3, считываются в 11 элементов массива B. "

15 ЧТЕНИЕ X, Y, Z 20 ЧТЕНИЕ N 24 ДЛЯ I = от 0 до 10 25 ЧТЕНИЕ B (I) 26 ДАЛЕЕ I 40 ДАННЫЕ 4.2, 7.5, 25.1, -1,.1,.01,.001,.0001 45 ДАННЫЕ.2,.02,.002,.0002,.015,.025,.3.03,.003

На этом выпуске BASIC, Dartmouth BASIC, третье издание и далее имело ключевое слово матрицы MATмогло префикс ряда других команд для работы с целыми массивами данных с помощью В этом примере из 1968 года MAT INPUT Vиспользуется для ввода чисел.Затем код складывает все элементы в матрицу и вычисляет среднее значение. В третьем издании также добавлены отступы, которые используются здесь для пояснения структуры цикла.

5 LET S = 0 10 MAT INPUT V 20 LET N = NUM ​​30 IF N = 0 THEN 99 40 FOR I = 1 TO N 45 LET S = S + V (I) 50 NEXT I 60 PRINT S / N 70 ПЕРЕХОД К 5 99 КОНЕЦ
Примечания
Ссылки

Цитаты

Библиография

Дополнительная литература

  • Кемени, Джон Г. и Курц, Томас Э. (1985). Вернуться к BASIC: история, коррупция и будущее языка. Addison-Wesley Publishing Company, Inc. ISBN 0-201-13433-0.
Внешние ссылки
Последняя правка сделана 2021-05-16 13:47:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте