Смекни!
smekni.com

Летопись языков Паскаль (стр. 2 из 3)

Для удобства использования в ETH создали P-инструментарий, в который вошли компилятор в P-код и его интерпретатор, причем все это в виде исходных текстов. Одним из получивших такой набор стал Университет Калифорнии в Сан-Диего.

Третья попытка реализации в ETH компилятора Паскаля, ставшего впоследствии известным под названием P2, была предпринята учеником Вирта Урсом Амманом; в 1974 г. она завершилась успехом. Благодаря высокому качеству Р2 получил широкое распространение в университетах и компаниях.

UCSD Pascal и начало коммерческого распространения

В 1975 г. профессор Кеннет Боулес, работавший в Университете Калифорнии в Сан-Диего (University of California at San Diego - UCSD), получил из Цюриха P-инструментарий, который вместе с компилятором P2 и был положен в основу UCSD Pascal. В Институте изучения информации калифорнийского университета Боулес вместе со Стефеном Франклином и Альфредом Борком занялись созданием системы программирования и операционной системы на базе Паскаля для микрокомпьютерных архитектур. В UCSD Pascal были внесены изменения как на уровне языка (в плане расширения и использования низкоуровневых вставок кода, в том числе и P-кода), так и на уровне P-машины. Она была переделана. Для эффективности использования Паскаля на разных компьютерах была включена дополнительная возможность генерирования машинного кода для нужной архитектуры сразу после получения P-кода. Весьма значительным усовершенствованием языка в UCSD Pascal стало введение unit-блоков, необходимых для поддержки раздельной компиляции. Впоследствии они были унаследованы в языке Turbo Pascal.

Интересно, что взята эта идея была из спецификаций языка Ада, которые к тому моменту подходили к своему завершению. В то же время сам Вирт из языка Mesa позаимствовал куда более совершенную конструкцию, ввел ее в Модулу-2 и назвал «модулем» (module). Собственно, она и дала название новому языку Вирта Modula-2 (MODUlar LAnguage).

За три года команда Боулеса разработала законченную систему, в которую вошли текстовый редактор, файловая система, а также отладчик. По сравнению с тем режимом работы, к которому уже привыкли пользователи больших машин (ввод программ и данных с перфолент и перфокарт, а также упрощенный терминальный ввод-вывод), это был огромный шаг вперед. Появился прообраз того, что сегодня называют IDE-средой (интегрированной средой разработки). UCSD Pascal стала прародительницей системы Turbo Pascal, добившейся небывалой популярности.

Что касается UCSD Pascal, то эта реализация для Паскаля означала серьезный прорыв: благодаря Боулесу сфера применения языка значительно расширилась, что, в свою очередь, дало заметный импульс развитию микрокомпьютерной революции.

Разработкой UCSD Pascal, сумевшей стать законченным коммерческим продуктом, заинтересовались многие компании. Причем их внимание привлекла и перспективная P-машина, на которую UCSD продал немало лицензий. В качестве одного из примеров можно привести процессор ITS, созданный в Nippon Electric (1980) и предназначенный для исполнения P-кода UCSD Pascal. Но и сейчас, в эпоху Java, интерес к UCSD-реализации не остыл. Так, в частности, английская компания Cabot International продает новые версии P-машины по лицензии UCSD. Это предлагается в качестве альтернативы для Java в области ТВ-приставок и бытовой электроники (интерактивное цифровое ТВ).

Turbo Pascal

Огромную роль в массовом распространении Паскаля сыграла компания Borland International. На основе идей UCSD Pascal она сумела создать знаменитую Turbo-среду разработки. Это был значительный шаг вперед в облегчении процесса программирования. Удобство визуальных средств в сочетании с тесной интеграцией инструментария стали для сотен тысяч программистов большим подспорьем.

Правда, язык в исполнении Borland теперь уже отдаленно напоминает то, что когда-то носило имя Паскаль. Безжалостные законы рынка раздавили оригинал и родили на свет Turbo-Borland-Object Pascal. В результате не язык стал определять реализацию, а наоборот. Как только все было повернуто с ног на голову, как только деликатные вопросы изменения языка оказались уделом узкого круга лиц внутри одной компании, стало ясно, что рассчитывать на поддержку промышленностью не переносимого на другие платформы языка просто бессмысленно. И это в то время, когда давным-давно существовали новые языки Вирта - Модула-2 и Оберон-2.

