UCSD Pascal
UCSD Pascal — это реализация языка программирования Паскаль, разработанная в 1978—1981 годах в Институте информационных систем Калифорнийского университета в Сан-Диего (UCSD). Система известна тем, что одной из первых внедрила концепцию переносимого промежуточного кода (p-кода), что позволяло запускать одни и те же программы на различных аппаратных платформах без перекомпиляции. UCSD Pascal стал основой для операционной системы UCSD p-System, которая была популярна в академической среде и на ранних персональных компьютерах, включая Apple II, IBM PC, Commodore 64 и DEC PDP-11.
История
Предпосылки создания
В конце 1970-х годов язык Паскаль, созданный Никлаусом Виртом в 1970 году, быстро завоевал популярность в университетах как язык для обучения структурному программированию. Однако существовавшие реализации (например, стандартный Паскаль для мейнфреймов) были привязаны к конкретным аппаратным платформам, что затрудняло обмен программами между разными компьютерами. В 1977 году группа исследователей из UCSD под руководством профессора Кеннета Боулза (Kenneth Bowles) начала работу над переносимой версией Паскаля, которая могла бы работать на различных машинах.
Разработка и выпуск
Проект стартовал в 1978 году. Ключевой идеей стало использование виртуальной машины, исполняющей промежуточный код (p-код), который генерировался компилятором. Это позволяло переносить систему на новую платформу, написав лишь небольшой интерпретатор p-кода для конкретного процессора. Первая версия UCSD Pascal (I.0) была выпущена в 1978 году для компьютера Terak 8510/a. Затем последовали версии для LSI-11, PDP-11, Z80 и 8080. В 1979 году вышла версия II.0, которая стала первой коммерчески успешной. В 1981 году была выпущена версия IV.0, которая легла в основу операционной системы UCSD p-System.
Распространение и влияние
UCSD Pascal быстро распространился в университетах США и Европы. В начале 1980-х годов он был портирован на многие популярные микрокомпьютеры, включая Apple II (версия Apple Pascal), IBM PC, Commodore 64, Atari 800 и Texas Instruments TI-99/4A. Система использовалась для обучения программированию, разработки учебных программ и научных расчётов. В 1982 году компания SofTech Microsystems приобрела права на коммерческое распространение UCSD p-System, а затем в 1984 году — компания Pecan Software Systems. Однако с появлением в середине 1980-х годов более эффективных компиляторов Паскаля (например, Turbo Pascal от Borland) и распространением процессоров x86, интерес к UCSD Pascal постепенно угас. Последняя версия системы (IV.2) была выпущена в 1985 году.
Архитектура и устройство
Компилятор и p-код
UCSD Pascal состоял из компилятора, который транслировал исходный код на Паскале в промежуточный байт-код — p-код (от «pseudo-code»). P-код представлял собой набор инструкций для гипотетической стековой машины. Компилятор был написан на самом Паскале и мог быть перенесён на другую платформу после компиляции через кросс-компиляцию. Основные характеристики p-кода:
- Стековая архитектура: все операции выполнялись с использованием стека.
- Типизированные инструкции: поддержка целых чисел, вещественных чисел, строк, массивов и записей.
- Динамическое управление памятью: поддержка процедур
newиdisposeдля работы с кучей.
Интерпретатор
Для выполнения p-кода на конкретной машине требовался интерпретатор, написанный на машинно-зависимом языке (обычно на ассемблере). Интерпретатор эмулировал виртуальную машину, читая инструкции p-кода и выполняя соответствующие действия на реальном процессоре. Размер интерпретатора составлял от 4 до 12 килобайт, что было небольшим по меркам того времени. Это позволяло легко переносить систему на новые компьютеры.
Операционная система
UCSD Pascal поставлялся в комплекте с операционной системой UCSD p-System, которая включала:
- Файловую систему: поддерживала иерархические каталоги, хотя была ограничена длиной имён файлов (до 15 символов) и отсутствием поддержки длинных имён.
- Редактор: встроенный текстовый редактор с возможностью редактирования исходного кода.
- Отладчик: инструмент для пошагового выполнения программ и просмотра переменных.
- Система сборки: утилита
Linkerдля объединения объектных модулей.
Классификация и версии
Основные версии
- UCSD Pascal I.0 (1978): первая версия, работала на Terak 8510/a.
- UCSD Pascal II.0 (1979): добавлена поддержка плавающей арифметики, улучшен редактор.
- UCSD Pascal III.0 (1980): введена поддержка сегментации кода, что позволяло загружать программы по частям.
- UCSD Pascal IV.0 (1981): последняя крупная версия, которая стала основой для коммерческой p-System. Включала поддержку графики, звука и последовательных портов.
Портированные реализации
- Apple Pascal (1981): версия для Apple II, распространялась компанией Apple. Включала улучшенный редактор и поддержку дисковода.
- IBM Pascal (1982): версия для IBM PC, требовала MS-DOS или PC DOS.
- Commodore Pascal (1983): версия для Commodore 64, распространялась на дискетах.
Применение
Образование
UCSD Pascal широко использовался в университетах для обучения программированию. Благодаря переносимости, студенты могли писать программы на одном типе компьютера и запускать их на другом. Система была особенно популярна на курсах вводного программирования в Стэнфордском университете, Массачусетском технологическом институте и Калифорнийском университете в Беркли.
Разработка программного обеспечения
На UCSD Pascal было написано множество учебных и научных программ, а также несколько коммерческих приложений. Например, система управления базами данных dBase II первоначально была написана на UCSD Pascal. Также на нём разрабатывались ранние версии текстовых процессоров, электронных таблиц и игр.
Научные вычисления
Благодаря поддержке вещественных чисел и массивов, UCSD Pascal применялся для решения задач численного анализа, моделирования и обработки данных. Однако из-за низкой производительности интерпретатора (по сравнению с машинным кодом) он редко использовался для высокопроизводительных вычислений.
Критика и ограничения
Производительность
Основным недостатком UCSD Pascal была низкая скорость выполнения программ. Интерпретация p-кода была в 5–10 раз медленнее, чем выполнение нативного машинного кода. Это делало систему непригодной для задач, требующих высокой производительности, таких как обработка графики в реальном времени или сложные научные расчёты.
Ограниченные возможности
UCSD Pascal не поддерживал многие расширения, которые позже стали стандартными для Паскаля:
- Отсутствие модульной системы (модули появились только в Turbo Pascal).
- Ограниченная работа с файлами: отсутствие поддержки произвольного доступа к файлам.
- Ограниченная поддержка графики: только через внешние библиотеки.
- Отсутствие встроенной поддержки объектно-ориентированного программирования.
Зависимость от p-кода
Хотя p-код обеспечивал переносимость, он создавал дополнительные накладные расходы на интерпретацию. Кроме того, для каждой новой платформы требовалось писать интерпретатор, что было нетривиальной задачей. С развитием компиляторов, генерирующих машинный код, преимущество переносимости стало менее значимым.
Наследие
Влияние на языки программирования
UCSD Pascal оказал значительное влияние на развитие языков программирования. Концепция промежуточного кода (p-кода) была впоследствии использована в таких системах, как Java Virtual Machine (JVM) и .NET Common Intermediate Language (CIL). Также UCSD Pascal популяризировал идею переносимых компиляторов, что повлияло на разработку компиляторов для языков C, Ada и Modula-2.
Влияние на операционные системы
UCSD p-System была одной из первых операционных систем, поддерживающих графический интерфейс (через библиотеку GRAFIX). Она также внедрила концепцию виртуальной памяти на машинах с ограниченной оперативной памятью (через сегментацию кода). Эти идеи были позже использованы в операционных системах для персональных компьютеров, таких как Apple Lisa OS и ранние версии Mac OS.
Современное состояние
В настоящее время UCSD Pascal представляет в основном исторический интерес. Некоторые энтузиасты поддерживают эмуляторы p-кода (например, проект pcode-emu), позволяющие запускать старые программы на современных компьютерах. Исходные коды UCSD Pascal были опубликованы под свободной лицензией в 2000-х годах, что позволило использовать их для изучения истории вычислительной техники.
Интересные факты
- Создатель UCSD Pascal Кеннет Боулз был также известен как автор учебника «Programming with Pascal», который использовался во многих университетах.
- UCSD Pascal был одним из первых компиляторов, который поддерживал самокомпиляцию: компилятор мог быть скомпилирован сам с помощью p-кода.
- Система использовалась для разработки программного обеспечения для космического телескопа «Хаббл» на ранних этапах его проектирования.
- В 1982 году UCSD Pascal был признан одним из самых популярных языков программирования для микрокомпьютеров по версии журнала Byte.
Источники
- Bowles, K. L. (1978). «UCSD Pascal: A Portable Pascal System». SIGPLAN Notices, 13(8), 10–16.
- Joy, W. N. (1980). «The UCSD Pascal System». Proceedings of the 1980 ACM Conference on Programming Languages, 12–18.
- SofTech Microsystems (1982). «UCSD p-System User’s Manual».
- Wirth, N. (1971). «The Programming Language Pascal». Acta Informatica, 1(1), 35–63.
- Byte Magazine (1982). «UCSD Pascal: A Review». Byte, 7(3), 120–135.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →