Дартмут БЕЙСИК
Парадигма | императив , массив |
---|---|
Разработано | Джон Дж. Кемени , Томас Э. Курц |
Впервые появился | 1964 год |
ТЫ | Дартмутская система разделения времени |
Под влиянием | |
ФОРТРАН , АЛГОЛ | |
Под влиянием | |
См. список БАЗОВЫХ диалектов |
Dartmouth BASIC — оригинальная версия BASIC языка программирования . Его разработали два профессора колледжа Дартмутского Джон Дж. Кемени и Томас Э. Курц . Благодаря базовой системе разделения времени Дартмута (DTSS) она предлагала интерактивную среду программирования всем студентам, а также более широкому университетскому сообществу.
Несколько версий были созданы в Дартмуте, реализованы студентами бакалавриата и функционировали как система компиляции и запуска . Первая версия была запущена 1 мая 1964 года, а в июне она была открыта для обычных пользователей. Последовали обновления, кульминацией которых стал седьмой и последний выпуск в 1979 году. В 1975 году Дартмут также представил радикально обновленную версию, известную как Structured BASIC (или SBASIC ), в которую были добавлены различные структурированного программирования концепции . SBASIC лег в основу ANSI разработки стандарта Standard BASIC в начале 1980-х годов.
Большинство диалектов BASIC ведут свою историю с Четвертого издания (в котором, например, были добавлены строковые переменные, которые большинство пользователей 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» . [1] Многие из первоначальных списков исходных текстов в BASIC Computer Games и связанных с ними работах также ведут свою историю от Dartmouth BASIC.
История развития
[ редактировать ]Более ранняя работа
[ редактировать ]Джон Дж. Кемени поступил на математический факультет Дартмутского колледжа в 1953 году и позже стал его заведующим. В 1956 году он получил доступ к IBM 704 благодаря Массачусетского технологического института усилиям Регионального компьютерного центра Новой Англии . В том же году он написал язык DARSIMCO — версию ассемблера , упрощающую программирование математических операций. Ему помогал Томас Э. Курц , который присоединился к отделу в том же году. [2]
О DARSIMCO забыли, когда в 1957 году на машине был установлен первый компилятор FORTRAN . Появление FORTRAN преподнесло важный урок. Курц, которому внушили, что FORTRAN медленный, потратил несколько месяцев на написание программы на ассемблере 704, отладка которой занимала около часа процессорного времени и все еще не запускалась. Сдавшись, он переписал программу на ФОРТРАНЕ и запустил ее за пять минут. Урок заключался в том, что языки высокого уровня могут сэкономить время, независимо от их измеряемой производительности. [2]
В 1959 году школа получила свой первый компьютер — барабанный ЛГП-30 . Один студент написал для машины язык на основе FORTRAN под названием DART. Это привело к попытке создать компилятор АЛГОЛА 58, а мы обратились к АЛГОЛУ 60 когда это определение было окончательно доработано, . Написание компилятора было затруднено из-за очень маленького размера памяти, 32 КБ по современным меркам, и было чрезвычайно медленным, исходя из скорости барабана 3600 об/мин. Тем не менее, они смогли создать функциональную урезанную версию, известную как АЛГОЛ 30 . [3] Дальнейшее развитие привело к созданию SCALP, «Автономного процессора Алгола», однопроходного компилятора, который был готов запустить скомпилированную программу, как только перфолента закончила чтение исходного кода. Сразу же появятся результаты работы программы или любые сообщения об ошибках. Этот стиль работы «компиляция и работа» позже будет использоваться в BASIC. [3] [4]
В 1962 году Кемени и старшеклассник Сидни Маршалл [5] начал экспериментировать с новым языком DOPE (Dartmouth Oversimplified Programming Experiment) . Здесь использовались пронумерованные строки для обозначения инструкций, например, для сложения двух чисел использовалась DOPE:
5 + A B C
Это означало: «В строке 5 выполните сложение значений переменных A и B и поместите результат в C». Несмотря на несколько загадочную структуру, можно увидеть основу будущего языка BASIC. [6] Помимо основных математических операций, язык включал SQR, EXP, LOG, SIN и простую конструкцию ветвления. [7]
Вычисление в гуманитарных науках
[ редактировать ]Кемени и Курц согласились с необходимостью повышения грамотности в программировании среди студентов за пределами традиционных областей STEM ; только 25% студентов Дартмута посещали курсы, связанные с STEM, но некоторый уровень математики использовался почти в каждой области. Более того, по мере того, как компьютеры становились все более важными в обществе, они задавались вопросом: «Как могут разумные решения относительно вычислений и их использования приниматься людьми, по существу неосведомленными о них?» [7]
Позже Кемени отметил: «Наше видение заключалось в том, чтобы каждый студент в кампусе имел доступ к компьютеру, а любой преподаватель должен иметь возможность использовать компьютер в классе, когда это необходимо. Это было так просто». [8] Но сделать это было бы практически невозможно, учитывая то, с чем им пришлось работать; время типичного запуска SCALP составляло около 15 минут, а языки были слишком сложны для использования пользователями, не владеющими STEM, для выполнения основных задач. [7]
Проблемой была не просто сложность, а вся концепция пакетной обработки . Студенты готовили свои программы на перфокартах или бумажной ленте, отправляли их операторам компьютеров, а затем в какой-то момент в будущем получали результат. Часто это выявляло ошибку, требующую повторения всего процесса. Как они позже выразились: «Если на одну попытку уйдет порядка 1 дня, ученик либо потеряет интерес, либо забудет, в чем заключались проблемы. В лучшем случае он будет тратить время на ожидание результатов дня. " [9] [а]
В 1959 году, во многом благодаря репутации Кемени как новатора в преподавании математики, факультет получил награду Фонда Альфреда П. Слоана на сумму 500 000 долларов на строительство нового здания факультета. [10]
Разработка концепции
[ редактировать ]Во время визита в Массачусетский технологический институт в 1961 году они познакомились с PDP-1 с разделением времени и его недавно завершенной экспериментальной операционной системой . Джон Маккарти спросил Курца, почему они не использовали разделение времени в своих усилиях по распространению компьютеров в массы. Курц вернулся в Дартмут и сказал Кемени: «Нам следует разделить время», на что Кемени немедленно ответил «ОК». [11]
В эксперименте, направленном на проверку работоспособности этой концепции, студенты были разбиты на группы по пять человек и им давали по очереди включать LGP-30 с помощью SCALP. [4] Компьютерное время было разбито на 15-минутные сеансы, и каждой группе из пяти человек давали один сеанс, а затем передавали его следующей группе. Было обнаружено, что студенты обычно могут завершить свои программы за два или три «перехода» в течение одного занятия. Это ясно предполагало, что интерактивная система позволит сотням пользователей успешно использовать одну машину. [12]
Появление Teletype Model 33, телетайпа использующего недавно введенный ASCII по телефонным линиям, решило проблему доступа; Программистам больше не придется отправлять программы на карточках или бумажной ленте, теперь они будут использовать Модель 33 для ввода непосредственно в компьютер. Все, что было нужно, — это новая машина, достаточно быстрая для размещения системы разделения времени, и простой язык, которым могли бы пользоваться программисты. [13]
Когда тему простого языка стали рассматривать всерьез, Кемени сразу же предложил написать новый. Курца больше интересовала урезанная версия ФОРТРАНа или АЛГОЛА. [14] Но у этих языков было так много особенностей, что Курц согласился с Кемени:
Если бы мы исправили уродливые особенности ФОРТРАНа, у нас бы уже не было ФОРТРАНа. Мне неохотно пришлось согласиться с Джоном, что да, новый язык нужен. [15]
Со временем возникли четыре ключевых элемента; система будет использовать разделение времени, потребуется новый язык, чтобы привлечь пользователей к системе, новые курсы представят программирование как дополнение к другим предметам, и, наконец, терминалы будут открыты для всех пользователей. [16]
Начальная версия
[ редактировать ]Официально проект стартовал в сентябре 1963 года. Целью была разработка языка и операционной системы на готовом компьютере. [17] В начале 1964 года они обратились в Национальный научный фонд (NSF) за финансированием. NSF отправил предложения, одно по системе разделения времени, а другое по языку, на экспертную оценку. В обзорах неизменно говорилось, что они не понимают сложности того, что пытаются сделать. Несмотря на эти негативные комментарии, NSF продолжил выдачу обоих грантов. Образовательные скидки, доступные от General Electric, привели к покупке компьютера GE-225 в эпоху, когда отказ от IBM все еще был чреват опасностью. [18]
GE-225 был соединен с гораздо более простой машиной DATANET-30 (DN-30) и жестким диском , подключенным к обеим машинам для совместного использования программ. [19] В то время у DN-30 не было какой-либо документации по программированию, поскольку он никогда не предназначался для отправки с завода без уже установленной программы. [18] Он включал одну ключевую функцию — прямой доступ к памяти (DMA) к более крупным машинам GE. Это означало, что небольшие сообщения можно было быстро передавать туда и обратно между машинами, позволяя немедленно выполнять команды, введенные пользователем, на 225. [20]
Система будет работать, если DN-30 будет запускать терминалы и сохранять работу пользователя на диск. Когда пользователь ввел RUN
DN-30 будет использовать DMA для отправки этой команды на GE-225. 225 прочитает этот файл, скомпилирует его, запустит и передаст результаты обратно в DN-30, который распечатает выходные данные на терминале. [21]
Летом 1963 года, в ожидании покупки компьютера, GE предоставила доступ к одному из своих GE-225. Кемени начал работу над прототипом компилятора. Осенью студенты Майкл Буш и Джон МакГичи начали работу над проектом операционной системы. И язык, и ОС были сильно изменены за этот период, хотя основные цели остались прежними и были опубликованы в виде черновика в ноябре того же года. [19]
Школьная машина прибыла в последнюю неделю февраля 1964 года. [22] был готов к середине марта, [23] и официально передан 1 апреля. К тому моменту конструкция операционной системы уже была хорошо разработана. Большинство студентов-программистов, работавших над операционной системой, занимались этим по 50 часов в неделю в дополнение к своей обычной учебной нагрузке. [22] Язык разрабатывался параллельно в свободное время на другой машине 225. [24] Разработка ОС была завершена в апреле, а вся система, работающая на трех терминалах Model 33, была готова к концу месяца. Джон Кемени и Джон МакГичи запустили первую программу BASIC 1 мая 1964 года в 4 часа утра по восточному времени . [23]
Не совсем ясно, какими были первые программы. Многие источники, включая Дартмут, утверждают, что это была простая программа: [25]
PRINT 2 + 2
Более поздняя история языка гласит, что две программы были напечатаны одновременно: одна Кемени, а другая - другим неназванным программистом. Они набирали свои программы, набирали RUN
в то же время и получили правильные результаты. [26] Курц рано вставал, уже ушел домой и «пропустил все веселье». [27]
В течение следующего месяца система тестировалась с помощью тестовых программ класса численного анализа. В течение этого периода машина продолжала нормально работать в среднем пять минут. [28] Проблемы были оперативно решены, и в июне было принято решение увеличить количество терминалов до одиннадцати. Примерно в это же время на смену 225 пришел более быстрый GE-235. К осени использовалось 20 терминалов. [19]
GE стала называть комбинацию GE-235 и DN-30 GE-265. [29] складывая номера моделей вместе. GE построила около 75 дополнительных экземпляров GE-265. [30] многие для своего в сфере обслуживания бизнеса . GE называла их системами разделения времени Mark I. [31]
Новая система
[ редактировать ]Одной из первоначальных целей программы было включение программирования в другие курсовые работы. Это был успех, но он создал значительную нагрузку на систему, и стало ясно, что у нее нет места для будущего роста. [32]
В 1965 году команда обратилась в GE за поддержкой в дальнейших разработках. В сентябре вице-президент Луи Рейдер предложил новый GE-635 , который работал примерно в 10 раз быстрее и включал два процессора. Кроме того, будет добавлен второй DN-30 для обслуживания большего количества линий, достаточного для одновременной работы 150 пользователей. [32] Для его размещения потребовалось бы помещение большего размера, чем подвал Колледж-Холла, где проходила трасса 265. Питер Кивит, выпуск 22 года, наряду с дополнительной поддержкой со стороны NSF, привел к строительству Вычислительного центра Кивита, который открылся в декабре 1966 года. [32]
В ожидании прибытия этой машины летом и осенью 1966 года GE-635 в Римском центре развития авиации использовался для разработки MOLDS, «многопользовательской системы онлайн-отладки». GE-635 был введен в эксплуатацию в начале 1967 года, а с использованием MOLDS новая операционная система стала полностью функциональной в сентябре, когда GE-265 был распродан. [33]
GE предоставила машину бесплатно в течение трех лет в рамках более широкого соглашения, согласно которому Дартмут будет разрабатывать новые версии BASIC, а GE будет использовать ее для разработки новой версии своей версии операционной системы. [33] Это сотрудничество оказалось успешным; GE начала использовать эти машины в качестве своих систем разделения времени Mark II. [34] и к концу десятилетия они стали одним из крупнейших поставщиков систем разделения времени в мире. [32]
Когда эта система «Фазы I» вступила в эксплуатацию, команда Дартмута начала разработку «Фазы II», идеальной операционной системы. Она была установлена в марте 1969 года и вскоре после этого сменила название на Дартмутскую систему разделения времени . По истечении трехлетнего периода GE подарила машину университету. Хотя две команды оставались в контакте и было предпринято несколько добросовестных попыток продолжить отношения, дальнейшего сотрудничества произошло мало, и партнерство официально закончилось 20 сентября 1972 года. [33]
Расширение базы пользователей
[ редактировать ]Обзор 1968 года показал, что 80% студентов и 70% преподавателей в той или иной степени использовали систему. Сотни терминалов были разбросаны по всему кампусу, от больницы до бизнес-школы. 57% процессорного времени использовалось для курсовой работы, 16% — для исследований, а остальные 27% — для «развлекательного использования»; Дартмут активно поощрял пользователей играть в игры, чтобы получить практические навыки и преодолеть страх перед компьютером. [35]
Начав с еще одного гранта NSF, в 1967 году Дартмут также начал размещать терминалы за пределами кампуса, включая средние школы в этом районе. Что касается количества пользователей, на этих терминалах обслуживалось 69% от общего числа пользователей, хотя они использовали меньшее количество компьютерного времени. [35] К 1971 году существовало 79 удаленных терминалов, вплоть до Нью-Джерси и Бангора, штат Мэн . Они поддерживались мультиплексорными системами, которые позволяли поддерживать до 12 терминалов по одной телефонной линии голосового качества. Кроме того, некоторые из этих линий были доступны для коммутируемого доступа через модем . [36]
Влияние
[ редактировать ]Разделение времени было основной областью исследований в 1960-х годах, и многие представители компьютерной индустрии предсказывали, что вычислительная мощность станет недорогой и широко распространенной. Наиболее известное заявление об этом высказал Джон Маккарти, который сказал, что «вычислительная техника когда-нибудь может быть организована как общественная услуга, точно так же, как телефонная система является общественной услугой». [37]
Хотя с 1972 года в DTSS были доступны и другие языки. [update] 98% его программ были написаны на Бейсике. [38] Благодаря BASIC компьютерные услуги стали гораздо более доступными для конечных пользователей, чьи задачи требовали слишком много времени для написания кода, чтобы их можно было решить на компьютере. Это привело к тому, что ряд производителей представили компьютеры, специально разработанные для этого рынка пользователей, которые хотели решать задачи малого или среднего масштаба и не особо беспокоились о максимальной производительности. В частности, две машины, нацеленные непосредственно на этот рынок, стали «наиболее широко используемыми из когда-либо разработанных небольших систем разделения времени». [34]
HP 2000 работал под управлением HP Time-Shared BASIC , комбинации BASIC и операционной системы с разделением времени, почти идентичной настройке DTSS. Система поддерживала до 32 одновременных пользователей, используя процессор HP 2100 младшего класса для запуска терминалов таким же образом, как Datanet-30 исходной установки GE-265, в то время как программы работали на более дорогой модели одна и та же машина, обычно отличающаяся тем, что у нее было больше основной памяти . BASIC от HP использовал полукомпилированный токенизированный формат для хранения программ, что сокращало время загрузки и означало, что «компиляция» была нулевой. [39]
Digital Equipment Corporation применила другой подход, используя предложение одной машины на основе существующей линейки PDP-11 с новой RSTS/E операционной системой и BASIC-PLUS . BASIC-PLUS более внимательно следил за пятым изданием, включая MAT
команд, но был реализован как чистый интерпретатор, в отличие от компилятора Dartmouth или токенизированного формата HP. Он также включал ряд структур управления, соответствующих модели JOSS , таких как PRINT I IF I > 10
. [40] Tymshare SUPER BASIC также поддерживал структуры в стиле JOSS и матричную математику, но сохранил исходную операцию компиляции и запуска.
Практически каждый поставщик той эпохи предлагал какое-то решение этой проблемы, хотя они, возможно, и не были так сильно похожи на оригинал. Когда Курц начал рассматривать возможность создания стандарта ANSI для BASIC в 1973 году, он обнаружил, что количество доступных бюро обслуживания с разделением времени с BASIC было больше, чем с любым другим языком. К сожалению, этот успех также был проблемой; к тому моменту существовало так много вариаций, что стандарт казался невозможным. [34]
Игры на БЕЙСИКЕ
[ редактировать ]Кемени активно поощрял игры на платформе DTSS и считал это одной из основных причин успеха системы DTSS. [38] Вероятно, он был автором одной из первых игр для мэйнфреймов . Хотя Кемени не приписал это себе, позже он сослался на ФТБОЛ , заявив, что оно «было написано в воскресенье после определенной игры Дартмут - Принстон в 1965 году, когда Дартмут выиграл трофей Ламберта . Это своего рода памятная программа». Игра разочаровала «Принстон», пользующийся большим успехом. [41] [б]
По мере расширения системы, особенно после добавления обработки строк в BASIC, система DTSS стала основной платформой для разработки многих текстовых игр . В начале 1970-х годов People's Computer Company начала публиковать их в своем журнале, обычно преобразованном в более широко доступный HP BASIC. Многие из этих списков были собраны в их книге 1975 года « Что делать после того, как вы нажмете кнопку возврата» . Хотя они опубликованы в формате HP BASIC, большинство из них ведут свою историю либо от DTSS, либо от Зала науки Лоуренса в Калифорнии, где была установлена аналогичная машина, известная как DECISION. [43]
Более известный сборник — «Компьютерные игры BASIC» 1978 года, где около половины программ в книге были написаны либо в Дартмуте, в том числе еще одна — Кемени, Батнуме, либо, что чаще, в одной из многих средних школ, которые были связаны с ним после 1968 года. Особенно плодовитой средней школой была средняя школа Лексингтона в Массачусетсе, но появляются и многие другие школы. В ряде программ не указано их исходное местоположение, но они исходят от авторов, которые, вероятно, были связаны с системой через школу или общественные проекты, такие как Project SOLO. [44]
Многопользовательские видеоигры стали возможны на BASIC, когда Стивен Гарланд и Джон Макгичи разработали интерфейс нескольких онлайн-терминалов MOTIF для DTSS. Чтобы запустить игру, пользователь набирал LINK, а затем имя сеанса вместо RUN, тем самым позволяя другим пользователям подключиться к игре, набрав JOIN и имя сеанса. Затем MOTIF мультиплексировал ввод и вывод для программы BASIC, добавляя строковый идентификатор в начало каждой строки ввода и вывода. Первыми программами, разработанными с этим интерфейсом, были версия FTBALL для двух человек и игра в покер для пяти человек. Более серьезной была управленческая игра, которая позволяла десяти студентам Школы делового администрирования Амоса Така соревноваться в производстве и маркетинге одного продукта. [45]
Версии
[ редактировать ]Первое издание
[ редактировать ]Исходная версия, позже известная как первая, поддерживала команды LET
, PRINT
, END
, FOR...NEXT
, GOTO
, GOSUB...RETURN
, IF...THEN
, DEF
, READ
, DATA
, DIM
, и REM
. Он включал базовые математические инструкции, +, -, * и /, а также стрелка вверх для показателей степени «...поскольку на телетайпной машинке невозможно печатать верхние индексы». [46] В современных разновидностях стрелка вверх обычно заменяется символом «шляпки». ^. Экспоненты принимают абсолютное значение числа перед расчетом, поэтому для расчета -X^3
, нужно было использовать X*X*X
. Была еще одна проблема с экспоненциальной функцией, которая обрабатывала -X^2
как (-X)^2
в отличие от правильного порядка операций -(X^2)
, что не было исправлено до третьего выпуска. [46] INT()
функция всегда усекается до нуля. [47]
Язык имел ряд собственных особенностей. В отличие от более поздних версий, LET
команда требовалась для всех операторов, в которых не было другой команды, поэтому 10 A=5*5
недействительно в этой версии. [47] PRINT
оператор использовал запятую при печати нескольких переменных, переходя к следующей из пяти «зон». Запятая не требовалась в случае, когда печаталось приглашение и одно значение, поэтому PRINT "value of A is "A
был действительным. Несколько скрытой особенностью было то, что все переменные могли представлять массивы (векторы) до десяти элементов (индексы от 1 до 10, измененные на от 0 до 9 во втором издании) без объявления таким образом с помощью DIM
. DIM
был необходим только в том случае, если требовался другой размер вектора. [48] [с]
Имена переменных были ограничены одной буквой или буквой, за которой следовала цифра (286 возможных имен переменных). Пользовательские функции могут иметь только одну букву, поэтому FNA
через FNZ
. Все операции выполнялись с плавающей запятой . На GE-225 и GE-235 это обеспечивало точность около 30 бит (примерно десять цифр) с диапазоном показателя степени по основанию 2 от -256 до +255. [49]
Кроме того, поскольку размер слова GE-235 составлял 20 бит и использовался шестибитный код символов , в языке было закреплено использование трехбуквенных имен функций, поскольку это позволяло хранить три шестибитных символа в 20-битном коде. слово (с использованием 18 бит). Вот почему функции BASIC состоят из трех букв, например INT
или SQR
, то, что сохранялось во многих вариантах языка еще долгое время после того, как они покинули GE-235. [47]
Второе издание, CARDBASIC
[ редактировать ]Второе издание BASIC (хотя в то время оно так и не называлось) внесло лишь минимальные изменения. Выпущенный в октябре 1964 года, он мог начинать массивы с индекса 0 вместо 1 (полезно для представления полиномов ) и добавлял точку с запятой, ;, к PRINT
заявление. [50] В отличие от более поздних реализаций, где между элементами оставалось пространство, точка с запятой продвигала печать до следующего кратного трем символам, что было полезно для «упаковки» большего количества чисел в строку вывода, чем существующий разделитель-запятая. [51] Трехсимвольный размер был побочным эффектом 20-битного размера слова GE-235 , в котором хранились три шестибитных символа. Переход к следующему трехсимвольному столбцу осуществлялся просто переходом к следующему слову в памяти. [52]
Октябрьская версия также включала отдельное определение CARDBASIC, который представлял собой просто версию BASIC для использования в рабочих процессах на основе карточек. CARDBASIC был почти идентичен интерактивной версии, за исключением того, что он не включал массивы с нулевым отсчетом. Что еще более важно для будущего языка, CARDBASIC добавил MAT
команды, работающие с числовыми матрицами. CARDBASIC не получил дальнейшего развития, поскольку вся идея BASIC заключалась в том, чтобы быть интерактивным. [50]
Третье издание
[ редактировать ]Третье издание, выпущенное в 1966 году и первое, в котором использовалось название «издание», было первым, разработанным специально для работы на новом компьютере GE-635, который должен был появиться в ближайшее время. Эта версия включает в себя MAT
функции из CARDBASIC, и теперь они могут использовать 0 в качестве нижнего индекса. [53]
Новый SGN
функция дала знак своего аргумента (положительный?0 и отрицательный?1), а RESTORE
добавлено для «перемотки» позиции READ/DATA
. Проблема возведения в степень была решена, поэтому -X^2
будет интерпретироваться как -(X^2)
. [53] Кроме того, INT
функция была изменена на истинное значение нижнего предела, в отличие от функции обрезки к нулю, которая позволяла реализовать округление с помощью INT(X+0.5)
. [47]
Главным изменением в этой версии стал новый INPUT
оператор, анализирующий числовые значения, что впервые делает язык по-настоящему интерактивным во время выполнения; раньше единственным элементом управления во время выполнения было ввод STOP
в мониторе. Кроме того, система теперь позволяла и поощряла отступы в циклах - функция, которой не было в большинстве других версий BASIC. [54]
Четвертое издание
[ редактировать ]Третье издание использовалось на протяжении всего срока службы GE-235 до осени 1967 года. Однако, поскольку планировалось получить GE-635, весной 1967 года на модели 635 была создана экспериментальная версия. Эта версия была партнерской. между GE и Дартмутом, при этом GE предоставила новую операционную систему, а также ряд функций BASIC в результате своих собственных усилий по созданию Mark 1 BASIC. [54]
В эту версию, первоначально опубликованную как дополнение к Третьему изданию, добавлены RANDOMIZE
команда «засеять» RND
функция, и ON...GOTO
«вычисляемый переход», который очень похож на аналогичную функцию в FORTRAN. Эта версия также позволяла ON...THEN
, утверждая, что IF...THEN
не требовал GOTO
тогда это не требовалось бы здесь. Новый TAB
функция переместила печать в заданный столбец от 0 до 74. [54] Еще одним внутренним изменением было еще раз изменить MAT
быть основанным на 1; можно использовать 0-й индекс, но обычно он игнорируется различными командами. [55]
Основным дополнением этой версии стали строковые переменные, а также изменения в READ/DATA
операторы, которые могут хранить в себе строки, и INPUT
заявление, чтобы прочитать их в интерактивном режиме. Одной из особенностей строковой системы было то, что при сравнении намеренно игнорировались конечные пробелы, поэтому «ДА» и «ДА» считались равными. [56] Позже выяснилось, что это была серьезная ошибка. [55] Строковые переменные обозначались знаком доллара, например A$
, просто потому, что у них закончились символы, которые можно было найти на большинстве клавиатур. Кто-то заметил, что $ выглядит как S в слове «Строка», вот и все. [57]
Манипулирование строками осуществлялось с помощью нового CHANGE
команда. Это преобразует строковое значение переменной в эквивалентный набор значений ASCII. Затем числовой массив можно было манипулировать и преобразовать обратно в строку. Например, этот код выводит на консоли «is»:
100 LET S$ ="Now is the time"
110 CHANGE S$ TO S
120 LET T(1) = S(5)
130 LET T(2) = S(6)
140 LET T(0) = 2
150 CHANGE T TO T$
160 PRINT T$
В строке 140 длина строки устанавливается равной 2, которой должен управлять пользователь. Первый символ находится в T(1). Хотя эта система является гибкой, ее ни в коем случае нельзя было использовать. В более поздних версиях эта проблема будет решена с помощью новых функций. [58]
Незначительные изменения в этой версии изменили точку с запятой в PRINT
операторы для «плотной упаковки» вывода без пробелов, [52] [59] и использование апострофа как краткой формы REM
. [60] [д]
Официальное четвертое издание появилось только в 1968 году, когда к предыдущим дополнениям было добавлено несколько новых функций. Это включало возможность определять многострочные функции с помощью DEF
командование и могущественный CHANGE
оператор, который рассматривал строки как массивы ASCII -подобных кодов, поэтому с отдельными символами можно было работать без цикла по всей строке. [55] Это также была единственная функция манипулирования строками; чтобы извлечь один символ или подстроку, нужно было использовать CHANGE
чтобы преобразовать его в массив чисел, манипулировать этим массивом, а затем преобразовать его обратно. Это была причина, по которой MAT снова стал основан на 1; длина строки помещалась в нулевое положение, и ее обычно нужно было игнорировать. [61]
Пятое издание
[ редактировать ]Пятое издание, вышедшее в конце 1970 года, снова началось как два дополнения к четвертому изданию, вышедшему в феврале и апреле 1969 года. [55]
Основным изменением стало введение обработки файлов. Раньше любые предопределенные данные, которые нужно было использовать в программе, нужно было помещать в строки DATA , а затем считывайте их по одной с помощью Команда ЧИТАТЬ . Эту функцию можно использовать для чтения файлов аналогичным образом. Команда INPUT теперь могла читать один элемент из файла и PRINT мог бы написать один. [62]
Файлы открывались через новый FILES
Ключевое слово, за которым следовал список строковых констант, описывающих имена файлов. Поскольку это были константы, изменение имени файла требовало изменения кода, чтобы он соответствовал. Именам были присвоены номера, первое имя стало файлом №1 и так далее. Поддерживались два формата файлов: произвольный и линейный. С линейным файлом обращались так же, как с текстовым файлом сегодня, можно было LINPUT #1: A$
прочитать строку текста в строковую переменную, а затем PRINT A$
для вывода его на терминал. [62] В более поздних версиях добавлено FILE $1,name$
разрешить указывать файлы в виде строк, хотя какое-то время для этого требовалось FILES *
в верхней части программы, чтобы указать, что вы использовали этот формат. [63]
Для файлов произвольного доступа имя должно было указывать тип данных внутри; %
указал, что содержит двоичные данные, в то время как $num
указано, что его следует читать как строки с максимальной длиной num
. [62] ЧИТАЙТЕ и WRITE может располагаться в любом месте файла с произвольным доступом с помощью RESET , в то время как текущее местоположение было возвращено командой LOC , а длина файла на ЛОФ . Во время последовательного чтения можно также проверить, находится ли он в конце файла, используя IF END THEN...
. [64]
Еще одним важным изменением стала возможность одной программы BASIC вызывать другую с помощью команду CHAIN и передавайте в нее переменные с помощью команды ОБЩИЙ список. Позже выяснилось, что эта базовая концепция имела ряд проблем, но тем не менее ее использовали для написания некоторых больших программ. [64]
Обработка строк получила серьезное обновление. Новый SEG$
команда вернула новую строку, вырезанную из другой. В приведенном выше примере строка «is» извлекается из более крупной строки. Используя новую команду, это можно свести к LET T$ = SEG$(S$,5,6)
, который работает аналогично MID$
функция, встречающаяся в большинстве диалектов ( MID$(S$,5,2)
). SEG$ использует первый и последний индексы; MID$ использует первый индекс и длину. LEN
возвращала длину строки, которая в противном случае теперь обрабатывалась внутри и в большинстве случаев не требовала вычислений, и POS
возвращал позицию одной строки внутри другой, что в большинстве диалектов обрабатывалось с помощью SUBSTR
. Амперсанд, &
, был введен для конкатенации строк . [58]
Также было добавлено множество более мелких изменений. Среди них были двумерные строковые массивы, в отличие от одномерных в предыдущей версии, а также возможность использовать DEF для определения как строковых, так и математических функций. Включены новые системно-ориентированные функции. CLK$ , DAT$ для работы со временем и датами, TIM , который возвращал прошедшее время, и USR$ , который вернул номер пользователя, каким сегодня будет имя пользователя. Включены новые строковые функции. STR $ , ВАЛ , ASC , которые распространены в современных диалектах BASIC. ' как краткая форма для REM также появился в этой версии. [64]
Шестое издание
[ редактировать ]Работа над шестым изданием началась осенью 1969 года, еще до того, как было завершено пятое издание. Для новой версии заранее была написана полная спецификация. Это контрастирует с предыдущими версиями, где документы спецификации были основаны на изменениях в компиляторе. Над этой версией работали Кемени и Курц, а также несколько бывших студентов, вернувшихся в качестве преподавателей: Стивен Гарланд, Джон МакГичи и Роберт Харгрейвс. Ему было дано значительное время на доработку: бета-версия работала в течение трех месяцев летом 1971 года, прежде чем она была наконец выпущена 21 сентября 1971 года. самая стабильная система программного обеспечения, которую Дартмут когда-либо создавал». [65]
Одним из самых больших изменений стала замена прежнего. CHAIN
концепция с гораздо более четко определенным CALL
который действовал аналогично GOSUB
, но оно относилось к имени функции, а не к номеру строки. Функции были определены с использованием SUB...SUBEND
и принимал произвольные параметры при вызове вместо использования глобальных переменных через COMMON
декларации. Еще одним важным изменением было использование дескрипторов файлов (числа), созданных с помощью FILE
команда, похожая на OPEN
который присутствует в большинстве современных BASICов. PRINT USING
предоставлял форматированный вывод в стиле FORTRAN, [66] пока LINPUT
принимал ввод без интерпретации, позволяя вводить запятые, точки с запятой и даже код BASIC. [67]
Шестое издание было, по сути, последней версией исходной концепции BASIC. Оно оставалось неизменным на протяжении многих лет. Более поздние версии были существенно на разных языках. [65]
SBASIC
[ редактировать ]В 1976 году Стивен Гарланд собрал ряд дополнений к структурированному программированию и создал Dartmouth Structured BASIC, или SBASIC. [68] Основная цель заключалась в замене структур управления, основанных на IF...THEN
и GOTO
с различными блочно-ориентированными структурами. Он сделал это с помощью прекомпилятора, который взял исходный код SBASIC, преобразовал его в BASIC 6-й редакции, а затем скомпилировал и запустил его как обычно. SBASIC также добавил ряд графических функций, основанных на PLOT
команда, добавленная другими программистами. [69]
Блочные структуры завершались соответствующими операторами, как это было в АЛГОЛе 68 , в отличие от общих блочных структур, встречающихся в таких языках, Паскаль или C. как Например, DO WHILE...
занимал несколько строк, пока не закончился LOOP
. [70] DO
цикл также можно выйти снизу, удалив WHILE
или UNTIL
и поместив условное выражение внизу LOOP
. Бесконечные циклы поддерживались с помощью DO FOREVER
или LOOP FOREVER
. [71]
«Оригинальный» Dartmouth BASIC не допускал высказываний после THEN
, только номер строки для перехода. SBASIC допускал любые операторы, например IF X < 5 THEN X=X+1
. [72] Это базовое расширение до IF...THEN
в 1972 году , впервые внедрившая BASIC-PLUS , [73] К этому моменту уже широко поддерживался большинством разновидностей BASIC, включая версии для микрокомпьютеров , которые выпускались в то время. Помимо этого, в SBASIC добавлена блочно-ориентированная IF
путем размещения THEN
на отдельной строке, а затем заканчивая блок словами CONTINUE
. [74] Кроме того, SBASIC добавил SELECT CASE
механизм, который сохранился и по сей день в Visual Basic .NET . [75]
SBASIC также добавил ряд графических команд, предназначенных для использования с плоттерами . Это потребовало PLOTTER "plottername"
для направления последующих команд выбранному устройству, а WINDOW...
для настройки его параметров. С тех пор, PLOT X,Y
будет создавать точки на выбранном плоттере, добавляя точку с запятой в конце оператора, как это используется в PRINT
, оставил бы ручку на бумаге и провел бы линию, например PLOT 10,10;20,20
. [76] [77]
SBASIC в конечном итоге лег в основу стандарта ANSI X3.113-1987 для Full Basic 1987 года , который расширил более ранний стандарт ANSI X3.60-1978 1978 года для Minimal Basic. Длительная задержка в разработке этого стандарта, а также отсутствие внимания среди ученых-компьютерщиков к неструктурированному Бейсику, привели к тому, что комитет Совета колледжей, разрабатывающий Курс продвинутого уровня в области компьютерных наук , который возглавлял Гарланд, решил потребовать использования Паскаля и не допускать использования Бейсика в качестве базового языка. язык для курса. [78] [79]
Гарланд использовал SBASIC для преподавания вводного курса информатики в Дартмуте. [80] [81] но переписал свой учебник для курса на Паскале [82] чтобы его можно было использовать для преподавания курса AP.
Седьмое издание
[ редактировать ]SBASIC Гарланда представлял собой прекомпилятор, написанный на самом исходном коде SBASIC. Система читала исходный код SBASIC, записывала соответствующий код 6-го издания, а затем компилировала этот вывод. Седьмое издание, выпущенное в 1980 году, представляло собой версию SBASIC, которая представляла собой отдельный автономный компилятор. Он добавил ряд собственных дополнений. Большинство изменений представляли собой дальнейшую разработку системы вызова внешних программ и «оверлеев», которые можно было использовать для разбиения программы на части. В этой версии SUB
Совместное использование одного файла эффективно разделяет данные между собой. Это обеспечивало некоторое сокрытие данных внутри группы процедур. Сегодня это разделение будет известно как модуль. [83]
Кроме того, в этом выпуске добавлена структурированная обработка ошибок и произвольная матричная математика. LET
заявления, чтобы можно было LET A = M*4
где M было матричной переменной, и оператор выводил в A еще одну матрицу со всеми элементами M, масштабированными на 4. Наконец, еще одним важным обновлением было использование записей активации для подпрограмм, что сделало рекурсию . возможной [83]
ANSI BASIC, восьмое издание
[ редактировать ]К началу 1970-х годов количество реализаций BASIC выросло до десятков, каждая из которых имела свои собственные изменения базовой концепции, представленные в исходной версии. Большинство из них были основаны на пятом издании, хотя им часто не хватало инструкций MAT и возможности делать отступы в коде. GE была одной из этих компаний; они выпустили свои системы Mark II вместе с 5-м изданием, вместо того, чтобы ждать появления 6-го издания несколько месяцев спустя. [84] BASIC-PLUS на платформе DEC был, пожалуй, наиболее близкой реализацией, включая, например, команды MAT, но затем в него был добавлен ряд изменений, которые не были обратно совместимы. [40]
После выпуска 6-го издания Курц занялся определением стандарта BASIC. Рабочая группа Американского национального института стандартов (ANSI) X3J2 была сформирована в январе 1974 года, а в сентябре того же года — соответствующая группа Европейской ассоциации производителей компьютеров (ECMA) TC21. Целью в то время было создание двух связанных стандартов. Минимальный BASIC будет похож на второе издание, но с добавлением строк - стандарта, которому уже может соответствовать практически каждый BASIC. Стандартный BASIC добавит больше функциональности, чтобы создать что-то большее, соответствующее реальным разновидностям BASIC, представленным на рынке. [84]
Процесс был медленным, и первый проект Minimal BASIC не был опубликован до января 1976 года, что привело к его официальному принятию в декабре 1977 года ECMA и ANSI в 1979 году как X3.60-1978. Минимальный BASIC был похож на третье издание, включая строковые переменные, но не имел MAT и других расширенных функций. [85] Напротив, в Standard BASIC было много новых функций, которых не было в других BASIC, и многие из них были плохо рассмотрены и стали предметом некоторой критики. Например, стандарт включал символ продолжения строки, но выбрал амперсанд, &, который также использовался для объединения строк. Использование их в одной строке может привести к очень запутанному коду. [86]
К этому времени выпуск первых микрокомпьютерных систем в 1975 году быстро привел к появлению Altair BASIC , первой версии того, что вскоре стало известно как Microsoft BASIC . MS BASIC был создан по образцу BASIC-PLUS и, в конечном итоге, пятого издания, но в нем не было отступов, MAT и других функций. Он также добавил LEFT$
и RIGHT$
функции, нарушая трехбуквенное соглашение. По мере того, как в конце 1970-х годов число микрокомпьютеров росло и в конце 1970-х годов они превратились в рынок домашних компьютеров , MS BASIC стал стандартом де-факто . [84]
Из-за этих быстрых изменений на рынке усилия по созданию Standard BASIC еще больше замедлились и не были официально ратифицированы до 1987 года как X3.113-1987. К этому времени у стандартов не было реальной цели; Мало того, что MS BASIC был повсюду, но к середине 1980-х годов использование BASIC сокращалось, поскольку программное обеспечение для термоусадочной упаковки заменило программы ввода. Оба стандарта в конечном итоге были отменены. [84]
Несмотря на окончательный провал усилий ANSI, проект стандарта BASIC был реализован в Дартмуте как восьмое издание в 1982 году. [83]
DTSS-интерфейс
[ редактировать ]DTSS реализовал раннюю интегрированную среду разработки (IDE): интерактивный интерфейс командной строки . Это обеспечило ряд команд пользователя и управления заданиями. Например, незанятый терминал можно подключить к учетной записи пользователя, набрав HELLO
и снова вышел из системы с помощью BYE
. [и]
Любая строка, введенная пользователем и начинающаяся с номера строки, добавлялась в программу, заменяя любую ранее сохраненную строку тем же номером; все остальное считалось командой DTSS и немедленно выполнялось. Строки, состоящие исключительно из номера строки, не сохранялись, но удалялись все ранее сохраненные строки с тем же номером. Этот метод монтажа был необходим в связи с использованием телетайпов в качестве оконечных устройств.
Каждая учетная запись пользователя может содержать любое количество программ BASIC, хранящихся в автономном режиме, а учетные записи администратора также могут оставлять программы в постоянном хранилище. Любой из них был активен в определенный момент времени для данной учетной записи пользователя, и если ни одна программа не была загружена, предполагалась новая программа. Доступ к хранимым программам осуществлялся с помощью команд, которые сегодня более известны как части самого языка BASIC; например, LIST
Команда дала указание DTSS распечатать текущую активную программу.
Список команд
[ редактировать ]HELLO
- войти в ДТСС
BYE
- выйти из ДТСС
BASIC
- запустить базовый режим
NEW
- назвать и начать писать программу
OLD
- извлечь ранее названную программу из постоянного хранилища
LIST
- отобразить текущую программу
RUN
- выполнить текущую программу
STOP
- прервать текущую программу
TEST
- используйте программу, предоставленную инструктором, для тестирования текущей программы
LINK
- выполнить текущую программу в многотерминальном режиме
JOIN
- присоединиться к программе, выполняющейся в многотерминальном режиме
SAVE
- сохранить текущую программу в постоянном хранилище
UNSAVE
- очистить текущую программу из постоянной памяти
REPLACE
- сохранить текущую программу, используя имя, которое уже используется для другого файла
CATALOG
- отображать названия программ в постоянном хранилище
SCRATCH
- стереть текущую программу, не очищая ее имя
RENAME
- изменить название текущей программы, не стирая его
FRI
- включить режим Friden для телетайпов с механическим переводом строки
NFR
- отключить мирный режим
EXP
- объяснение (помощь) EXP EXP для списка команд, которые может объяснить система
Пользователи часто считали эти команды частью языка BASIC, но на самом деле они были частью системы разделения времени, а также использовались при подготовке программ ALGOL или FORTRAN через терминалы DTSS.
ОБУЧЕНИЕ/Тестовая система
[ редактировать ]Около 80% всех студентов Дартмута в конце 1960-х годов прошли два курса математики и на втором курсе изучили базовый курс либо по математическому анализу, либо по конечной математике. В начале этих курсов они прочитали две одночасовые лекции по Бейсику, а затем им пришлось написать четыре программы на Бейсике, начиная от программ для аппроксимации π или поиска корня многочлена пятой степени до программ для решения дифференциального уравнения или поиска (путем моделирование) предельная вероятность в цепи Маркова. Система TEACH/Test помогла учащимся выполнить эти задания. Когда они думали, что у них есть работающая программа, они вводили команду TEST, и написанная инструктором программа либо одобряла то, что они написали, либо давала подсказку о том, где они могли ошибиться. Студенты должны были сдать список каждой программы, образец RUN и одобрение системы TEACH/Test. Система не оценивала задания и не записывала, сколько раз учащийся набирал TEST; он просто помогал студентам и их преподавателям. [87] [88]
БЕЙСИК язык
[ редактировать ]В первом выпуске были реализованы следующие типы операторов, взяв некоторые операторы и ключевые слова из FORTRAN II , а некоторые из ALGOL 60 . В целом язык более точно соответствует модели FORTRAN. [46] в том, что он обычно имеет один оператор на строку кода, не имеет «блоков» АЛГОЛа для группировки кода (эти конструкции структурированного программирования были основной причиной разработки АЛГОЛа) и использования GOTO для управления потоком программы.
Из АЛГОЛА понадобилось FOR...TO...STEP
циклы стилей, пришедшие на смену громоздким формам FORTRAN. DO...CONTINUE
заявления. [47] BASIC также упростил IF...THEN
конструкция, позволяющая проводить простые сравнения, например IF X>5 THEN GOTO 20
, в отличие от FORTRAN IF (X-5) 20,20,30
. [47] Стиль FORTRAN «вычисленное ЕСЛИ» был вновь представлен с появлением ON...GOTO
команда в более поздних версиях.
Имена переменных были ограничены от A до Z, от A0 до A9, от B0 до B9, ..., от Z0 до Z9, что давало максимум 286 возможных различных переменных. Странная система FORTRAN для настройки переменных от I до N как целых чисел, а остальных как с плавающей запятой, была удалена, и предполагалось, что все переменные имеют плавающую запятую и содержат до 10 элементов. DIM
Команда требовалась только в том случае, если массив содержал более десяти элементов. [47] Имена массивов были ограничены только буквами от A до Z.
Список операторов BASIC
[ редактировать ]DEF
- определить однострочные функции
DIM
- (сокращение от «размерность» ) определяет размер массивов
END
- определить конец программы
STOP
- остановить программу до текстового конца
FOR / TO / STEP
- определить циклы
NEXT
- отметить конец петель
GOSUB
- передать управление простым подпрограммам
RETURN
- возврат управления из простых подпрограмм
GOTO
- передать управление другому оператору
IF / THEN
- принятие решений
LET / =
- присвоить результаты формулы переменной
PRINT
- выходные результаты
DATA
- хранить статические данные внутри программы
READ
- входные данные, хранящиеся в операторах DATA
REM
- комментарий ("REMark")
Он также реализовал числовые переменные с плавающей запятой и арифметику.
Список операторов
[ редактировать ]Арифметические операторы | Реляционные/логические операторы | ||
---|---|---|---|
-
|
Отрицание (унарное соч.) | =
|
Равно |
+
|
Добавление | <>
|
Не равно |
-
|
Вычитание (двоичная операция) | <
|
Меньше, чем |
*
|
Умножение | <=
|
Меньше или равно |
/
|
Разделение | >
|
Больше, чем |
?
|
Возведение в степень | =>
|
Больше или равно |
Группирующий оператор | |||
( )
|
Группировка |
Список функций
[ редактировать ]ABS
- Абсолютное значение
ATN
- Значение арктангенса (результат в радианах )
COS
- Значение косинуса (аргумент в радианах )
EXP
- Экспоненциальное значение
INT
- Целое значение
LOG
- Натуральное логарифмическое значение
RND
- Случайное значение
SIN
- Значение синуса (аргумент в радианах )
SQR
- Значение квадратного корня
TAN
- Значение тангенса (аргумент в радианах )
Примеры
[ редактировать ]Ранние версии BASIC не имели возможности читать и записывать внешние файлы. Для представления списков данных, которые обычно читаются из файла, в BASIC включена функция DATA
Ключевое слово, за которым может следовать сколь угодно длинный список элементов, заканчивающийся только на пределе длины строки. DATA
был неисполняемым и при обнаружении пропускался. READ
команды будут потреблять данные один за другим, отслеживая их местоположение в полной коллекции DATA
элементы во внутреннем указателе. В версии 3, RESTORE
добавлена команда для сброса указателя на первый DATA
команда в программе.
В этом примере «первые три значения данных считываются в X, Y и Z соответственно. Значение -1 считывается в N. Следующие 11 значений, от .1 до .3, считываются в 11 элементов массива B. ." [89]
15 READ X, Y, Z
20 READ N
24 FOR I=0 TO 10
25 READ B(I)
26 NEXT I
40 DATA 4.2, 7.5, 25.1, -1, .1, .01, .001, .0001
45 DATA .2, .02, .002, .0002, .015, .025, .3, .03, .003
В отличие от большинства последующих BASICов, Dartmouth BASIC, начиная с третьего издания, имел матричное ключевое слово: MAT
, который может префикс ряда других команд для работы с целыми массивами данных с помощью одной команды. В этом примере из руководства 1968 года: [90] MAT INPUT V
используется для ввода ряда переменных. Когда пользователь ничего не вводит в строку, этот процесс завершается и общее количество элементов становится доступным в NUM
псевдопеременная. [ф] Затем код складывает все отдельные элементы матрицы и вычисляет среднее значение. В Третьем издании также добавлены отступы, которые используются здесь для пояснения структуры цикла.
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 GO TO 5
99 END
Примечания
[ редактировать ]- ↑ Обратите внимание на использование термина «его», что в данном случае было единственной возможностью, поскольку Дартмут принимал женщин только некоторое время спустя.
- ↑ Дэвид Аль заявил, что Кемени написал это, описывая игру в BASIC Computer Games. [42]
- ^ Эта функция была обнаружена в большинстве BASIC, основанных на Dartmouth, но редко встречалась в тех, которые были созданы независимо.
- ^ Неясно, использовался ли апостроф в предыдущих версиях, руководство по версии 4 является первым, в котором об этом упоминается явно.
- ^ Выходить из системы не требовалось, если пользователи не отвечали, они выходили из системы после небольшой задержки.
- ^ Почему
NUM
не был реализован как функция, напримерLEN()
, это загадка.
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Что делать после того, как вы нажмете Return . Народная компьютерная компания. 1975.
- ^ Jump up to: а б Курц 1981 , с. 516.
- ^ Jump up to: а б Курц 1981 , стр. 516–516.
- ^ Jump up to: а б Кемени и Курц 1985 , с. 7.
- ^ Кемени и Курц 1985 , с. 8.
- ^ Курц 1981 , с. 517.
- ^ Jump up to: а б с Курц 1981 , с. 518.
- ^ Время 2014 года .
- ^ Кемени и Курц 1968 , с. 3.
- ^ «Высшая математика в Ганновере» . Время . 23 февраля 1959 года.
- ^ Кемени и Курц 1985 , с. 3.
- ^ Кемени и Курц 1985 , с. 4.
- ^ Курц 1981 , с. 519.
- ^ Кемени и Курц 1985 , с. 6.
- ^ Кемени и Курц 1985 , с. 9.
- ^ Курц 1981 , стр. 519–520.
- ^ Киевит 1971 , с. 9.
- ^ Jump up to: а б Кемени и Курц 1985 , с. 5.
- ^ Jump up to: а б с Курц 1981 , с. 520.
- ^ General Electric Computers (1965). Справочное руководство по программированию DATANET-30 (PDF) .
- ^ Дартмутская система разделения времени (DTSS). Март 1995 года . Проверено 27 мая 2016 г.
- ^ Jump up to: а б Кемени и Курц 1968 , с. 224.
- ^ Jump up to: а б Киевит 1971 , с. 10.
- ^ Кемени и Курц 1968 , с. 225.
- ^ «1960-е годы» . Дартмутский ИТС .
- ^ Кемени и Курц 1985 , стр. 16, 22.
- ^ Кемени и Курц 1985 , с. 16.
- ^ Кемени и Курц 1968 , с. 226.
- ^ Кемени и Курц 1985 , с. 21.
- ^ Кемени и Курц 1985 , с. 22.
- ^ Курц 1981 , стр. 532, 534.
- ^ Jump up to: а б с д Киевит 1971 , с. 11.
- ^ Jump up to: а б с Курц 1981 , с. 533.
- ^ Jump up to: а б с Курц 1981 , с. 534.
- ^ Jump up to: а б Киевит 1971 , с. 17.
- ^ Киевит 1971 , с. 18.
- ^ Гарфинкель, Симсон (1999). Абельсон, Хэл (ред.). Архитекторы информационного общества, тридцать пять лет Лаборатории компьютерных наук Массачусетского технологического института . Кембридж: MIT Press. п. 1. ISBN 978-0-262-07196-3 .
- ^ Jump up to: а б Кемени, Джон Г. (1972). Человек и компьютер . Нью-Йорк: Сыновья Чарльза Скрибнера. стр. 32–37, 41–42. ISBN 9780684130095 . LCCN 72-1176 .
- ^ Руководство по BASIC с разделением по времени (PDF) . Хьюлетт Паккард. Август 1969 года.
- ^ Jump up to: а б Руководство BASIC-PLUS (PDF) . ДЕКАБРЬ. 1972.
- ^ «Джон Кемени и дедушка Tecmo BASIC FTBALL» . 17 октября 2017 года. Архивировано из оригинала 25 июля 2018 года . Проверено 25 июля 2018 г.
- ^ Ахль 1978 , с. 64.
- ^ Что делать после того, как вы нажмете return . Народная компьютерная компания. 1975.
- ^ Ахль 1978 .
- ^ Джон С. Макгичи, «Несколько терминалов под управлением пользовательской программы в среде с разделением времени», Communications of the ACM 16:10, октябрь 1973 г., страницы 587 и –590.
- ^ Jump up to: а б с Курц 1981 , с. 523.
- ^ Jump up to: а б с д и ж г Курц 1981 , с. 524.
- ^ Курц 1981 , с. 525.
- ^ Курц, Томас. «БАЗОВЫЕ команды: оригинальная версия» .
- ^ Jump up to: а б Курц 1981 , с. 526.
- ^ Человек4 .
- ^ Jump up to: а б Кемени и Курц 1985 , с. 24.
- ^ Jump up to: а б Курц 1981 , с. 527.
- ^ Jump up to: а б с Курц 1981 , с. 528.
- ^ Jump up to: а б с д Курц 1981 , с. 529.
- ^ Man4 , с. 66.
- ^ Кемени и Курц 1985 , с. 28.
- ^ Jump up to: а б Кемени и Курц 1985 , с. 29.
- ^ Man4 , с. 64.
- ^ Man4 , с. 52.
- ^ Man4 , с. 67.
- ^ Jump up to: а б с Кемени и Курц 1985 , с. 31.
- ^ Кемени и Курц 1985 , с. 32.
- ^ Jump up to: а б с Курц 1981 , с. 530.
- ^ Jump up to: а б Курц 1981 , с. 531.
- ^ Эллиотт 1988 , с. 134.
- ^ Кемени и Курц 1985 , с. 26.
- ^ Гарланд 1976 .
- ^ Гарланд 1976 , с. 1.
- ^ Гарланд 1976 , с. 4.
- ^ Гарланд 1976 , с. 5.
- ^ Гарланд 1976 , с. 6.
- ^ Руководство по языку BASIC-PLUS (PDF). Мейнард, Массачусетс: Корпорация цифрового оборудования. 1972. стр. 3–13.
- ^ Гарланд 1976 , с. 7.
- ^ Гарланд 1976 , с. 10.
- ^ Гарланд 1976 , с. 21.
- ^ Стивен Дж. Гарланд и Артур В. Люрманн, «Графика на языке BASIC», Компьютерная графика (ежеквартальный отчет SIGGRAPH-ACM) 8:3, страницы 1–8, 1974.
- ^ Мейс, Скотт (6 сентября 1982 г.). «Совет колледжа разрабатывает курс AP на основе Паскаля» . Инфомир . п. 29.
- ^ Стивен Дж. Гарланд, «Информатика для продвинутых специалистов», Компьютеры в математическом образовании , Вигго П. Хансен и Мэрилин Дж. Цвенг (редакторы), страницы 194–201. Ежегодник Национального совета учителей математики, 1984 г.
- ^ Стивен Дж. Гарланд, Введение в вычислительную технику и базовое программирование , программа по компьютерным и информационным наукам, Дартмутский колледж, 1982.
- ^ Стивен Дж. Гарланд, «Языки для первых курсов информатики: базовый», Abacus 1:4, страницы 39–49, лето 1984 г.
- ^ Стивен Дж. Гарланд, Введение в информатику с приложениями на Паскале , Аддисон-Уэсли, Ридинг, Массачусетс, 1986.
- ^ Jump up to: а б с Эллиотт 1988 , с. 135.
- ^ Jump up to: а б с д Маркони .
- ^ Минимальный БЕЙСИК (PDF) . ЭКМА. Январь 1978 года.
- ^ Гюнтерот, Курт (июль 1983 г.). «Новый стандарт ANSI BASIC». Уведомления ACM SIGPLAN . 18 (7): 50–59. дои : 10.1145/988216.988221 . S2CID 31236801 .
- ^ Джон Г. Кемени и Томас Э. Курц, «Дартмутское разделение времени», Science 162, 11 октября 1968 г., страницы 223–228.
- ^ Джон Г. Кемени и Томас Э. Курц, Дартмутская вычислительная система с разделением времени, итоговый отчет по гранту Национального научного фонда NSF-GE-3864, июнь 1967 г., страницы 9–10 и Приложение III.
- ^ Справочное руководство по языку BASIC . Интерданные. Январь 1975 г., стр. 3–24.
- ^ БЕЙСИК, 4-е издание, 1968 г. , стр. 53.
Библиография
[ редактировать ]- Кемени, Джон; Курц, Томас (11 октября 1968 г.). «Дартмутское разделение времени» . Наука . 162 (3850): 223–228. Бибкод : 1968Sci...162..223K . дои : 10.1126/science.162.3850.223 . ПМИД 5675464 .
- Кемени, Джон; Курц, Томас (1985). Вернемся к БЕЙСИКУ: История, коррупция и будущее языка . Аддисон-Уэсли. ISBN 0-201-13433-0 .
- Курц, Томас Э. (1981). "БАЗОВЫЙ" . В Вексельблате, Ричард (ред.). История языков программирования . История языков программирования I. Нью-Йорк: ACM . стр. 515–537 . дои : 10.1145/800025.1198404 . ISBN 0127450408 .
- Вычислительный центр Кивита и Дартмутская система разделения времени . Дартмутский колледж. 1971.
- Руководство по BASIC версии 2 (PDF) . Дартмутский колледж. Октябрь 1964 года.
- Руководство по BASIC версии 4 (PDF) . Дартмутский колледж. Январь 1968 года.
- Гарланд, Стивен (декабрь 1976 г.). Структурное программирование, графика и Бейсик . Дартмутский колледж.
- «Пятьдесят лет BASIC, языка программирования, сделавшего компьютеры персональными» . Время . 29 апреля 2014 г.
- Ахль, Дэвид (1978). ОСНОВНЫЕ Компьютерные игры . Творческие вычисления.
- Маркони, Андреа. «История языка программирования BASIC» (PDF) . Q7базовый .
- Эллиотт, Бриг (1988). "БАЗОВЫЙ" . В Кенте, Аллен; Уильямс, Джеймс (ред.). Энциклопедия микрокомпьютеров: Том 2 . ЦРК Пресс. стр. 133–153. ISBN 9780824727017 .