Прямой ответ на проблему, честно обозначенную в конце главы 06 — язык, спроектированный специально для того, чтобы дисциплинировать хаос GOTO и научить целое поколение программистов мыслить структурированными блоками, а не прыжками по номерам строк.
Pascal создан Никлаусом Виртом в 1970 году, назван в честь математика и философа Блеза Паскаля — и с самого начала спроектирован как учебный язык, обучающий именно структурному программированию, идеи которого годом ранее обосновывал Дейкстра (глава 06). Это не случайное совпадение по времени — Pascal во многом и есть прямое воплощение той критики GOTO в виде работающего языка.
В основе структурного программирования лежит доказанный теоретический результат (теорема о структурном программировании): любую программу можно построить всего из трёх базовых конструкций — последовательного выполнения, ветвления (если/иначе) и повторения (цикла) — без единого GOTO. Pascal сделал эти три конструкции основой синтаксиса языка, а не просто возможностью, доступной наравне с прыжками.
Та же логика, что в примере из главы 06 — но вместо номеров строк и GOTO структура видна
прямо в тексте: блок if...then...else явно ограничен и вложен, а не собран из
отдельных пронумерованных строк, разбросанных по программе с прыжками между ними. Отступы
(принятые как соглашение, хотя формально необязательные в классическом Pascal) визуально
подчёркивают эту вложенность — идея, которая в Python (блок 3) станет уже не соглашением, а
строгим требованием синтаксиса.
В отличие от вольного обращения с переменными в раннем BASIC, Pascal требует явно объявлять
каждую переменную с указанием её типа перед использованием (var age: integer)
— и эта типизация проверяется компилятором ещё до запуска программы. Прямое практическое
применение темы из главы 05: компилируемый язык со строгой типизацией ловит целый класс
ошибок (например, попытку положить текст в переменную, объявленную как число) на этапе
компиляции, не позволяя программе с такой ошибкой вообще собраться в исполняемый файл —
задолго до того, как ошибка проявится во время реальной работы программы.
Pascal ввёл полноценные именованные, многократно вызываемые блоки кода с параметрами — процедуры (без возвращаемого значения) и функции (с возвращаемым значением) — заметно более развитую версию идеи, которую в BASIC грубо реализовывал GOSUB/RETURN (глава 06). Это прямой концептуальный предок функций Python, тема главы 16 этой книги — с параметрами, локальными переменными и чёткой границей блока кода.
Отдельного упоминания заслуживает Turbo Pascal — среда разработки компании Borland, выпущенная в 1983 году, объединившая быстрый компилятор и редактор кода в одном недорогом продукте. Именно она в 1980-х–1990-х сделала Pascal массово доступным языком для обучения программированию по всему миру, далеко за пределами исследовательских и университетских кругов, где язык изначально применялся.
Сам язык Pascal сегодня используется заметно реже своего расцвета, но идея, которую он
воплощал — программа как вложенная структура из условий и циклов, а не последовательность
произвольных прыжков — победила настолько полно, что современный программист, изучающий
Python (блок 3 этой книги), скорее всего даже не задумается, что могло быть иначе:
блоки if, while, for с чёткими границами кажутся
единственным разумным способом писать код именно потому, что структурное программирование
стало негласным стандартом всей индустрии, начиная примерно с этой эпохи.
Следующая глава — краткая эволюционная карта от языка C (который сам многое взял у идей структурного программирования, но добавил более прямой контроль над памятью) до современных языков, показывающая, какое место в этой линии занимает Python.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.