tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 07БЛОК 1 — НЕМНОГО ИСТОРИИРЕВ. 1
Глава 07 · Немного истории

Pascal: структурное программирование и типизация

Прямой ответ на проблему, честно обозначенную в конце главы 06 — язык, спроектированный специально для того, чтобы дисциплинировать хаос GOTO и научить целое поколение программистов мыслить структурированными блоками, а не прыжками по номерам строк.

Реакция на BASIC, спроектированная намеренно

Pascal создан Никлаусом Виртом в 1970 году, назван в честь математика и философа Блеза Паскаля — и с самого начала спроектирован как учебный язык, обучающий именно структурному программированию, идеи которого годом ранее обосновывал Дейкстра (глава 06). Это не случайное совпадение по времени — Pascal во многом и есть прямое воплощение той критики GOTO в виде работающего языка.

Теоретическая основа: три конструкции вместо произвольных прыжков

В основе структурного программирования лежит доказанный теоретический результат (теорема о структурном программировании): любую программу можно построить всего из трёх базовых конструкций — последовательного выполнения, ветвления (если/иначе) и повторения (цикла) — без единого GOTO. Pascal сделал эти три конструкции основой синтаксиса языка, а не просто возможностью, доступной наравне с прыжками.

Пример кода — заметная разница в структуре по сравнению с BASIC

program AgeCheck;
var
  age: integer;
begin
  write('Сколько тебе лет? ');
  readln(age);
  if age < 18 then
    writeln('Ты ещё молод')
  else
    writeln('Ты взрослый');
end.

Та же логика, что в примере из главы 06 — но вместо номеров строк и GOTO структура видна прямо в тексте: блок if...then...else явно ограничен и вложен, а не собран из отдельных пронумерованных строк, разбросанных по программе с прыжками между ними. Отступы (принятые как соглашение, хотя формально необязательные в классическом Pascal) визуально подчёркивают эту вложенность — идея, которая в Python (блок 3) станет уже не соглашением, а строгим требованием синтаксиса.

Строгая типизация — ошибки ловятся раньше

В отличие от вольного обращения с переменными в раннем BASIC, Pascal требует явно объявлять каждую переменную с указанием её типа перед использованием (var age: integer) — и эта типизация проверяется компилятором ещё до запуска программы. Прямое практическое применение темы из главы 05: компилируемый язык со строгой типизацией ловит целый класс ошибок (например, попытку положить текст в переменную, объявленную как число) на этапе компиляции, не позволяя программе с такой ошибкой вообще собраться в исполняемый файл — задолго до того, как ошибка проявится во время реальной работы программы.

Процедуры и функции — развитие идеи GOSUB

Pascal ввёл полноценные именованные, многократно вызываемые блоки кода с параметрами — процедуры (без возвращаемого значения) и функции (с возвращаемым значением) — заметно более развитую версию идеи, которую в BASIC грубо реализовывал GOSUB/RETURN (глава 06). Это прямой концептуальный предок функций Python, тема главы 16 этой книги — с параметрами, локальными переменными и чёткой границей блока кода.

Turbo Pascal — как язык стал массово доступным

Отдельного упоминания заслуживает Turbo Pascal — среда разработки компании Borland, выпущенная в 1983 году, объединившая быстрый компилятор и редактор кода в одном недорогом продукте. Именно она в 1980-х–1990-х сделала Pascal массово доступным языком для обучения программированию по всему миру, далеко за пределами исследовательских и университетских кругов, где язык изначально применялся.

Наследие, которое сегодня воспринимается как самоочевидное

Победа идеи, а не конкретного языка

Сам язык Pascal сегодня используется заметно реже своего расцвета, но идея, которую он воплощал — программа как вложенная структура из условий и циклов, а не последовательность произвольных прыжков — победила настолько полно, что современный программист, изучающий Python (блок 3 этой книги), скорее всего даже не задумается, что могло быть иначе: блоки if, while, for с чёткими границами кажутся единственным разумным способом писать код именно потому, что структурное программирование стало негласным стандартом всей индустрии, начиная примерно с этой эпохи.

Что дальше

Следующая глава — краткая эволюционная карта от языка C (который сам многое взял у идей структурного программирования, но добавил более прямой контроль над памятью) до современных языков, показывающая, какое место в этой линии занимает Python.

Глава07 — Pascal
Блок1 — Немного истории
Далее08 — От C к современности
СтатусГотово · рев. 1
Предыдущая глава ← 06 · BASIC Следующая глава 08 · От C к современности →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.