Что касается Модулы-2, добившейся утверждения своего ISO-стандарта, то компилятор для этого языка (Turbo Modula-2) не только был создан в компании Borland (для CP/M), что весьма тщательно скрывается, но и поступил в продажу (в Северной Америке и Европе). Однако руководство компании (Филипп Кан) отказалось порождать собственного конкурента крайне успешному Turbo Pascal. Возмущенный вице-президент Borland Нильс Йенсен (один из основателей компании) вместе со своей командой разработчиков в 1987 г. ушел из Borland, выкупил права на Turbo Modula-2 и создал компанию JPI (Jensen & Partners International). В Англии ею под маркой TopSpeed была выпущена одна из лучших линеек компиляторов для процессоров семейства x86: Assembler, Modula-2, Pascal, C/C++, Ada.

А что же Turbo Pascal? Язык видоизменялся едва ли не с каждой версией среды разработки! В версии 3.0 появилась встроенная графика, в версии 4.0 - модули, в версии 5.5 - средства объектно-ориентированного программирования. Начиная с версии 7.0 Turbo Pascal был переименован в Borland Pascal, а с появлением Delphi - в Object Pascal.

В отношении языка Turbo Pascal Никлаус Вирт высказывается довольно дипломатично (1993): «Фактический стандарт для Паскаля был определен компанией Borland просто потому, что ими был создан компилятор, который распространялся широко и дешево. Borland расширяла Паскаль на протяжении ряда лет, и некоторые из этих нововведений были не столь хорошо интегрированы в язык, как мне бы того хотелось. Я был менее компромиссным в отношении собственных расширений и потому дал новому проекту иное имя (речь идет о языке Модула-2. - Прим. ред.) Например, то, что Borland назвала UNIT, мы называли MODULE. Однако UNIT - это вставки в виде исходного текста, тогда как MODULE является отдельной единицей компиляции, которая допускает полный контроль типов и компоновку на этапе загрузки». На вопрос о том, какую бы оценку Вирт поставил Модуле-2, если исходить из того, что Фортран заслужил «2», а Паскаль - «5», он ответил: «6». (В школах Швейцарии это наивысший балл.)

В тени марки Borland оказалось имя автора Turbo Pascal датчанина Андерса Хейльсберга. В 1983 г. Borland выкупила лицензию на компилятор Хейльсберга и приняла автора на работу. В ноябре того же года на рынке появился Turbo Pascal 1.0 для CP/M и компьютеров 8086. История сохранила даже данные о компактности той реализации: размер исполняемого .COM-файла компилятора составлял 33 Кбайт, а все файлы занимали 130 Кбайт. В январе 1989 г. Microsoft выпустила Quick Pascal, позиционировавшийся как конкурент Borland Pascal. Но он продержался недолго. Microsoft с Borland поделили рынок, разведя ветви Си и Паскаля еще дальше друг от друга.

Что касается Хейльсберга, то он 13 лет проработал в компании и стал руководителем проекта Delphi. В октябре 1996 г. Андерса Хейльсберга за 3 млн. долл. приобрела корпорация Microsoft, и теперь он ведущий архитектор языков .NET, а также автор языка C#. (При разработке C#, по словам Хейльсберга, рассматривались Си++, Java, Модула-2, Smalltalk.)

Его прежняя компания, вернув себе имя Borland после нескольких лет работы под вывеской Inprise, предпринимает теперь активные шаги по укреплению позиций своего Паскаля в бурно развивающейся ОС Linux. Обеспечивая простоту миграции программ, созданных для Windows на Visual Basic и Object Pascal, в среду Linux под единым инструментарием Kylix, Borland Software намерена нанести серьезный удар по, казалось, незыблемым позициям Microsoft.

Особенности Паскаля и его преемники

Язык Паскаль явился не просто ревизией Algol-W. Он создавался Виртом под воздействием идей Чарльза Энтони Хоара, опубликованных впоследствии в работе «Заметки по структуризации данных» (Hoare C.A.R. Notes on Data Structuring Academic Press, 1972). Вклад английского ученого в разработку языка был столь значителен, что его смело можно назвать крестным отцом Паскаля.

От языка Паскаль принято отсчитывать эпоху структурного программирования. А все началось с того, что известный голландский специалист Эдсгер Дейкстра опубликовал статью «Структурноепрограммирование» (Dijkstra E.W. Structured Programming // NATO Science Committee, 1969). В ней он предложил ограничить логику управления программы всего тремя формами: следованием (sequence), ветвлением (selection) и циклом (iteration). Из этого вытекало, что в языках Алгол и ПЛ/1 оператор безусловного перехода (goto) был уже попросту не нужен. Вирт, правда, не рискнул изъять его из Паскаля. Но главное было в другом: структурное программирование задавало нисходящий принцип разработки (пошаговая декомпозиция), предусматривало структурирование логики и данных, за счет простоты и математической основы повышало надежность ПО. Все это органично вписывалось в возможности лаконичного Паскаля.

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