UCSD Pascal — это система программирования на языке Pascal , работающая на UCSD p-System , переносимой, высокомашинно-независимой операционной системе . UCSD Pascal был впервые выпущен в 1977 году. Он был разработан в Калифорнийском университете в Сан-Диего (UCSD).
В 1977 году Институт информационных систем Калифорнийского университета в Сан-Диего (UCSD) разработал UCSD Pascal, чтобы предоставить студентам общую среду, которая могла работать на любом из доступных тогда микрокомпьютеров, а также на миникомпьютерах DEC PDP-11 кампуса . Операционная система стала известна как UCSD p-System.
Было три операционные системы, которые IBM предлагала для своего оригинального IBM PC . Первой была UCSD p-System, а двумя другими были IBM PC DOS и CP/M-86 . [1] Поставщик SofTech Microsystems [2] подчеркивал переносимость приложений p-System, с виртуальными машинами для 20 процессоров на момент выпуска IBM PC. Он предсказывал, что пользователи смогут использовать купленные ими приложения на будущих компьютерах под управлением p-System; [3] реклама называла его «универсальной операционной системой». [4]
PC Magazine осудил UCSD p-System на IBM PC, заявив в обзоре Context MBA , написанном на этом языке, что он «просто не производит хороший код». [5] p-System не очень хорошо продавалась для IBM PC из-за отсутствия приложений и из-за того, что она была дороже других вариантов. Ранее IBM предлагала UCSD p-System в качестве опции для IBM Displaywriter , специализированной текстовой машины на базе 8086. (Собственная операционная система Displaywriter была разработана полностью внутри компании и не была открыта для программирования конечным пользователем.)
Известные расширения стандартного Pascal включают отдельно компилируемые Units и тип String . Некоторые встроенные функции были предоставлены для ускорения обработки строк (например, сканирование в массиве для определенного шаблона поиска); другие расширения языка были предоставлены для того, чтобы позволить UCSD p-System быть самокомпилируемой и самохостируемой .
UCSD Pascal был основан на архитектуре машины p-code . Его вклад в эти ранние виртуальные машины состоял в том, чтобы расширить p-code от его корней как промежуточного языка компилятора до полной среды выполнения. [ необходимо разъяснение ] UCSD Pascal p-Machine был оптимизирован для новых малых микрокомпьютеров с адресацией, ограниченной 16 битами (всего 64 КБ памяти). Джеймс Гослинг ссылается на UCSD Pascal как на ключевое влияние (наряду с виртуальной машиной Smalltalk ) на дизайн виртуальной машины Java . [6]
UCSD p-System достигла независимости от машины, определив виртуальную машину , называемую p-Machine (или псевдомашиной, которую многие пользователи стали называть «Pascal-машиной», как и ОС, хотя документация UCSD всегда использовала «псевдомашину») с собственным набором инструкций , называемым p-кодом (или псевдокодом). Урс Амманн, ученик Никлауса Вирта , первоначально представил p-код в своей докторской диссертации, [7] из которой была получена реализация UCSD, реализация Zurich Pascal-P. Реализация UCSD изменила реализацию Zurich, сделав ее «байт-ориентированной». P-код UCSD был оптимизирован для выполнения языка программирования Pascal . Затем каждой аппаратной платформе требовалась только программа-интерпретатор p-кода, написанная для нее, чтобы портировать всю p-System и все инструменты для ее запуска. Более поздние версии также включали дополнительные языки, которые компилировались в базу p-кода. Например, Apple Computer предложила компилятор Fortran [8] (написанный Silicon Valley Software, Саннивейл, Калифорния), создающий p-код, который работал на версии p-system от Apple. Позже TeleSoft (также расположенный в Сан-Диего ) предложил раннюю среду разработки Ada , которая использовала p-код и, следовательно, могла работать на ряде аппаратных платформ, включая Motorola 68000 , System /370 и Pascal MicroEngine .
UCSD p-System разделяет некоторые концепции с более поздней платформой Java . Оба используют виртуальную машину, чтобы скрыть различия в операционной системе и оборудовании, и оба используют программы, написанные для этой виртуальной машины, чтобы обеспечить кроссплатформенную поддержку. Аналогично обе системы позволяют использовать виртуальную машину либо как полную операционную систему целевого компьютера, либо запускать ее в «коробке» под управлением другой операционной системы.
Компилятор UCSD Pascal распространялся как часть портативной операционной системы p-System.
UCSD p-System появилась около 1974 года как идея Кеннета Боулза из UCSD , [9], который считал, что количество новых вычислительных платформ, появляющихся в то время, затруднит принятие новых языков программирования. Он основал UCSD Pascal на версии Pascal-P2 портативного компилятора из Цюриха. Он был особенно заинтересован в Pascal как языке для обучения программированию. UCSD представил две функции, которые были важными улучшениями оригинального Pascal: строки переменной длины и «единицы» независимо скомпилированного кода (идея, включенная в развивающийся тогда Ada (язык программирования)). Никлаус Вирт приписывает p-System и UCSD Pascal в частности популяризацию Pascal. Только с выпуском Turbo Pascal версия UCSD начала спускаться с первого места среди пользователей Pascal.
Диалект Pascal UCSD Pascal произошел от подмножества Pascal, реализованного в Pascal-P2, который не был разработан как полная реализация языка, а скорее как «минимальное подмножество, которое самокомпилировалось», чтобы соответствовать его функции как набора начальной загрузки для компиляторов Pascal. UCSD добавил строки из BASIC и несколько других функций, зависящих от реализации. Хотя UCSD Pascal позже получил многие другие функции полного языка Pascal, подмножество Pascal-P2 сохранилось в других диалектах, в частности, в Borland Pascal , который скопировал большую часть диалекта UCSD.
Существовало четыре версии UCSD p-code engine, каждая из которых содержала несколько ревизий p-System и UCSD Pascal. Ревизия p-code engine (т. е. p-Machine) означала изменение языка p-code, и поэтому скомпилированный код не переносим между различными версиями p-Machine. Каждая ревизия была представлена ведущей римской цифрой, в то время как ревизии операционной системы были пронумерованы как номер «точка» после римской цифры p-code. Например, II.3 представляла третью ревизию p-System, работающую на второй ревизии p-Machine.
Оригинальная версия, официально не распространявшаяся за пределами Калифорнийского университета в Сан-Диего . Однако, исходники Pascal для обеих версий I.3 и I.5 свободно обменивались между заинтересованными пользователями. В частности, исправленная версия I.5a была известна как одна из самых стабильных.
Широко распространен, доступен на многих ранних микрокомпьютерах. Многочисленные версии включали Apple II (в конечном итоге Apple Pascal) , DEC PDP-11, Intel 8080 , Zilog Z80 и машины на базе MOS 6502 , Motorola 68000 и IBM PC (версия II на ПК была ограничена одним сегментом кода 64 КБ и одним сегментом данных стека/кучи 64 КБ ; версия IV сняла ограничение на сегмент кода, но стоила намного дороже [ quantify ] ).
Участниками проекта того времени были доктор Кеннет Л. Боулз, Марк Аллен , Ричард Гливс, Ричард Кауфманн, Пит Лоуренс, Джоэл МакКормак , Марк Овергаард, Кит Шиллингтон, Роджер Самнер и Джон Ван Зандт.
Пользовательская версия, написанная для Western Digital для запуска на их микрокомпьютере Pascal MicroEngine. Впервые включена поддержка параллельных процессов.
Коммерческая версия, разработанная и продаваемая SofTech. Основана на версии II; не включала изменений из версии III. Не пользовалась спросом из-за сочетания их ценовой структуры, проблем с производительностью из-за интерпретатора p-кода и конкуренции с собственными операционными системами (поверх которых она часто запускалась). После того, как SofTech прекратила выпуск продукта, его подхватила Pecan Systems, относительно небольшая компания, сформированная из пользователей и поклонников p-System. Продажи несколько оживились, в основном благодаря разумной ценовой структуре Pecan, но p-System и UCSD Pascal постепенно уступили рынок собственным операционным системам и компиляторам. Доступно для TI -99/4A, оснащенного картой p-кода, Commodore CBM 8096 , Sage IV, HP 9000 и BBC Micro со вторым процессором 6502. [10]
Компьютер Corvus Systems использовал UCSD Pascal для всего своего пользовательского программного обеспечения. «Инновационная концепция» Constellation OS заключалась в запуске Pascal (интерпретативно или компилируемо) и включении всего распространенного программного обеспечения в руководство, чтобы пользователи могли вносить изменения по мере необходимости.
Pascal Units, вероятно, повлияли на пакеты Ada