UCSD Pascal

UCSD Pascal - діалект мови програмування Паскаль.

У другій половині 1970-х років в Університеті Сан-Дієго (Каліфорнія, США) була розроблена система UCSD p-System, яка включала в себе компілятор з мови Паскаль в переносимий p-код (сама ідея компіляції в p-код була запозичена з більш ранньої системи Pascal-P). Першою отримала поширення за межами університету версією була версія I.3, випущена в серпні 1977 року [1].


1. Особливості мови

У UCSD Pascal було вперше для мови Паскаль реалізовано декілька важливих розширень, таких як модулі, які є одиницями компіляції, а також рядки символів змінної довжини. Крім того, підтримувалися поширені на той час розширення стандарту мови Паскаль, такі як директиви трансляції в псевдокомментаріях, вказівка ​​фактичного імені файлу при його відкритті, обробка помилок введення-виведення, необов'язковість перерахування файлів в заголовку програми і т. п. Згодом основні комерційні реалізації мови Паскаль грунтувалися на цій модифікації Паскаля, перш за все Object Pascal фірми Apple і Turbo Pascal фірми Borland.

Максимальна довжина рядка символів в UCSD Pascal, як і в більш пізніх діалектах 1980-х років, становила 255 символів, але за замовчуванням в UCSD Pascal використовувалася довжина 80 символів.

Підтримувалися нетипізовані файли і відповідні процедури blockread і blockwrite.

Надлишково ресурсномістке на тодішніх апаратних засобах управління пам'яттю в купі за допомогою процедур new і dispose в UCSD Pascal було замінено на більш ефективне, але менш зручне і провокує помилки стекового управління динамічною пам'яттю (процедура dispose була порожньою, поточний покажчик стека динамічних змінних запам'ятовувався за допомогою процедури mark і відновлювався за допомогою процедури release, звільняючи всю пам'ять, виділену після відповідного виклику mark).

Аналогічно строковому типу string [n], підтримувався двійковій-десятковий тип даних integer [n] із заданою кількістю десяткових цифр.

Цікавою особливістю діалекту UCSD Pascal був діяв за замовчуванням заборона на використання оператора goto (якщо не був зазначений спеціальний режим трансляції {$ G+}, то оператор goto вважався помилкою).


2. Модулі

В оглядових статтях іноді зустрічається твердження, що концепція модулів в UCSD Pascal була взята з проекту мови Ада. Але розробник UCSD Pascal Кеннет Боулз пише, що навпаки, модулі в UCSD Pascal послужили прообразом аналогічного механізму пакетів в Аді [2], початок розробки якої було покладено в 1977 році.

3. Реалізації

Широке поширення в кінці 1970-х - початку 1980-х років отримала реалізація UCSD Pascal II.1 на комп'ютері Apple II з процесором 6502, яка розповсюджувалась по ліцензії фірмою Apple Computer під торговою маркою Apple Pascal і з власною нумерацією версій 1.0-1.3 (але серед користувачів більш згадувана все ж як UCSD Pascal). У цій реалізації були доступні додаткові модулі AppleStuff з різними системними викликами (робота з клавіатурою, звуком і т. д.) і TurtleGraphics з пакетом черепашачою графіки. У Болгарії була проведена локалізація Apple Pascal для комп'ютера Правец-82, даний продукт застосовувався в болгарській освітній програмі, що використовувалася також в СРСР в 1980-х роках.

Остання комерційна версія компілятора UCSD Pascal поширювалася фірмою Cabot Software під назвою P-Code Pascal аж до 2001 року і мала реалізації для платформ Windows, MS DOS, Macintosh, OS / 2, RS/6000, Power PC, ARM, SCO UNIX, Interactive UNIX , Linux, DEC VAX, AIX, Hitachi SH. P-Code Pascal включав засоби багатозадачності і об'єктно-орієнтованого програмування [3].


Примітки

  1. THE UCSD P-SYSTEM MUSEUM - www.threedee.com/jcm/psystem/
  2. Файл із сайту Кеента Боулз www.kenbowles.net, Some Insights for UCSD Pascal Generation - pascal.retro8bits.com/uploads/ucsd/reunion/Ken Bowles - Some Insights for UCSD Pascal Generation.pdf на сайті retro8bits.com
  3. Cabot's P-Code Pascal - www.pascal-central.com/pcode.html