Какие приложения написаны на паскале
Паскаль, разработанный в 1970-х гг. Никлаусом Виртом как язык обучения программированию, претерпел за прошедшее время довольно много изменений в лучшую сторону. Основная заслуга в этом принадлежит фирме Borland International, долгое время выпускавшей линейку Turbo Pascal. Одно из основных усовершенствований, внесенных ею, - дополнение языка разнообразными и мощными средствами ввода-вывода. Другое связано с языком Модула-2 (автором которого также стал Н. Вирт): фирма Borland отказалась от распространения компилятора этого языка, применив вместо этого модульный принцип построения в Turbo Pascal. Кроме того, в Паскаль были введены средства непосредственного доступа к портам и ячейкам памяти, а позднее - возможность включать в текст программы фрагменты, написанные на ассемблере. Все это превратило Паскаль из средства обучения в достаточно мощный универсальный язык.
Сейчас признанными лидерами в области профессионального программирования стали Си-подобные языки. В течение долгого периода Паскаль был, пожалуй, почти единственной альтернативой им в качестве универсального языка. Однако когда труд большинства профессиональных программистов стал практически сводиться лишь к манипуляциям с вызовами более или менее стандартного API-инструментария (Application Programming Interface - интерфейс прикладного программирования), остро встал вопрос выбора единственного языка программирования, на котором (и для которого) будет писаться этот API. Вследствие различных причин - как объективных, так и субъективных - выбор пал на Си/Си++. Во-первых, Си, как и Паскаль, оказался одним из первых языков высокого уровня (ЯВУ), разрешившим проблему : его компилятор был написан на нем же. Во-вторых, компиляторы для Си делать, пожалуй, легче, чем для любого другого языка (что, собственно, и было одной из целей его разработки), поэтому именно их выпуск экономически наиболее целесообразен. Впрочем, не обошлось и без субъективных факторов: значительную долю сегодняшнего API производит фирма Microsoft, уже давно разграничившая с фирмой Borland в этой области. Сейчас Borland не выпускает компиляторы для Бейсика и Фортрана, а Microsoft - для Паскаля, и, естественно, не ориентирует свои API на те языки, компиляторы которых сама не выпускает.
Поэтому лидерство Си в области профессионального программирования обусловлено в основном тем, что только на нем можно использовать новый API-интерфейс сразу же после его выхода, тогда как программистам, работающим на других языках, приходится либо ждать, когда появятся нужные интерфейсные модули, либо самостоятельно их писать.
Однако в области создания СУБД Паскаль до сих пор входит в число лидеров, поскольку продолжается разработка инструментального ПО для работы с объектными версиями этого языка (Delphi). Кроме того, Паскаль и его диалекты зачастую применяются в качестве языка СУБД.
Сильные стороны Паскаля
Посмотрим на Паскаль, а также на Си и Бейсик с точки зрения обучения программированию. О дидактической несостоятельности языка Си уже много написано. Бейсик также мало подходит для обучения из-за отсутствия общепринятого стандарта и стиля работы, который он прививает. Основным преимуществом Бейсика была чрезвычайная нетребовательность к ресурсам компьютера, что стало уже неактуальным. Раньше, когда были ПК с 16-64-Кбайт оперативной памятью и ЗУ в виде магнитофона, можно было говорить, что Бейсик - лучший ЯВУ, поскольку не было выбора. При наличии 640-Кбайт памяти и дисковода такой выбор появился.
Итак, сегодня практически весь рынок программных продуктов ориентирован на многозадачные операционные системы (Windows, UNIX и др.) и интенсивно использует API-инструментарий, а также визуальные средства программирования.
Это, конечно, удобно, но вряд ли рационально для обучения, ведь нужно научиться разрабатывать и/или воплощать алгоритм, а не просто . Кроме того, любой начинающий сталкивается с довольно значительным объемом информации, которую необходимо запомнить, прежде чем начинать программирование. Да и процесс постоянного обновления API затрудняет работу и преподавателя, и ученика. Текстовый интерфейс командной строки, принятый в DOS, дает возможность, не особенно заботясь о вводе-выводе, уделять основное внимание разработке и реализации алгоритма. А те, кто уже немного разобрался с компьютером, могут осваивать основы компьютерной графики, не изменяя платформы.
Медицинские рецепты принято выписывать на латыни. От всех живых языков она отличается тем, что уже не изменяется. К тому же медики, на каком бы языке они ни говорили, имеют в латыни общий язык. То же самое можно сказать и про DOS. Его API достаточно лаконичен и практически перестал изменяться. Кроме того, все операционные системы (на платформе Intel) позволяют работать с программами DOS, а вот программа, написанная, скажем, для Linux, в Windows уже не запустится.
Рассмотрим Паскаль для DOS. В сфере образования до сих пор широко используется последняя 7-я версия Паскаля фирмы Borland, созданная более восьми лет назад. Со своей основной задачей компилятор Паскаля справляется, однако зачастую даже школьники, постигшие азы программирования, натыкаются на его ограничения. Одним из основных недостатков компилятора является его 16-разрядность. Ограничение в 64 Кбайт на все статические данные выглядит слишком жестким при типичных сегодня 32-128 Мбайт оперативной памяти. То же касается и графических режимов: максимальное разрешение, с которым способен работать Turbo/Borland Pascal, требует лишь 150-Кбайт видеопамяти, в то время как появляются видеоадаптеры, несущие уже 64 Мбайт.
Сравнение компиляторов Паскаля
В нашей стране все большее внимание стало уделяться легальному использованию программных продуктов. Так что теперь за Turbo/Borland Pascal приходится платить и частным лицам, и общеобразовательным учреждениям. И мало кто знает о том, что есть 32-разрядные компиляторы Паскаля, бесплатные для некоммерческого применения и к тому же более полно использующие оперативную память компьютера и возможности видеоадаптера (табл. 1).
Примечательно, что в разработке TMT и Free Pascal участвовали наши соотечественники.
Free Pascal был разработан довольно большим коллективом энтузиастов. Он поставлялся вместе с исходными текстами, поэтому любой желающий мог принять участие в процессе его создания. Кстати, написан Free Pascal на Паскале, так что для него проблема не возникает.
Версия компилятора обозначается не двузначным, как обычно, а трехзначным числом, поскольку значение 99 в младшей части версии появилось задолго до того, как основной было присвоено 1.0. Сейчас 1.0 наконец вышла, но она оказалась чуть ли не более сырой, чем предыдущая. Затем почти сразу же была выпущена версия 1.02, содержащая лишь исправления замеченных ошибок, а на момент написания статьи готовилась к выходу версия 1.04. В комплект поставки компилятора входит интегрированная среда, работающая в текстовом режиме. В его документации честно предупреждается о том, что это пока отладочная версия. Да и сама IDE требует настройки, которая к сожалению описана неверно. Эта IDE является по сути текстовым редактором со встроенным компилятором (почему-то не внешним), в ней отсутствует даже контекстная подсказка, не говоря об отладчике.
Оба компилятора в определенной степени напоминают диалект Turbo/Borland Pascal, хотя и есть некоторые различия. В основном они касаются усовершенствований языка: нет ограничений, связанных с 16-разрядной сегментированной моделью памяти, есть Си-подобные комментарии. Кстати, ТМТ дополнился Си-подобными операциями: , . В Free Pascal появились перегружаемые функции, а у ТМТ - перегружаемые операторы и множество усовершенствований, что отражено и в документации. У Free Pascal желаемое нередко выдается за действительное. Так, в одной из предыдущих версий он наотрез отказался компилировать MMX-инструкции, в том числе и пример из документации.
Естественно, оба компилятора не во всем схожи. У ТМТ отсутствует 64-разрядный целый тип comp. Притом, скорее всего, его введение и не предполагается, так как существует дополнительный модуль для обработки комплексных чисел, имеющий то же самое название. В Free Pascal же не предусмотрено предопределенных массивов Port и PortW, а в ТМТ есть даже PortD.
Поскольку оба компилятора используют 32-разрядную плоскую модель памяти, функция seg у обоих возвращает 0, однако в системе программирования Free Pascal неправильно работает функция ptr. Например, в выражении longint(ptr($40,$6c)^) мы можем получить все что угодно, но только не значение счетчика времени BIOS (видимо, программа прекратит работу по ошибке обращения к памяти). У TMT же такая конструкция выполняется правильно.
После компиляции минимальный размер исполняемого файла для ТМТ составляет около 15 Кбайт, а для Free Pascal - 55 Кбайт. Кроме того, второй требует еще внешнего DPMI-сервера на 20 Кбайт, тогда как у ТМТ он содержится внутри исполняемого файла.
Чтобы сравнить скорости работы исполняемых файлов, полученных с помощью этих компиляторов, можно использовать тест Ветстоуна по определению производительности системы с точки зрения выполнения операций над числами с плавающей запятой, переписанный с Фортрана на Паскаль (табл. 2). Значительно уступая TMT по оптимизации размера, Free Pascal работает в полтора раза быстрее. В то же время оба компилятора оставляют далеко позади Borland Pascal, особенно на современных процессорах.
Однако некоторые результаты при измерении производительности выглядят довольно странно. Написанная на ассемблере процедура поиска кратчайшего пути в графе при помощи алгоритма Дейкстры, будучи откомпилированной тем же Free Pascal, выполнялась на 20% быстрее, чем ТМТ. При заполнении таблицы весов дуг графа использовался датчик случайных чисел, измерения повторялись 1000 раз и полученные значения усреднялись, а процедуры чтения, записи и пересылки содержимого оперативной памяти выполнялись в обоих случаях с одинаковой скоростью.
Среднее время выполнения этого теста для компилятора ТМТ Pascal составило 2,20 с, а для Free Pascal - 1,81 с.
Кроме оптимизации, которую делает сам компилятор, интересно также посмотреть, насколько оптимально написаны библиотечные процедуры. Это было решено сделать на примере графической библиотеки. Следует сказать, что в обоих случаях состав процедур значительно отличался от прототипа, особенно у ТМТ. Впрочем, и Free Pascal оказался не на высоте. Хотя дисплей и видеоадаптер позволяли работать в режиме 1600x1200 точек (а среди констант, описывающих разрешение, было предусмотрено даже 2048x1536 точек), однако в действительности заявленное разрешение установить при помощи Free Pascal не удалось. Поэтому скорость вывода графических примитивов проверялась в режиме 1280x1024 точки при 256 цветах (табл. 3). По скорости вывода на экран заштрихованных фигур ТМТ почти на порядок превосходит своего конкурента, что, видимо, объясняется более совершенным алгоритмом. При рисовании линий ТМТ практически во всем отстает от FPC. Правда, в некоммерческой версии ТМТ, где производились измерения, в отличие от коммерческой не используется LFB, что при рисовании без экранного буфера должно приводить к ощутимой потере производительности. Возможно, что различие результатов объясняется этим.
При выводе текста ТМТ втрое отстает от FPC, однако не следует этого пугаться. Дело в том, что тогда как Free Pascal вслед за Borland применяет шрифт размером 8x8, в ТМТ резонно предположили, что при разрешениях 640x480 точек и больше гораздо лучше будет смотреться шрифт размером 8x16. Так что замедление вывода в значительной степени связано с увеличением размера шрифта вдвое.
В целом реализация графической библиотеки ТМТ производит впечатление более продуманной и отлаженной (хотя и менее полной по отношению к Borland Pascal).
Кстати, раздел документации Free Pascal, посвященный описанию различий реализации графических библиотек для разных платформ, остался пустым, а графическая программа, работавшая в DOS и перекомпилированная в графическое приложение Windows, сразу же завершилась по ошибке.
Бесплатная версия TMT Pascal позволяет делать исполняемые файлы только для DOS, зато при использовании коммерческой один и тот же текст, будучи откомпилированным и для DOS, и для Windows, работает визуально совершенно одинаково, хотя внутренний механизм для DOS реализован через VESA, а для Windows - через DirectDraw.
Рекомендации
Что же, хотя крупные фирмы и отказались от ведения разработок Паскаля для DOS, небольшие компании, коллективы энтузиастов и даже отдельные программисты весьма успешно продолжили это дело, создавая вполне достойную замену проверенному компилятору Turbo Pascal. Так что если вам нужен надежный компилятор и вы не хотите возиться с установкой и настройкой его самого и прилагаемой к нему среды, а также если при вашей работе предъявляются жесткие требования к объему кода, то лучше остановить свой выбор на ТМТ. Кстати, при применении внешнего DOS-расширителя памяти, например DOS4GW, минимальный объем исполняемого файла можно сократить до 3 Кбайт. Если же вам не терпится самому принять участие в разработке компилятора Паскаля, если вам нужен транслятор, настраиваемый на ваши конкретные задачи и вы согласны над ним поработать, то следует отдать предпочтение FPC. Впрочем, вместе с исходными текстами также поставляется Р32V, однако он в отличие от FPC компилируется в среде Borland Pascal. Правда, P32V - не полный компилятор, так как переводит текст на Паскале не в объектный код, а в текст на языке ассемблера, и поэтому потребуется внешний ассемблер. Если же вы работаете с OS/2, то целесообразнее предпочесть Virtual Pascal.
В начале 1960-х в мире доминировали языки Фортран (Джон Бэкус из IBM) для научного и Кобол (Жан Саммет из IBM и Министерство обороны) для коммерческого применения. Программы писались на бумаге, затем перфорировались на картах, после чего результатов их выполнения ждали целый день. Языки программирования считались важными помощниками и ускорителями процесса программирования.
В 1960 году международный комитет опубликовал спецификацию языка Алгол 60 1 . Впервые язык определялся чётко сформулированными конструкциями и точным, формальным синтаксисом. Двумя годами позже стало понятно, что требуются некоторые исправления и усовершенствования. Однако основной задачей было расширение ассортимента приложений, поскольку Алгол 60 был предназначен только для научных вычислений (вычислительной математики). Для работы над этим проектом была собрана рабочая группа (Working Group, WG 2.1) под эгидой Международной федерации по обработке информации (IFIP).
Группа состояла примерно из сорока участников; почти столько же было мнений и взглядов на то, каким должен быть потомок Алгола. Это вызвало обширные дискуссии, и некоторые дебаты завершались довольно печально. В начале 1964 года я стал участником группы и вскоре меня попросили подготовить конкретное предложение. Комитет разделился на две фракции. Одна из них стремилась ко второй, после Алгола 60, важной вехе — созданию языка с радикально новыми, непроверенными концепциями и огромной гибкостью. Позже он стал известен под названием Алгол 68. Другая фракция поставила перед собой более скромную задачу и сосредоточилась на реалистичном усовершенствовании известных концепций. В конце концов, время уже поджимало: вскоре должен был появиться PL/1 компании IBM. Однако моё предложение, несмотря на техническую реалистичность, уступило с небольшим перевесом большинству, предпочитавшему разрабатывать Алгол 68.
Постер диаграмм синтаксиса Pascal
Недостаточно просто постулировать язык на бумаге. Необходимо создать надёжный компилятор, который обычно является программой высокой сложности. В этом отношении крупные промышленные фирмы имели преимущество перед нашей рабочей группой, вынужденной полагаться на энтузиастов из научных заведений. Я покинул группу в 1966 году и с несколькими аспирантами из Стэнфордского университета посвятил своё время созданию компилятора для моего проекта. В результате мы получили язык Алгол W 2 , который после 1967 года начал использоваться во многих местах, где применялись крупные компьютеры IBM. Он оказался довольно успешным. Алгол 68 выпустили, но он быстро потонул из-за собственного веса, хотя некоторые его концепции и получили вторую жизнь в новых языках.
Но по моему мнению, Алгол W был недостаточно хорошим. Из-за того, что изначально он разрабатывался комитетом, язык содержал в себе слишком много компромиссов. После моего возвращения в Швейцарию, я спроектировал язык в соответствии со своими предпочтениями: им стал Паскаль. С несколькими помощниками мы написали руководство пользователя и спроектировали компилятор. В процессе его создания мы решились на рискованный шаг: захотели описать компилятор на самом Паскале, затем транслировать его вручную на Фортран, и, наконец, скомпилировать первый из второго. Результатом стал сокрушительный провал, поскольку из-за отсутствия структур данных (записей) в Фортране трансляция получилась очень громоздкой. После этого неудачного дорогостоящего урока вторая попытка окончилась успехом — на этот раз мы использовали вместо Фортрана язык местной разработки Scallop (созданный М. Энгели).
Паскаль
Как и его предшественник Алгол 60, Паскаль 2 имел чёткое определение и ограниченное количество понятных базовых элементов. Его структура и синтаксис формально были определены в расширенной форме Бэкуса-Наура 3 . Операторы описывали присвоение значений переменным, условное и повторное исполнение. Кроме того, в языке существовали процедуры, и они были рекурсивными. Значительным усовершенствованием стали типы и структуры данных: элементарными типами данных были целые и вещественные числа, булевы значения, символы и перечисления (констант). Структурами стали массивы, записи, файлы (последовательности) и указатели. Процедуры имеют два вида параметров — значения и переменные. Процедуры можно использовать рекурсивно. Наиболее существенной была всеобъемлющая концепция типа данных: каждая константа, переменная или функция имела фиксированный, статический тип. Поэтому программы обладали большой избыточностью, которой мог пользоваться компилятор для проверки целостности типов. Это способствовало распознаванию ошибок до исполнения программы.
Столь же важным, как добавление функций, стало и их удаление (относительно Алгола). Чарльз Энтони Ричард Хоар однажды сказал: язык характеризуется не только тем, что он позволяет делать программисту, но и тем, что он делать не позволяет. В связи с этим в языке отказались от параметра-имени Алгола. Он редко использовался и вызывал значительные трудности для компилятора. Кроме того, была устранена концепция владения Алгола, что позволяло локальным переменным быть глобальными, чтобы «пережить» активацию процедуры, для которой переменная была объявлена локальной. Конструкция for Алгола была значительно упрощена, что позволило избавиться от комплексных и сложных в понимании конструкций. Однако для простых и прозрачных ситуаций повторений были добавлены операторы while и repeat . Тем не менее, спорный оператор goto сохранился. Я решил, что сообщество программистов ещё не готово к отказу от него. Это было бы слишком невыгодно для роста популярности Pascal.
Паскаль был прост в преподавании и мог использоваться в широком спектре применений, что было значительным преимуществом по сравнению с Алголом, Фортраном и Коболом. Модуль System Паскаля был эффективным, компактным и простым в применений. На язык сильно повлияла новая дисциплина структурированного программирования, основным проповедником которой был Э. Дейкстра, стремившийся таким образом избежать угрозы кризиса программного обеспечения (1968 год).
Паскаль был опубликован в 1970 году и впервые использовался на курсах обучения в Швейцарской высшей технической школе Цюриха (ETH). Мы даже определили подмножество Pascal-S и создали более компактный компилятор для экономии времени и пространства на нашем компьютере CDC и снижения времени цикла обработки для студентов. В те времена машинное время и память были в дефиците.
Распространение и популярность Паскаля
Вскоре Паскаль заметило несколько университетов и возрос интерес к его использованию в обучении. Мы получали просьбы о помощи в реализации компиляторов для других компьютеров. Я придумал идею постулирования гипотетического компьютера, который можно было бы легко реализовать на различных мейнфреймах, для которого мы бы создали в Высшей технической школе Цюриха компилятор. Этот гипотетический компьютер можно было бы легко реализовывать относительно небольшими трудозатратами при помощи уже готовых инструментов (ассемблеров). Таким образом возникла архитектура Pascal-P (P — «портируемый»), и эта техника оказалась чрезвычайно успешной. Первые наши клиенты были из Белфаста (Ч.Э.Р. Хоар). Два помощника привезли две тяжёлые картонные коробки перфокарт в Цюрих, на них был записан компилятор, спроектированный для компьютера ICL. На границе их подвергли допросу, потому что возникло подозрение, что перфокарты могут содержать секреты, подлежащие таможенным сборам. Всё это происходило без международных проектных организаций, без бюрократии и бюджетов на исследования. Сегодня это было бы невозможно.
Интересным следствием таких разработок стало появление пользовательских групп, в основном состоящих из молодых энтузиастов, желавших продвигать и распространять Паскаль. Ядром этих групп управлял Энди Микел из Миннеаполиса, где они регулярно публиковали новостную рассылку о Паскале (Pascal Newsletter). Это движение внесло значительный вклад в стремительное распространение Паскаля.
Такое распространение не ограничилось Америкой и Европой. Россия и Китай тоже с энтузиазмом восприняли Паскаль. Об этом я узнал только позже, во время моих первых поездок в Китай (1982 год) и СССР (1990 год), когда мне показали версию нашего руководства, написанного непонятными (для меня) символами и буквами.
Наследники Паскаля
Но время не стояло на месте. Компьютеры стремительно становились быстрее, поэтому требования к приложениям, как и к программистам, росли. Программы больше не разрабатывались одним человеком, теперь их создавали коллективы. В языках должны были появиться конструкции, поддерживающие командную работу. Один человек может спроектировать часть системы, называемую «модулем», достаточно независимо от остальных модулей. Позже модули могут быть скомпонованы и загружены автоматически. Даже в Фортране имелась уже такая функция, однако теперь компоновщик должен был проверять целостность типов данных между границами модулей. Это была непростая задача!
Модули с межграничной проверкой целостности типов стали основным расширением первого наследника Паскаля под названием Модула-2 4 (сокращение от modular language, 1979 год). Язык стал эволюционным развитием Паскаля, а также Mesa — языка, разработанного в Xerox PARC для системного программирования. Сам Mesa тоже произошёл от Паскаля. Однако Mesa развивался слишком хаотично и его нужно было «укротить». В Модула-2 также присутствовали элементы для системного программирования, допускавшие конструкции, зависящие от конкретных свойств компьютера, поскольку они были необходимы для интерфейсов с периферийными устройствами или сетями. Из-за этого пришлось пожертвовать самой сутью высокоуровневых языков, а именно машинонезависимым программированием. К счастью, такие части теперь можно было локализовать в конкретных «низкоуровневых» модулях, а значит, соответствующим образом изолировать.
Кроме того, Модула содержал конструкции для программирования параллельных процессов (или квазипараллельных потоков). «Параллельное программирование» было основной темой 1970-х. В целом, Модула-2 постепенно стал довольно комплексным и на мой взгляд переусложнённым для обучения программированию. Ощущалось, что языку нужно совершенствование и упрощение.
Благодаря подобным рассуждениям возник язык Оберон 5 , тоже изначально создававшийся в Xerox PARC. Мейнфреймы больше не использовались, на смену им пришли мощные рабочие станции с дисплеями высокого разрешения и функциями интерактивности. Для них в PARC были разработаны язык и интерактивная операционная система Cedar. Проектировщикам снова показались желательными значительное упрощение и консолидация, поэтому для Оберона в ETH были написаны операционная система, компилятор и текстовый редактор. Задача была выполнена всего двумя программистами — Виртом и Гуткнехтом в свободное время в течение шести месяцев. Публикация Оберона произошла в 1988 году. На развитие языка повлияла новая дисциплина — объектно-ориентированное программирование. Однако в нём не появилось никаких новых особенностей, кроме расширения типа. Следовательно, впервые был создан язык, который не только не усложнился, но даже упростился, и в то же время стал более мощным по сравнению с предшественником.
Примерно в 1995 году на рынке появились динамически перепрограммируемые на уровне логических вентилей электронные компоненты. Эти программируемые пользователем вентильные матрицы (field programmable gate arrays, FPGA) можно сконфигурировать в практически любую цифровую схему. Разница между программным и аппаратным становилась всё более размытой. Я разработал язык Lola (logic language) с похожими на Оберон элементами и аналогичной ему структурой для описания цифровых схем. Схемы всё чаще стали задаваться формальными текстами, заменяющими графические принципиальные схемы. Это упрощает проектирование оборудования и ПО, что на практике становится всё более важным.
Комментарии и выводы
Принципиальная задача высокоуровневых языков — повышение уровня абстракции со слоя машинных команд. Например, структуры данных вместо массивов слов в памяти или условные операторы и операторы цикла вместо команд перехода. Идеальный язык должен определяться в категориях математической логики, аксиом и правил вывода. Для его понимания не должно требоваться никакой отсылки к любому компьютеру или механизму. Это основа портируемости. Проектировщики Алгола видели эту цель, но сложнее всего достигнуть её, не жертвуя при этом мощью выразительности. Тем не менее, каждый новый язык следует измерять той степенью, в которой он приближается к этой цели. Последовательность «Паскаль—Модула—Оберон» стали свидетельством моего стремления достичь её. Оберон к ней близок, однако ничто не идеально.
Ссылки
1. Naur, P. Revised report on the algorithmic language Algol 60. Commun. ACM 6, (Jan. 1963), 1–17.
2. Wirth, N. and Hoare, C.A.R. A contribution to the development of ALGOL. Commun. ACM 9 (June 1966), 413–432.
4. Wirth, N. What can we do about the unnecessary diversity of notation for syntactic definitions? Commun. ACM 20, 11 (Nov. 1977).
5. Wirth, N. Programming in Modula-2. Springer-Verlag 1982.
На правах рекламы
Серверы для разработки и размещения ваших проектов — это про наши эпичные! Все серверы «из коробки» защищены от DDoS-атак, скорость интернет-канала 500 Мегабит, автоматическая установка удобной панели управления VestaCP для размещения сайтов и даже автоматическая установка Windows Server на тарифах с 4 ГБ ОЗУ или выше. Лучше один раз попробовать ;)
Паскаль это язык программирования, который все еще очень популярен в школах и некоторых университетах, как язык для обучения программированию. И у многих изучивших основы языка Паскаль возникает резонный вопрос, а что это за вообще язык программирования и какого его место в современном мире? Будут ли востребованы знания этого языка на рынке?
В конце статьи в пункте 6, мы подробно разберем какие же современные и востребованные языки программирования можно легко изучить после изучения языка Паскаль.
1. История языка программирования Паскаль
Язык программирования Паскаль был создан в 1970 году профессором Никлаусом Виртом в качестве академического языка программирования для обучения студентов. На язык Pascal оказал влияние язык программирования Algol 68, в разработке которого тоже участвовал Вирт. Синтаксис языка Паскаль похож на синтаксис Algol, по этому его еще называют Алголо-подобным языком.
Но Паскаль это не второй Алгол, Вирт выкинул из Алгола все лишнее и избыточное и создал очень маленький и аккуратный язык. Например этот язык программирования был полностью избавлен от оператора GoTo, что сделало его первым языком программирования поддерживающим концепцию структурного программирования. Это означает, что вся логика могла быть описана через операторы:
- Последовательность
- Ветвление
- Циклы
Это сейчас такой подход воспринимается как единственно верный, но в те времена понадобилось 10 лет что бы понять это.
В 70-е все самым популярным языком программирования для написания прикладных программ все еще оставался Basic с его оператором GoTo, но в 80-е на его место уже приходит Pascal.
В 1983 году появляется Turbo Pascal. Это интегрированная среда разработки для DOS и позже, в 90-е, для Windows 3.x. Она стала очень популярной в 80-х годах т.к. содержала встроенные библиотеки и удобную среду разработки с отладчиком.
Turbo Pascal, а так же его расширенная версия Borland Pascal стали основным средством разработки прикладного программного обеспечения в 80-е.
В 1986 году появляется объектно ориентированная версия языка Pascal с удобной средой разработки. Ее назвали Delphi. Это как C++ для C. Но в отличие от C++, Delphi не стал в разы сложнее Pascal, т.к. язык изначально был спроектирован не как системный, а как язык прикладного программирования и в нем не было сложных конструкций для управления памятью как C.
В 90 мы видим рост аппаратных мощностей. В главу угла уже не нужно ставить скорость работы программ и Delphi становится самой популярной средой для быстрой разработки приложений. Она поддерживала все объекты Windows: формы, кнопки, бегунки и т.д. Их не нужно было программировать - они просто перетаскивались мышкой на форму.
2000-е
Отличительной особенностью этих языков стала работа через виртуальную машину. А виртуальная машина стала использоваться повсеместно. Ее ставили на все устройства: мобильные телефоны, кофе-машины, персональные компьютеры. И программистам не нужно было беспокоиться об архитектуре устройства - они писали код под виртуальную машину и программа одинаково работала на любом устройстве на котором такая машина стояла.
2. Где сегодня используется язык программирования Паскаль
2.1 Бизнес
Благодаря огромной популярности языка программирования Паскаль и Delphi в 80-е, 90-е и 2000-е было создано большое количество прикладных программ, в том числе и для автоматизации производства и бизнеса.
Многие компании которые были автоматизированы на Delphi постепенно сейчас переходят на программы написанные на других языках. У нас в России компании для автоматизации сейчас выбирают 1С.
Но есть и такие компании которые продолжают работать на программах написанных на Delphi. И благодаря этому на рынке профессия программист Delphi еще востребована. Но конечно же не настолько как например профессия программист Java или C Sharp.
2.2 Разработка прикладного программного обеспечения
Сейчас для разработки программного обеспечения чаще конечно выбирают не Паскаль. Но его поклонники все же существуют. И если вы хорошо разбираетесь в этом языке, то вы сможете с легкостью создать прикладную программу.
Сейчас очень популярна бесплатная среда разработки Lazarus. Она очень похожа на Delphi и позволяет открывать проекты сделанные на Delphi. Она бесплатна и ее можно свободно скачать.
Развивается среда быстрой разработки Delphi теперь уже под названием RAD Studio.
2.3 Обучение
Хоть и во многих школах еще популярен Паскаль, но все чаще на его место приходит Python. Питон тоже очень простой язык программирования и очень перспективный сегодня. Его используют для задач машинного обучения, анализа данных и в веб программировании. И главное он лишен основного недостатка языка Паскаль сегодня: если вы будете изучать программирование на языке Python, то потом вы легко найдете работу программистом Python, чего сегодня нельзя сказать о языке Pascal.
3. Достоинства языка Pascal
Лично мне жалко, что язык программирования Паскаль не стал мейнстимом и сейчас забыт. Я считаю, что у него была масса достоинств. И для разработки прикладного программного обеспечения он был очень хорош.
3.1 У Паскаль понятный синтаксис
У языка Паскаль Алголо-подобный синтаксис. Я считаю такой синтаксис более естественным и понятным как для обучения, так и для дальнейшего сопровождения программы.
Современные популярные языки прикладного программирования такие как Java и C Sharp имеют C подобный синтаксис.
Я сам по образованию учитель информатики и некоторое время проработал в школе. Так вот детям объяснить оператор присвоения на языке Паскаль гораздо проще, чем в других языках.
В Паскаль присвоение выглядит так:
В остальных языках он выглядит как знак предикат равенства
Детям легче понять синтаксис языка Паскаль.
3.2 Паскаль компилируемый язык программирования
А в современных языках, таких как Java и C Sharp, которые работают через виртуальную машину, нужно еще дополнительно попросить друга установить виртуальную машину машину этого языка на свой компьютер. В случае с языком Питон, потребуется попросить установить интерпретатор языка Питон для запуска скриптов написанных на нем.
Уравнение вида a⋅x 2 + b⋅x + c = 0 - квадратное уравнение.
Площадь и периметр прямоугольника
Прямоугольник – четырехугольник, у которого все углы прямые (равны 90 градусам). Площадь прямоугольника Для вычисления площади прямоугольника необходимо умножить его длину на ширину:
Таблица Пифагора
Таблица Пифагора - одна из форм представления таблицы умножения.
Факториал числа
Факториал числа n - это функция, которая возвращает произведение всех натуральных чисел от 1 до n включительно.
Числа Фибоначчи
Числа Фибоначчи - это значения числовой последовательности, в которой, первые два числа равны единице, а каждый последующий элемент равен сумме предыдущих двух чисел.
Последовательность Фибоначчи имеет вид:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610…
Задача №407 Обмен
В рождественский вечер на окошке стояло три цветочка, слева на право: герань, крокус и фиалка. Каждое утро Маша вытирала окошко и меняла местами стоящий справа цветок с центральным цветком. А Таня каждый вечер поливала цветочки и меняла местами левый и центральный цветок. Требуется определить порядок цветов ночью по прошествии k дней.
Задача №774 Торт
После окончания второго тура олимпиады по программированию участники олимпиады решили отметить это событие. Для этой цели был заказан один большой торт прямоугольной формы. При этом стол, вокруг которого собрались участники был круглым. Естественно, у них возник вопрос, поместиться ли прямоугольный торт на круглом столе так, чтобы ни одна часть торта не выходила за пределы стола. Вам необходимо дать ответ на этот вопрос, зная размеры торта и радиус стола.
Задача №904 Увеличить на 2
Задана последовательность целых чисел. Увеличить на 2 каждый ее неотрицательный элемент.
Задача №907 Первый не больший чем 2,5
Задан массив вещественных чисел. Найти первый элемент массива, значение которого не превышает 2.5.
Задача №1607 Число в обратном порядке
Запишите целое неотрицательное число n в обратном порядке.
Задача №2860 Сумма чисел на промежутке
Найти сумму целых чисел на промежутке от a до b.
Задача №8372 Составить треугольник
По заданным длинам трех отрезков определить, можно ли из них составить невырожденный треугольник. Треугольник называется невырожденным, если его площадь больше 0.
Задача №8638 Дописать тройку
Дано трехзначное число n. Дописать к нему слева и справа цифру 3.
Задача №8824 Найти число
Найти целое число n, если известны предыдущее и последующее к нему числа.
Задача №8840 Цифра
На входе программы имеется натуральное число n. Нужно вывести крайнюю справа цифру (разряда единиц) числа n.
Задача №8870 Меньшее из трех
На входе программы есть три целых числа a, b и c, записанных в одной строке через пробел. Нужно вывести меньшее из них.
Задача №8871 Большее из трех
На входе программы есть три целых числа a, b и c, записанных в одной строке через пробел. Нужно вывести большее из них.
Задача №8873 Однозначное число
Задано целое число n. Вывести Ok, если число n однозначное и No иначе.
Задача №8880 Равносторонний треугольник
Заданы три натуральных числа a, b, c. Выведите квадрат любого из заданных чисел, если существует равносторонний треугольник с длинами сторон a, b, c и No в противном случае.
Задача №8936 Четные на промежутке
Выведите все целые четные числа, принадлежащие интервалу [a, b] в убывающем порядке.
Часто в разговорах со школьниками и их родителями можно услышать, что на информатике они «до сих пор изучают Pascal, страну развалили, не могут современные компьютеры поставить!». Говорят, что в 21-м веке можно было бы изучать в школе уже что-то другое — Python или тот же JavaScript, но во многих школах, особенно в регионах, до сих пор преподают этот язык.
Но постойте. Не отменяя, что многим российским школам не повредит обновление парка компьютеров, давайте посмотрим, чем хорош сам Паскаль.
Олды тут?
Он действительно простой
Pascal — предельно простой и понятный язык. В нём нет сложных конструкций, перегрузок операторов или неявного приведения типов. Достаточно выучить 15 команд, и вы уже сможете решить большинство школьных задач.
Программы на Pascal легко читать и понимать, даже если вы видите этот язык первый раз. Смотрите сами:
Компилятор — наш друг
Pascal — компилируемый язык, как и многие другие. В нашем случае компилятор перед тем как собрать программу проверяет исходный код на ошибки. Единственное, он не предупреждает, если вы объявили переменную, но ни разу её не использовали, как это делает, например, С++. Но если компилятор встретит ошибку, он сразу поставит курсор на место ошибки и сверху на красном фоне напишет, что конкретно ему не нравится в этом коде.
Ошибка несоответствия типов: программист пытается в целочисленную переменную (integer) поместить дробное число.
Всё только по правилам
Pascal — строго типизированный язык с чёткой логической структурой. В нём всё упорядочено настолько, что ошибиться в командах будет очень сложно. Единственное, что может показаться немного странным для тех, кто привык к другим языкам — оператор присваивания, который выглядит так :=
Программисту остаётся следить только за тем, чтобы нигде не пропустить точку с запятой в конце каждого оператора, и за тем, чтобы количество операторов begin и end совпадало. Благодаря такому подходу Pascal заслужил репутацию лучшего языка программирования для начинающих.
Разумеется, в Паскале нет ООП. Но для того чтобы понять основы алгоритмов, переменных и циклов, этого и не нужно. А процедуры, функции, локальные и глобальные переменные — это всё есть.
Что на нём пишут сегодня
На Паскале сейчас не пишут ничего. Сегодня он только для учёбы.
Но раньше — писали, например, самый первый фотошоп был написан на Паскале пополам с ассемблером. А вообще сейчас больше пишут на Delphi — преемнике Pascal, в котором есть и ООП, и визуальное программирование, и работа с мышью и окнами.
С чего начать
Если вы давно хотели познакомиться с Паскалем поближе, но не знали, с чего начать, то начните с этого:
Читайте также: