В данном разделе мы коротко рассмотрим историю развития языков семейства Паскаль.
История создания и развития языка Паскаль начинается в 1970 году (на 2017 год уже 47 лет!). В основе его лежит ещё более бородатый язык Алгол (сокращение от «Алгоритмика», слово «алгоритм» происходит от имени арабского учёного Аль Хорезми). Алгол известен в двух версиях: от 1968 г., и более ранний вариант от 1960 г. Заслуга Алгола была в том, что он позволял записывать сложные алгоритмические конструкции доступным языком. Не таким, как человеческий, но всё же куда более понятным, чем прямой бинарный код, или сложный для семантического разбора — Ассемблер. Надо ли говорить, что Алгол был весьма популярен, как в Европе, так и СССР. Некоторое время Алгол рассматривался, как конкурент такому монстру, как Фортран, а в СССР Алгол вообще лидировал. Надо понимать, что Алгол создавался на заре компьютерных технологий, и многие вещи становились настоящими полями битв между учёными мужами. Например, как в случае обозначения разделителя целой и дробной части в натуральных числах (таки американцы одержали победу в этом вопросе; современное использование точки устоялось, но смысловая нагрузка на точку не так линейна, если хорошо вдуматься). Вложенные средства в Фортран американцами сделали своё дело: Алгол был вытеснен из активного употребления, хотя алгоритмы в популярных компьютерных журналах ещё долго публиковались в записи Алгола. Надо отдать должное этому языку: он оказал огромное влияние на современный мир. Надо ли уточнять, что в разработке Алгола-68 принял участие Никлаус Вирт?
Вирт, принимая участие в работе над Алголом-68 имел свою точку зрения на то, каким должен быть язык программирования. Одним из важных моментов, на его взгляд — должно быть название языка. Такой чести удостоился Блез Паскаль. Хотя к тому моменту, Паскаль уже был увековечен в единице измерения давления, но кроме физики Блез Паскаль прославился своими арифмометрами, а это уже сфера информатики. Как написал Вирт в одной из первых публикаций — язык программирования Паскаль должен служить малым размерам, эффективному оформлению кода, и активному использованию структурированного подхода. Также он сразу себе поставил задачу обеспечить применимость Паскаля в качестве системного языка программирования. Текст программ на Паскале был очень похож на текст программ на Алголе — это было сделано намеренно. Расчёт оказался верным, и вскоре Паскаль начал завоёвывать свою место под Солнцем. В том числе, за счёт старичка Алгола.
Этот вариант Паскаля был разработан в Калифорнийском университете (США) в 1977 г. для применения в составе мини-ЭВМ (в то время доминировали большие ЭВМ — майнферймы, такие как IBM/360, где Алгол не прижился из-за приспособленности этих монстров под Фортран). В этом варианте Паскаля была впервые реализована модульность, работа со строками, стековое управление памятью, как важная веха в истории развития языков программирования — впервые был произведён отказ от ключевого слова GOTO. Также были созданы варианты UCSD p-System для других архитектур:
Особенностью этого варианта Паскаля была виртуальная среда. Широко известная Java опоздала со своей идеей на добрых два десятка лет. Ко всему прочему, виртуальная среда Паскаля работала в качестве операционной системы имея при этом возможность непосредственно взаимодействовать с аппаратной частью.
Также следует отдельно упомянуть культовый компьютер Apple II, на котором также был реализован UCSD p-System со своими расширениями. Хотя бы по этому факту можно судить о популярности Паскаля в те годы. Вариант языка Паскаль от фирмы Apple носил название Object Pascal. Также UCSD p-System сильнейшим образом повлиял на язык от фирмы Borland — Turbo Pascal, ставший на многие годы (вплоть до середины 2010-хх годов) прекрасным инструментом для обучения и написания программ.
Последняя коммерческая версия компилятора UCSD Pascal распространялась фирмой Cabot Software под названием P-Code Pascal вплоть до 2001 года. Она включала средства параллельного исполнения и ООП, предлагались реализации для следующих платформ:
Этот язык оказал существенное влияние на компьютерную отрасль. Этот язык был разработан Apple Computer в 1986 г. под руководством Ларри Теслера, который в свою очередь получал консультации у Никлауса Вирта. В язык были введены практически все концепции ООП (не даром он называется Object Pascal). Были реализованы динамические массивы через работу с кучей. В качестве дополнительной возможности была введена динамическая типизация переменных. Для ООП была введена возможность работы со свойствами, перегрузка операторов. Язык оказался настолько впечатляющим, что послужил образцом для подражания многих других вариантов Паскаль.
В основу Turbo Pascal был положен Blue Label Pascal, созданный для операционной системы NasSys микрокомпьютера Nascom в 1981 году Андерсом Хейлсбергом. Система NasSys имела ограниченное применение, и Андерс Хейлсберг портировал Blue Label Pascal под именем Compass Pascal на операционную системe CP/M (весьма популярную в тот период). И в том же году Blue Label Pascal под именем Turbo Pascal был портирован под DOS. Компьютеры от фирмы Apple также не остались без внимания: в 1986 г. Turbo Pascal появился на Макинтошах. Успех Turbo Pascal привлёк внимание компьютерной сферы, и в 1982 г. Филипп Кан основывает в США фирму Borland, которая и выкупает права на Turbo Pascal у Андерса Хейлсберга. В том же году, по относительно низкой цене Turbo Pascal поступил в продажу. Успех на рынке был ошеломительным. И низкой цены на программной пакет было бы недостаточно для объяснения этого успеха. Причина крылась в том, что в составе Turbo Pascal шёл высококачественный редактор текста. Была встроена отличная справка, которая не просто предлагала оперативную информацию по ключевым словам, но и включала демонстрационные примеры, охватывающие самые разнообразные сферы. Возможности отладки программ были на высоком уровне, в комплекте шёл набор дополнительных средств, например профилировщик. Давление на софтверный рынок было таково, что по одной из версий, такая компания как Microsoft была вынуждена прекратить разработку своего варианта Паскаль (а ведь Windows 3.11 был разработан именно на нём). Развитие Turbo Pascal продолжалось 13 лет — до 1995 года.
Версия этого языка известна тем, что способна выполняться почти на любой аппаратной платформе. Версия этого языка замерла на отметке 2005 год. Но главная ценность заключается в том, что эта версия абсолютно бесплатна для использования, и поэтому легла в основу многих других Паскалей. GNU Pascal работает поверх GNU GCC — коллекции высокоэффективных компиляторов доступных также по бесплатной лицензии. Эта коллекция компиляторов обновляется чуть ли не ежедневно, поэтому GNU Pascal, даже с учётом фактической замороженности проекта будет создавать весьма эффективный код.
Про этот язык стоит упомянуть отдельно. Этот проект свободного и бесплатного компилятора Паскаль начался в 1993 г. В 2000 г. компилятор языка объявлен стабильным и полным. В течение нескольких лет в проект вливаются разработчики других нескольких направлений, что приводит к бурному росту Free Pascal. На 2016 г. уже доступна версия 3.1. Графическая среда разработки Lazarus впечатляет своими возможностями. Открытая и бесплатная, гибкая и обеспеченная документацией и примерами она по праву считается одной из наиболее значимых в сообществе программистов на Паскаль. Сложно назвать аппаратную платформу, на которой не мог бы работать Free Pascal. Проекты выполненные на Free Pascal с помощью Lazarus у всех на слуху:
Delphi является дальнейшим продолжением нашумевшего Turbo Pascal. Впервые появился в 1995 г. благодаря усилиям фирмы Borland, ныне уже поглощённой другими компаниями. Эта мощнейшая интегрированная графическая среда построена поверх Turbo Pascal, который Borland позже официально переименовала в Object Pascal (ранее такое же название было у Apple, но так как Apple не стала дальше развивать эту линейку, два родственных языка программирования существовали на разных временных отрезках). Изначально Delphi был разработан для Windows, но позже предпринимались попытки переноса Delphi под Linux. Они не были особенно успешными из-за внутренней политики Borland. В 2002 году эти попытки были прекращены, и до 2007 года Delphi активно поддерживала .Net, но и в этом случае после 2007 г. такая поддержка была прекращена. Такая непоследовательность привела к закату Borland, и с августа 2008 года официальным владельцем Delphi является компания Embarcadero. Эта компания предложила компилятор под Win64 в 2011 г., а чуть позже в 2013 г. — и для платформы Android/ARM. На 2017 год эта среда поддерживает практически все популярные платформы. Последняя версия среды Embarcadero, как и предшественница это компании – распространяет свою среду за приличные деньги, что существенно ограничивает возможности её использования. Есть бесплатный ограниченный вариант этой среды, который следует правилу распространителей наркотиков «первая доза бесплатно». Тем не менее, эта среда позволила создать ряд очень популярных программ и не собирается заканчивать своё развитие, даже под мощным давлением FreePascal/Lazarus.
Выше рассмотрено дерево развития языка Паскаль. Тем не менее, традиционно, считается что Компонентный Паскаль (как это ни странно) относится к другой ветке развития Паскаль. Первый вариант языка Modula был разработан в 1975 г., но спецификации его так и не были опубликованы. Автор языка (внезапно) Никлаус Вирт решил переработать язык и в 1977 г. он под названием Modula-2 был представлен. Язык с самого начала предназначался для надёжного промышленного программирования. Главной его отличительной особенностью стала модульность. Благодаря этому и другим нововведениям оказалось возможным написать операционную систему для компьютеров Lilith. А вместе с ней и ПО для лазерного принтера, системы типографской вёрстки и сетевой протокол. Также, исключив операции машинного ввода и вывода структура компилятора существенно упростилась. В итоге, количество ключевых слов в Modula-2 всего 40. Для сравнения, ключевых слов в языке промышленного программирования Ada — 63. Если сравнивать с другими языками программирования, то у Modula-2 преимущество будет ещё больше. Даже по сравнению с предком — Паскаль — новый язык получился проще, а значит надёжней. Первые компиляторы Modula-2 появились в СССР в 1982 г. Для работы с языком программирования (ЯП) Modula-2 была разработана серия микропроцессоров Кронос, на базе которых были разработаны мощные рабочие станции серии WS (последняя модель этой станции WS 1.2 в качестве презента подарена Никлаусу Вирту, а он нашим разработчикам Кроноса подарил Lilith). В настоящее время на Modula-2 пишется бортовое программное обеспечение для спутников ГЛОНАСС. Также компилятор ЯП Modula-2 официально входит в коллекцию компиляторов GNU GCC с 2010 года. Таким образом, про Modula-2 можно подтвердить, что это язык высоконадёжного промышленного применения.
В ходе создания этого языка Никлаус Вирт пришёл к мысли о том, что поддержка языка при модульной структуре требует соответствующей операционной системы. Такая поддержка нужна на этапе динамической загрузки модулей в память ЭВМ по требованию уже работающих модулей. Кроме того, нужно как-то освобождать память. Для этого нужен сборщик мусора. А как быть с уже существующими операционными системами? Подходящим решением тут стали промежуточные операционные системы, такие как BlackBox Component Builder, ETH Oberon, WinOberon, A2 (WinAos, LinAos). По-сути, это маленькие операционные системы над реальными операционными системами. Такими же операционными системами следует признать появившиеся много позже Java и .Net. Так появился Oberon в 1989 г. за авторством Никлауса Вирта и Юрга Гуткнехта. Это была сразу и операционная система Oberon, и компилятор языка Oberon. Компилятор занимал 50 кБ и компилировал сам себя за 15 сек при тактовой частоте ЦП 25 МГц. По сути, Oberon впитал объектные расширения, при этом отказался от динамической типизации, которая, по сути, — снижала надёжность программ. Отказ от динамической типизации позволил применить тот самый сборщик мусора. Оказалось, что кроме этого, количество исключительных ситуаций уменьшилось на порядок. При дальнейшей оптимизации языка, оказалось, что если и происходили ошибки, то происходили они исключительно со стороны аппаратуры. В конечном итоге, от исключительных ситуаций также удалось отказаться. Отказ от средств параллельного программирования был в какой-то мере вынужденной мерой. В Modula-2 параллельность была также обеспечена на 75% сторонними библиотеками, а не встроенными средствами. Они себя почти не оправдали. Также были существенные сокращения по работе с указателями. Как оказалось, в многих случаях можно обойтись без них, а контролировать типы данных стало заметно проще. Были добавлены средства для контроля модулей, ведь теперь основной единицей становился сам модуль. Язык получился компактным и эффективным. Вирт однажды заявил, что разработчики Java хорошо изучили подход Oberon, и многие идеи заимствовали из него. Хронологически это было вполне возможно, да и многие решения в Java весьма похожи на те, что были применены в Oberon.
Язык Oberon-2 был выпущен в 1991 г. В него были добавлены возможности метапрограммирования, поля доступные для экспорта из модулей, возвращён оператор FOR (из Modula-2), и по сути, Oberon-2 был расширением Oberon. Как и предыдущий вариант Oberon-2 предназначен для промышленного программирования. Авторами нового языка стали Никлаус Вирт и Ханспетер Мёссенбёк. Даже с учётом того, что Oberon-2 является расширением, его формальное описание стало короче, чем у предка, синтаксис стал более строгим и предсказуемым. Не удивительно, что сразу появились клоны компилятора этого языка, один из наиболее известных — XDS.
Это одна из наиболее поздних реализаций в семействе Паскаль. Появился он относительно недавно — в 2001 г. Этот язык моложе, чем ныне популярные python или perl. По сравнению с предшественником введены ключевые возможности по контролю за изменением интерфейсов модулей. Главная опора сделана на компонентный каркас, который позволяет более аккуратно и тщательно писать программы. Строго говоря, Компонентный Паскаль уже не просто язык, но целая среда. Базовые типы синхронизированы с наиболее употребительными в программостроении. Строки теперь представлены Unicode множеством. Работа со строками стала в целом, более удобной. Расплатой за такие усовершенствования стало увеличенное число лексем. Их стало аж 34, что на 1 больше, чем в Oberon-2. Теперь Компонентный Паскаль, как правило, идёт в составе BlackBox Component Builder — интегрированной операционной среды. Для любителей Паскаль можно лишь добавить, что лицензия под которой распространяется Компонентный Паскаль(КП) и BlackBox Component Builder(ББ/BB) — BSD-2. Это очень свободная и либеральная лицензия позволяет использовать КП и ББ почти любым способом. В России (на 2017 г.) существует устоявшееся сообщество программистов на КП, часть из них даже ведёт свои проекты по развитию ББ(например, на http://oberoncore.ru/) В России удалось сохранить прекрасную алгоритмическую и методическую школу, и программирование с помощью КП больше можно отнести к науке программирования, чем к искусству, так как в основе КП лежат научные исследования и методики строго выверенные математикой. Существует проект Информатика-21 в рамках которого осуществлён полный перевод документации и среды ББ на русский язык. Преподавание основ КП ведётся, как в школах, так и ВУЗах. В сообществе множество представителей школьной среды, науки, инженерии — начиная от любителей-одиночек, до докторов технических наук.
Это совсем «свежие» реализации последнего языка программирования Oberon-07 от Никлауса Вирта. Обе разработки открытые, и их уже можно попробовать. Простота Oberon-07 такова, что с ним справится даже неопытный программист. В Oberon-07 сосредоточены самые важные, самые передовые идеи направленные на создание совершенных программ.
Развитие языков семейства Паскаль продолжается. Часть семейства пошла по пути усложнения самого языка, часть пошла по пути упрощения, и наращивания библиотек. Опыт развития языков программирования, говорит о том, что Никлаус Вирт смог на много лет вперёд предвидеть многие стороны программной отрасли. Многие идеи, которые он предлагал и озвучивал начали воплощаться только сейчас. Языки промышленного назначения, как оказалось, вполне применимы и для обучения. Создавая единую среду можно добиться более высокого качества программ, более широкого понимания сложности и глубины современных проблем, рациональной и бережной организации труда программистов.
Что будет дальше — покажет время. Но семейство Паскаль ещё долго будет служить верой и правдой на благо всего человечества.