«Паскаль был разработан в качестве языка для обучения. Хотя это утверждение справедливо, его использование при обучении не являлось единственной целью. На самом деле я не верю в успешность применения во время обучения таких инструментов и методик, которые нельзя использовать при решении каких-то практических задач»
Никлаус Вирт, 1984 год
История создания: от отторгнутого проекта до мирового стандарта
В 1960 году международный комитет опубликовал спецификации языка Algol 60, который впервые ввёл строгое формальное определение синтаксиса и стал языком для описания алгоритмов в научной литературе**. Среди разработчиков был молодой швейцарский инженер Никлаус Вирт, родившийся 15 февраля 1934 года в Винтертуре.
К середине 1960-х годов комитет IFIP объявил конкурс на создание нового универсального языка — преемника Algol-60. Вирт, к тому времени уже получивший докторскую степень в Беркли и работавший ассистентом профессора в Стэнфорде, вместе с коллегой из Оксфорда Чарльзом Хоаром представил вариант с минимальными изменениями под названием Algol W — они сохранили популярные функции, но исключили плохо реализованные элементы.
Однако комитет отверг их предложение в пользу более сложного варианта — Algol 68. Вирт был настолько категорически не согласен с проектной философией, возобладавшей в комитете, что вышел из него в 1968 году. Algol 68, как и опасался Вирт, оказался слишком избыточным и ненадёжным и так и не получил широкого распространения.
Несмотря на досадное поражение, Вирт вернулся в Швейцарию, где в 1968 году стал профессором ETH Zurich и основал факультет компьютерных наук. Именно здесь он начал работу над собственным языком, который впитал лучшие черты Algol W и его собственного языка Euler, разработанного ещё во время учёбы в Беркли.
Первый компилятор языка, названного в честь французского математика и изобретателя одной из первых вычислительных машин Блеза Паскаля, заработал в 1970 году на мейнфрейме CDC 6600 ETH Zurich. В том же году было опубликовано первое официальное описание синтаксиса и семантики языка, а в начале 1971 года отчёт перепечатал журнал Acta Informatica.
Так родился Pascal — язык, который должен был стать учебным, но оказался гораздо больше.
Философия языка: простота не означает примитивность
В отличие от Си, который создавался как язык системного программирования, Pascal с самого начала задумывался для обучения. Однако Вирт настаивал: инструменты, которые нельзя использовать в реальной практике, бесполезны и для учебных целей.
Pascal строго ориентирован на данные: программист может определять собственные типы данных, и эта свобода сочетается со строгим контролем типов, который предотвращает случайное смешивание разнородных данных. Язык свободнотекущий (не требует фиксированных позиций на строке), и чтение кода на Pascal очень похоже на чтение обычного языка — вот почему его так любят преподаватели.
Паскаль очень близок языку Си… Эти языки больше расходятся в деталях, но в основе своей одинаковы. Если вы взглянете на используемые типы данных, а также на операции над типами, то обнаружите очень большую степень совпадения
Деннис Ритчи, создатель Си, 1993 г
Связь с аппаратурой: P‑код, Lilith и практическая инженерия
Одной из ключевых инноваций Вирта стала идея промежуточного псевдо-машинного языка P‑code (Pascal code). Компилятор не генерировал сразу машинный код для конкретного процессора, а производил компиляцию в платформенно-независимый байт-код, который затем интерпретировался специальной программой. Узнаёте идею? Сегодня точно так же работают байт-код Java и промежуточный язык .NET.
Профессор Кен Боулз из Калифорнийского университета в Сан-Диего (UCSD) адаптировал этот подход для Apple II, который был самым популярным микрокомпьютером на тот момент. UCSD P‑System со встроенным Pascal‑компилятором стала стандартом университетского программирования — и именно она вдохновила IBM на поддержку трёх операционных систем в их революционном персональном компьютере.
Сам Вирт был не только теоретиком, но и практиком. В 1979 году студенты ETH под его руководством создали 16-разрядный персональный компьютер Lilith на четырёх наборах интегральных схем Am2901. Машина имела операционную систему Medos, графический интерфейс, локальную сеть на базе Ethernet, а все системное ПО было написано на новом языке Modula‑2, созданном специально для Lilith — переходе от Паскаля к модульному программированию. Всего было собрано 60 таких компьютеров, и Lilith на годы опередил многие коммерческие системы.
За этот компьютер, а также за языки Pascal и Modula‑2 Никлаус Вирт в 1984 году получил премию Алана Тьюринга — «Нобелевскую премию в области информатики».
Ключевые реализации: Turbo Pascal, Delphi и Object Pascal
Никлаус Вирт не занимался коммерциализацией собственного языка, и дальнейшая его судьба пошла по пути развития в компании Borland и смежных проектах.
Turbo Pascal (1983)
В начале 1980-х датский инженер Андерс Хейлсберг начал писать программы для микрокомпьютера Nascom, включая компилятор Pascal для Nascom‑2. Позже он переписал его для CP/M и DOS, продавая под названием PolyPascal. В 1983 году основатель Borland Филипп Кан заметил этот продукт и заключил лицензионное соглашение.
Кан задумал революцию на рынке инструментов разработки: объединить в одном пакете редактор, компилятор и линкер — то, что сейчас называется интегрированной средой разработки (IDE). В отличие от громоздких систем конкурентов, требовавших нескольких этапов компиляции и линковки (что на системах с одними дисководами занимало минуты), новый продукт предлагал невероятную скорость и продавался по почтовой рассылке за $49.95 — втрое дешевле профессиональных наборов.
Название Turbo Pascal отражало две вещи: невероятную скорость компиляции и дань моде на «турбо» в автомобильной индустрии 1980-х. Turbo Pascal и последовавший за ним Turbo C сделали Borland лидером на рынке инструментов разработки для ПК.
Object Pascal и Delphi (1995)
В 1986 году группа Ларри Теслера в Apple разработала объектно-ориентированное расширение Pascal под названием Object Pascal. Borland адаптировала его для своих продуктов. Но настоящим прорывом стала среда разработки Delphi, вышедшая в 1995 году. Она позволяла визуально создавать графический интерфейс Windows-приложений методом drag‑and‑drop, а весь код писался на Object Pascal.
Начиная с Delphi 7, компания Borland стала использовать имя Delphi как для среды, так и для самого языка, постепенно вытеснив название Object Pascal. Delphi также примечательна тем, что её создателем был тот же Андерс Хейлсберг, который создал Turbo Pascal. Впоследствии он покинул Borland и перешёл в Microsoft, где стал ведущим архитектором C# и TypeScript.
Основы синтаксиса и примеры кода
Pascal создавался для обучения, и его синтаксис на удивление близок к естественному языку.
Структура программы
Каждая программа на Pascal обязательно начинается со слова `program`, а заканчивается `end.` (с точкой).
program HelloWorld; { Название программы }
begin { Начало программы }
writeln('Привет, мир!');
writeln('Меня зовут Pascal!');
end. { Конец программы — обрати внимание на точку! }
Переменные и типы данных
Pascal поддерживает строгую типизацию: целые числа (`integer`), дробные (`real`), строки (`string`), логические (`boolean`) и одиночные символы (`char`). Перед использованием переменные обязательно объявляются в блоке `var`:
var
age: integer;
height: real;
name: string;
isStudent: boolean;
begin
age := 12; { Оператор := присваивает значение }
name := 'Аня';
isStudent := true;
writeln('Привет, меня зовут ', name);
writeln('Мне ', age, ' лет');
end.
Условия и циклы
if age >= 18 then
writeln('Ты взрослый!')
else if age >= 13 then
writeln('Ты подросток!')
else
writeln('Ты ребёнок!');
for i := 1 to 10 do
writeln('Строка номер ', i);
while condition do
begin
{ несколько операторов }
end;
Определение своих типов (сильная сторона Pascal):
type
DayOfWeek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
StudentRecord = record
name: string;
age: integer;
grade: real;
end;
В отличие от многих языков, Pascal строго следит за типами — нельзя просто так присвоить целому числу строку или вещественному переменную другого типа. Эта дисциплина особенно полезна для начинающих.
Где применяется Pascal сегодня
Хотя золотой век Pascal пришёлся на 1980-е, язык не умер. Области его применения сегодня:
- Обучение программированию. В российских и зарубежных школах Pascal до сих пор используется для первого знакомства с алгоритмизацией, особенно в системах PascalABC.NET (разработанной в Пермском университете и активно используемой в школах РФ). Он введён в курс информатики во многих странах.
- Разработка приложений под Windows. Среда Delphi продолжает поддерживаться компанией Embarcadero и используется для поддержки легаси-кода крупных корпораций, систем контроля доступа, учёта и электронных очередей.
- Игровая индустрия. На Delphi/ Object Pascal написан популярный игровой движок GameMaker, используемый для создания игр-хитов, таких как Hotline Miami, Undertale и Katana Zero.
- Научные расчёты. Современный компилятор Free Pascal и среда Lazarus активно применяются в академической среде для поддержки старых и разработки новых приложений.
- Финансовый сектор. Многие банки и страховые компании до сих пор эксплуатируют критически важное ПО на Delphi.
Интересные факты
- Имя в честь счётной машины. Язык назван не столько в честь философа Блеза Паскаль, сколько в честь его изобретения — паскалины, одной из первых механических вычислительных машин XVII века. Создавая язык для обучения, Вирт отдал дань уважения первому «программируемому устройству».
- Одна из первых IDE в истории. Именно Borland Pascal (на ряду с другими разработками Borland — Turbo C, Turbo Prolog, Turbo BASIC) предоставил в единой программе редактор, компилятор и отладчик — прообраз современных IDE.
- Система «Наставник» на Паскале. В СССР на базе ЭВМ семейства ДВК, БК и УКНЦ существовала полноценная система обучения программированию на Pascal, используемая в вузах и техникумах по всей стране.
- Нобелевская премия в IT. Премия Алана Тьюринга в 1984 году была вручена Вирту за разработку языка Pascal, а также компьютера Lilith и языка Modula‑2.
- Фальстарт Turbo Pascal на CP/M. Изначально Turbo Pascal версии 1.0 был портирован Андерсом Хейлсбергом не только на DOS, но и на CP/M. Однако, на платформе CP/M компилятор не получил распространения, и дальнейшее развитие Borland сосредоточила на платформе IBM PC.
- В основе успеха UCSD Pascal лежала переносимость через P‑код, что позволило запускать Pascal на самых разных компьютерах — от Apple II до IBM PC. Эта история напрямую связана с эволюцией персональных компьютеров, которые вы изучаете.