О языке Паскаль
Никлаус Вирт |
Язык Паскаль был разработан в 1970 г. Никлаусом Виртом как язык, обеспечивающий строгую типизацию и интуитивно понятный синтаксис. Он был назван в честь французского математика, физика и философа Блеза Паскаля.
Одной из целей создания языка Паскаль Никлаус Вирт считал обучение студентов структурному программированию. До сих пор Паскаль заслуженно считается одним из лучших языков для начального обучения программированию. Его современные модификации, такие как Object Pascal, широко используются в промышленном программировании (среда Delphi).
|
Блез Паскаль |
Среда Turbo Pascal |
Наиболее популярным решением для персональных компьютеров в 80-е — начале 90 годов стал компилятор и интегрированная среда разработки Turbo Pascal фирмы Borland.![]() |
| Выпущенная в 1995 г. как продолжение среды Turbo Pascal система программирования Delphi стала одной из лучших сред для быстрого создания приложений. Delphi ввела в язык Паскаль ряд удачных объектно-ориентированных расширений; обновленный язык получил название Object Pascal. Начиная с версии Delphi 7.0, язык Delphi Object Pascal стал называться просто Delphi, однако, старое название используется часто. Последняя версия среды — Delphi XE. | Среда Delphi 7 |
Наиболее известной свободной реализаций языка Паскаль является Free Pascal. Помимо открытости исходного кода, его основным преимуществом является мультиплатформенность, а также поддержка различных диалектов Паскаля..bmp)
С другой стороны, среда Delphi по мере развития становилась все более громоздкой и малопригодной для обучения программированию. Кроме того, отсутствует бесплатная версия Delphi даже для академического использования. Данные факторы привели к практически полному исчезновению Delphi из сферы образования, а для среды Lazarus, несмотря на ее бесплатность, такие случаи единичны.
Наконец, появление платформ Java и .NET, включающих мощный язык программирования и мощные стандартные библиотеки ослабило позиции языка Delphi. Для обучения программированию стали чаще использоваться такие языки как Java, C, C++, C#, Visual Basic, Python, Haskell.
Одним из ярких событий, связанных с развитием языка Паскаль, стало появление языка и компилятора Oxygene фирмы RemObjects, который создатели заслуженно назвали современным Паскалем 21 века. Oxygene может генерировать код под различные платформы, в том числе под платформы .NET и Java. Основным его недостатком является отсутствие бесплатного компилятора и среды для образовательных целей. Кроме того, Oxygene достаточно сильно отличается от канонического языка Паскаль (методы классов вместо процедур и функций), что отражает его сугубо профессиональную направленность.
Язык и система программирования PascalABC.NET призваны изменить сложившуюся ситуацию и вернуть языку Паскаль былую привлекательность как для обучения, так и для профессионального программирования, помножив ее на мощь платформы .NET.
- Prev
- Next
FreePascal сегодня | KV.by
Что такое язык Паскаль сегодня?
С одной стороны, программирование в
школах и на младших курсах ВУЗов —
ведь он и задумывался
первоначально как язык для
обучения программированию.
С
другой, масса кода серьезных и не
очень приложений на Delphi, которые
также нужно поддерживать и
развивать.
Проблема?
Собственно, проблема сегодня именно в Delphi, который развивается не так динамично, как нужно рынку. На одном из форумов, где обсуждалась данная проблема, справедливо заметили, что «несерьезно в 2011 году не иметь даже 64-битного компилятора». Не говоря уже о поддержке отличных от Windows платформ, которые в последнее время стали набирать всё большую популярность. Выпущенная ещё «при жизни» компании Borland версия Delphi для платформы .NET по-настоящему проблему перехода с Delphi на новую платформу не решила, и дело, наверное, больше в различиях архитектуры стандартных библиотек Delphi и .NET Framework’а, чем в том языке, на котором пишутся приложения. В конце концов, у современного Object Pascal и C# общий «отец», поэтому по-настоящему непреодолимых различий между ними не так уж и много.
С другой стороны, использование
архаичного Turbo Pascal для обучения
программированию — тоже, скажем
прямо, не комильфо.
Потому что DOS,
под который последняя версия этого
знаменитого программного продукта
написана, перестал быть актуальным
ещё в те времена, когда изучающих
Turbo Pascal сегодня школьников и
студентов и на свете не было. В
школах, а особенно в высших учебных
заведениях, парк компьютеров
всё-таки обновляется, а
устанавливаемые на новых машинах
системы вынуждают использовать для
запуска Turbo Pascal’а эмуляторы и вообще
вызывают массу ненужных и
отвлекающих от изучения
программирования проблем.
Использование в последнем случае
Delphi не сильно решает проблему. В Delphi
тоже можно создавать приложения
без использования библиотеки
компонентов, а работающие в простом
консольном режиме. Но Delphi является
коммерческим программным
продуктом, и за его использование
министерство образования должно
уплатить определённую сумму
нынешнему собственнику Delphi —
компании Embarcadero. Кроме того, в
некоторых учебных заведениях
используются не Windows, а свободные
программные платформы (в основном,
конечно, разные дистрибутивы GNU/Linux,
хотя я своими глазами видел учебный
класс, где стояла PC-BSD).
Конечно, рано или поздно Delphi просто обязана будет догнать по своему развитию коммерческие решения на основе других технологических стеков (хотя бы по поддержке разных программных и аппаратных платформ), но тем же школьным учителям и вузовским преподавателям от этого, по большому счету, ни жарко, ни холодно. Да и разработчики коммерческих или промышленных приложений тоже не могут ждать, пока Embarcadero разберётся с наследием Borland’а и начнёт, наконец, реализовывать в компиляторе и среде ту функциональность, которой им не хватает уже на протяжении нескольких лет. И потому нет ничего удивительного, что и те, и другие сегодня смотрят в сторону свободного аналога и конкурента Delphi и Turbo Pascal — Free Pascal и сопровождающей его RAD-среды Lazarus.
Собственно, Free Pascal
Free Pascal — это пакет из компилятора
Object Pascal и нескольких десятков
дополнительных утилит, включая
среду разработки в стиле старого
доброго Turbo Pascal’а, которая наверняка
будет навевать ностальгию на
запустивших её разработчиков.
Как
видно из названия самого продукта,
он относится к свободному ПО, то
есть имеет открытый исходный код,
может использоваться без
каких-либо выплат его
разработчикам (вообще говоря,
распространяется пакет Free Pascal под
лицензией GNU GPL, а лицензия для
рантайм-библиотеки несколько
модифицирована).
Чем ещё хорош Free Pascal, кроме своей
бесплатности? Прежде всего, именно
тем, чего всегда не хватало Delphi и Turbo
Pascal: своей кросс-платформенностью.
Причём кросс-платформенность эта
касается не только поддерживаемых
операционных систем, но и
процессоров: компилятор может
выдавать родной код для Intel x86,
Amd64/x86_64, PowerPC, PowerPC64, Sparc, ARM. Старая
версия (1.0) умела ещё и для Motorola 680×0,
но потом, видимо, было решено, что
это мало кому нужно, и поддержку
этой архитектуры из последующих
релизов убрали. Что касается
операционных систем, то их список
тоже достаточно внушительный: Linux,
FreeBSD, Haiku, Mac OS X/Darwin, DOS, Win32, Win64, WinCE, OS/2,
Netware (libc и classic) и MorphOS.
Самая ценная особенность Free Pascal’а — это ориентация именно на «борландовскую» версию языка, очень хорошо знакомую многим поколениям разработчиков и преподавателей, а не на так и не сумевшую вырваться из академических кругов «правильную» версию языка, которую любят создатели GNU Pascal. Поэтому он гораздо лучше подходит для обучения языку, ведь последующий переход к Delphi будет не таким сложным, как в случае использования GNU Pascal.
Другая, не менее ценная,
особенность Free Pascal’а — конечно же,
постоянное обновление и развитие
этого программного продукта. Если
вы зайдёте на сайт freepascal.org, то
увидите, что последний официальный
релиз вышел 12 ноября прошлого года —
не так давно для действительно
сложного и крупного свободного
программного продукта. Авторы
компилятора оперативно дописывают
поддержку новых языковых
«фишек», появляющихся в Delphi,
поэтому перенос Delphi-кода на Free Pascal,
особенно в случае, если код был
написан ещё на сравнительно старых
версиях Delphi, проходит без
каких-либо заметных проблем.
Наконец, третий существенный плюс компилятора и библиотек состоит в стабильности и качестве их работы. Конечно, при разговоре о подобных сложных понятиях нужно делать скидку на то, что это всё-таки свободный программный продукт. Но сам факт, что многие разработчики достаточно известных программных продуктов, отчаявшиеся дождаться от Embarcadero поддержки 64-битных Windows и других ОС, осуществили (или осуществляют) перенос своих продуктов на Free Pascal, говорит о многом. Как вы недавно могли прочесть на страницах «Компьютерных вестей», Total Commander попал в список таких портируемых продуктов. И роль в этом играет не только сам компилятор Free Pascal, но и другой программный продукт, являющийся, как сказали бы экономисты, товаром-спутником Free Pascal. Называется он Lazarus, и именно он делает Free Pascal такой же удобной для разработчиков средой, какой является Delphi.
Lazarus
Я подробно рассказывал о Lazarus’е
читателям «Компьютерных
вестей» достаточно давно, но с
той поры много воды утекло.
Снова
вспомнить об этом замечательном
продукте мне будет совсем не сложно
и даже приятно.
Кратко и ёмко о Lazarus’е написано в «Википедии»: «Lazarus — свободная среда разработки программного обеспечения для компилятора Free Pascal Compiler. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. На данный момент является единственным инструментом, позволяющим достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows».
В общем-то, в этой фразе и кроется
всё то, чем Lazarus привлекателен
сегодня для разработчиков.
Библиотека компонентов LCL,
используемая в этой среде,
спроектирована так, чтобы быть
максимально похожей на
используемую Delphi-разработчиками
библиотеку VCL, а отдельные
библиотеки компонентов (и не такое
уж их малое количество, кстати
говоря), изначально разработанные
для Delphi, уже перенесены или
собственными, или сторонними
разработчиками под Lazarus.
Развитие
Lazarus сегодня, к сожалению, движется
не такими быстрыми темпами, как
хотелось бы, но и медленным его ни в
коем случае назвать нельзя, потому
что постепенно недоделки
устраняются, новые возможности
реализуются, и качество продукта,
соответственно, повышается.
Резюме
Free Pascal сегодня — это не только учебный компилятор, которым могут воспользоваться отдельные «продвинутые» школы, уже перешедшие на Linux или просто заботящиеся о лицензионной чистоте используемого ими программного обеспечения, но и конкурентоспособный аналог коммерческих средств разработки на Паскале (прежде всего, конечно, Delphi).
Поскольку на постсоветском
пространстве позиции Паскаля и Delphi
всегда были достаточно сильны, то и
русскоязычное сообщество
пользователей Free Pascal и Lazarus уже
сейчас достаточно велико и в
обозримом будущем, судя по всему,
будет только расти. Что и хорошо,
потому что в случае чего спросить
можно будет у кого-то, да и развитию
продукта в целом это, несомненно,
поспособствует.
Если вы сегодня выбираете, переходить на новую версию Delphi или подождать более-менее серьезного обновления компилятора, которое Embarcadero всё обещает в своих roadmap’ах, думаю, стоит присмотреться и к Free Pascal/Lazarus. Во всяком случае, будущее у этих продуктов, пока существуют программисты на Object Pascal’е, точно есть.
Вадим СТАНКЕВИЧ,
[email protected]
Почему я использую Object Pascal
Паскаль рассматривается многими программистами как старый язык из прошлого. И хотя на самом деле это один из старых языков программирования, за последние десятилетия он значительно превратился в современный полнофункциональный язык.
Pascal был первоначально разработан в 1969 году доктором Никлаусом Виртом в ETH Цюриха. Он использовался как язык обучения, а также как язык для бизнес-приложений. С появлением классической Mac OS Pascal стал предпочтительным языком Apple для разработки серьезных приложений. Например, первая версия Photoshop была сделана на Паскале.
1
Паскаль был стандартизирован в качестве стандарта ISO в начале 90-х годов. Но в отличие от других языков, у Паскаля с самого начала были разные диалекты и компиляторы. Одной из самых любимых версий, сделавших Паскаль одним из самых известных и распространенных языков программирования 80-х и начала 90-х годов, была Borlands Turbo Pascal 2 . Со временем некоторые объектно-ориентированные дополнения были добавлены к языку Apple, а затем и Borland, который превратился в то, что мы сейчас называем 9.0013 Объект Паскаль . 3
На сегодняшний день существует две основные реализации: Delphi , официальный преемник Turbo Pascal, и Free Pascal .
Delphi — это коммерческая среда быстрой разработки приложений (RAD), которая состоит из языка Object Pascal, мощного и быстрого компилятора, большой библиотеки времени выполнения (RTL) и конструктора кроссплатформенных графических пользовательских интерфейсов (GUI).
Delphi работает только в Windows, но также может компилировать программы для GNU/Linux, MacOS, Windows, iOS и Android.
Free Pascal, напротив, является бесплатной реализацией языка Object Pascal с открытым исходным кодом. Он состоит из языка, компилятора и исполняемой библиотеки, но не включает в себя RAD-инструменты, которые сделали Delphi знаменитым. Но благодаря некоторым энтузиастам Free Pascal Lazarus IDE была разработана как мощная среда RAD специально для Free Pascal. Оба, Free Pascal и Lazarus, являются кроссплатформенными и могут работать и компилироваться для разных систем, среди которых GNU/Linux, Windows, MacOS, BSD.
Но помимо этого исторического экскурса, по каким причинам я использую Free Pascal в своих личных проектах?
Паскаль сосредоточиться на типах
Pascal — это скомпилированный язык со статической типизацией, который требует, чтобы вы определяли типы всех переменных, параметров и функций в вашем коде.
Компилятор мгновенно выдаст ошибку, когда вы попытаетесь передать несовместимые типы в переменную или параметр. Безопасность типов имеет одно большое преимущество: она заставляет вас думать о как структурировать данные .
Язык предлагает множество предопределенных типов, но вы также можете определить свои собственные типы. Для этой задачи Паскаль предлагает вам перечислений , наборов , массивов , записей и классов . Можно даже создавать поддиапазоны типов или переименовывать существующие.
Паскаль очень строг, поэтому программист должен различать подпрограммы, которые возвращают значения, в Паскале называемые функциями , а подпрограммы, которые ничего не возвращают, называются процедурами . Функции и процедуры также могут быть переданы в переменные или другие функции благодаря процедурным типам .
Возможна перегрузка операторов для определенных типов. С помощью этой функции у вас есть возможность определить, скажем, результат операции сложения двух или более экземпляров одного и того же класса.
Object Pascal полностью поддерживает ООП
.Object Pascal предоставляет вам все инструменты, необходимые для современного объектно-ориентированного программирования (ООП). Хотя язык не является полностью объектно-ориентированным в этом смысле, как Smalltalk или Ruby, где даже самые основные типы данных являются экземплярами классов, вы найдете все концепции, которые определяют ООП в языке Object Pascal:0009 инкапсуляция , наследование и полиморфизм .
Вы можете определять сложные типы с помощью классов. Класс может определить методов , которые являются процедурами или функциями, и данных , называемых полями в Object Pascal. Также возможно определить способ доступа к данным с помощью функции, называемой свойствами . Свойства определяют, какие методы получения или установки используются для чтения или записи поля. Классы также могут наследовать другие классы, поэтому вы можете построить иерархическое дерево данных и поведения, которые вы смоделировали в своем приложении.
Базовый класс всех классов TОбъект .
Интерфейсы также являются частью Object Pascal, как и Исключения . Вы можете использовать встроенные стандартные исключения, но, конечно же, у вас есть свобода определять свои собственные исключения. Помощники класса сравнимы с методами расширения в C#, Smalltalks или PHP (хотя и не совсем то же самое) и позволяют добавлять методы к существующим классам без необходимости создания нового класса.
Другие функции: Универсальные для определения классов, применимых к широкому спектру типов, а также множество предопределенных классов для расширенных структур данных, таких как списки, словари, потоки и многое другое.
Для углубленного обзора всех современных возможностей ООП я рекомендую прекрасную статью, написанную Михалисом Камбурелисом, которая называется Modern Object Pascal Introduction for Programmers 4 .
Паскаль модульный
Pascal поддерживает модульное программирование.
Что называется пакеты или модули на других языках, таких как Java или JavaScript, называется единицей в Паскале.
Блок может содержать весь код, имеющий общее отношение. Вы можете определить, какие данные, типы или функции этого модуля видны другим частям вашей программы — это называется интерфейсом . И вы также можете определить, какие части не видны другим и, следовательно, являются частными для устройства — это называется частью реализации . Вы даже можете определить код, который выполняется один раз, когда модуль включен в вашу программу, часть инициализации модуля, и код, который запускается при завершении программы, часть завершения .
есть еще одно преимущество: они инкапсулируют код в своем собственном пространстве имен. Таким образом, вы можете иметь, например, две или даже больше процедур с одинаковыми именами в двух разных модулях без конфликта имен.
Паскаль быстрый
Одной из причин огромного успеха раннего Turbo Pascal была скорость компилятора.
Даже на старом оборудовании код компилировался за несколько секунд. По сравнению с другими компиляторами это верно и сегодня.
Но, несмотря на быструю компиляцию кода, сам скомпилированный код очень конкурентоспособен по сравнению с приложениями, разработанными на простом C, C++ или Java из-за высокой оптимизации для различных архитектур процессоров, что позволяет программе работать на очень высокой скорости и с небольшим объемом памяти. потребление. 5
Паскаль многословен
Возможно, это то, что раздражает большинство разработчиков: отсутствие фигурных скобок и очень многословный синтаксис языка. Например, вместо открытия и закрытия фигурных скобок Паскаль использует 9.0083 begin и end ключевые слова для блоков. Ключевое слово if дополняется словом , затем . Как видите, весь синтаксис читается как простой английский. Если вы сейчас начнете плакать, вам следует подумать над одним важным вопросом: Что важнее? Возможность иметь короткий синтаксис для быстрого написания кода или возможность читать и понимать код, который был написан другими разработчиками или даже вами год назад? Я за второй факт, и мне очень нравится эта многословность.
Паскаль имеет хорошую документацию
Язык без хорошей документации — это только половина ценности. Команда разработчиков Free Pascal проделала очень хорошую работу. Вы можете просмотреть всю документацию по языку, а также документацию по самому компилятору, Runtime Library (RTL) , Free Component Library (FCL) и Lazarus Component Library (LCL) 6 . В дополнение к этому вы найдете множество примеров в Free Pascal Wiki 9.0010 7 , но это подводит нас к тому, что…
Помимо официальной вики, существует также официальный форум 8 , где пользователи Free Pascal и Lazarus ответят на ваши вопросы. Если вы активны в Google+, вы также можете ознакомиться с сообществом Google+ Free Pascal / Lazarus IDE 9 . Есть несколько (хотя и немного) конференций, связанных с Object Pascal, а также несколько местных встреч по Free Pascal и Lazarus. И с Журналом Блеза Паскаля 10 вы найдете регулярное издание, которое предлагает широкий выбор статей о Delphi, Free Pascal, Lazarus и Object Pascal в целом.
Заключение
Object Pascal действительно заслуживает внимания. Пусть вас не обескураживают люди, которые говорят вам, что Pascal устарел. Это определенно не так! Есть много замечательных проектов, доказывающих, насколько силен язык: от самой Lazarus IDE до высокопроизводительных 3D-игровых движков, таких как Castle Game Engine 9.0010 11 , который также компилирует ваши игры для Android и iOS. Если вам интересен путь в стороне от основных языков, взгляните на некоторые ресурсы, которые я упомянул. Или просто установите Free Pascal и Lazarus и попробуйте язык сами!
- http://www.computerhistory.org/atchm/adobe-photoshop-source-code [возврат]
- https://en.m.wikipedia.org/wiki/Turbo_Pascal [возврат]
- Вы можете прочитать больше об истории Pascal в Free Pascal Wiki. [возврат]
- http://castle-engine.io/modern_pascal_introduction.html [возврат] Тест производительности языка программирования
- в игре Computer Language Benchmarks Game [возврат]
- http://www.
freepascal.org/docs.var [возврат] - http://wiki.freepascal.org [возврат]
- https://forum.lazarus.freepascal.org [возврат]
- https://plus.google.com/communities/114860965042324270757 [возврат]
- http://www.blaisepascal.eu [возврат]
- http://castle-engine.io [возврат]
Знакомство с Free Pascal 2.0 – OSnews
После пяти лет разработки Free Pascal 2.0 готов. С новым компилятором его авторы считают, что они готовы стать более крупной платформой разработки с открытым исходным кодом. В мире MS-DOS Pascal был одним из основных языков программирования и благодаря Borland Delphi стал важным языком программирования в мире Windows. В мире открытого исходного кода Free Pascal является ведущим компилятором Pascal, и хотя открытый исходный код немного предвзято использует язык C, язык Pascal может многое предложить программистам с открытым исходным кодом.
Free Pascal — это компилятор GPL для 32-битных и 64-битных архитектур ЦП, таких как Intel 32/64 бит, AMD 32/64 бит, SPARC, PowerPC и Intel ARM.
Язык совместим с Turbo Pascal, Delphi (до версии 7) и частично с Metrowerks Pascal. Он поддерживает множество операционных систем: Dos, Linux, Windows, OS/2, FreeBSD, NetBSD и OpenBSD, Novell Netware, Mac OS classic, Mac OS X и MorphOS.
Он поставляется с кроссплатформенной библиотекой времени выполнения, множеством интерфейсов к существующим библиотекам и большим набором невизуальных классов в бесплатной библиотеке компонентов. И последнее, но не менее важное: IDE с текстовым режимом существует на различных платформах, а FPC поставляется с 1800 страницами документации.
Что нового по сравнению с версией 1.0?
– Больше поддерживаемых процессоров:
AMD64, SPARC, PPC (32 бит), ARM.
— Больше поддерживаемых платформ:
Mac OS classic, Mac OS X, MorphOS, Novell Netware.
— Улучшенное встраивание
— Улучшенные регистровые переменные
— Улучшенный оптимизатор ассемблера 80×86
— Поддержка многопоточности.
— Элементарная поддержка вариантов.
— Поддержка интерфейсов.
— поддержка WideString.
— Дополнительные устройства, совместимые с Delphi.
— Значительно улучшен доступ к базе данных.
— Новый режим компиляции:
MACPAS для совместимости с компиляторами Pascal в Mac OS.
— Полная документация модулей RTL, сгенерированная с помощью нового инструмента документации
, включенного в дистрибутив: fpdoc
— Полностью переписанная поддержка Unix.
— полностью переписанный компилятор, упрощающий перенос на новые архитектуры
.
— IDE
— оконная система Free Vision в текстовом режиме.
— Много новых пакетов.
— И, конечно же, множество исправлений.
2. Почему Паскаль?
Трехмерная игра Lentil Wars пишется на Free Pascal
Поскольку мир с открытым исходным кодом немного предвзято относится к C, нам придется ответить на вопрос «для чего хорош Pascal?». Чтобы ответить на этот вопрос, нам нужно сравнить Паскаль с другими современными языками программирования, доступными в настоящее время.
Паскаль примерно так же стар, как язык программирования C, и между ними есть много общего; оба являются процедурными языками третьего поколения, которые позволяют программисту выполнять структурное программирование, и оба языка использовались для написания больших реальных приложений.
Новые языки, такие как Java и C#, обещают упростить программирование, предоставляя управляемый код с автоматическим управлением памятью. Поскольку это освобождает программиста от задачи, это несколько упрощает программирование. Поэтому можно задаться вопросом, оправдан ли еще интерес к языкам старой школы. Однако это так, хотя в последнее время был достигнут большой прогресс в уменьшении недостатков скорости управляемого кода, эти языки, как правило, создают программное обеспечение, которое требует больших раздутых сред выполнения и часто воспринимается пользователями как медленное. В настоящее время это причины, по которым многие программисты и пользователи не любят эти новые школьные языки. (Кстати, насколько новаторским является управляемый код? Был там, сделал это, но не сработало.
Помните P-систему USCD?)
В любом случае, сегодня большая часть программного обеспечения работает непосредственно в операционной системе, и мы полагаем, что так будет по крайней мере еще некоторое время. Поэтому важно иметь хорошие инструменты для написания такого программного обеспечения. Различные наборы компиляторов C предоставляют такой инструмент, как и Free Pascal. Хотя Pascal и C похожи, у языка Pascal есть много возможностей, которые недоступны многим программистам. Например, традиционная сильная сторона Паскаля — безопасность типов — сегодня так же актуальна, как и 30 лет назад. Модульное программирование было представлено гораздо лучше, как и объектно-ориентированные расширения.
Паскаль избавляет вас от беспокойства. Например, каждое использование строки в C требует принятия мер для предотвращения переполнения буфера. Паскаль не лишает вас никакой свободы, поэтому, если вы хотите создать в своем коде уязвимость к переполнению буфера, вперед! Однако использование чего-то тривиального, например строки, не требует от вас беспокойства о переполнении буфера, и, как следствие, вероятность их возникновения меньше.![]()
Современный Паскаль предлагает множество способов создания лучшего программного обеспечения. В современном объектно-ориентированном программном обеспечении свойства Паскаля дают вам мощный инструмент для защиты целостности ваших объектов, а интерфейсы дают вам возможность множественного наследования без семантических трудностей.
Использование RTTI (информация о типе времени выполнения) обеспечивает простоту потоковой передачи и множество вариантов проектирования RAD.
См., например, проект Lazarus, который создает кроссплатформенную IDE с использованием Free Pascal.
Что касается Free Pascal, я уверен, что многие программисты оценят, что он компилируется в 9 раз быстрее, чем GCC, предоставляет четкие и полезные сообщения об ошибках и освобождает вас от необходимости писать make-файлы.
Подводя итог, можно сказать, что программирование на Pascal дает вам как программисту много преимуществ перед вашими коллегами, пишущими на C.
3. Свободный Паскаль
Трехмерный рендерер местности Voxel World был написан на Free Pascal.

В начале 90-х Turbo Pascal от Borland был ведущим компилятором Pascal. У него было очень большое сообщество программистов, и когда в 1994 году стало ясно, что он будет закрыт, многие программисты остались в дураках. Некоторые проекты были начаты такими пользователями для написания нового компилятора, и в 1993 году Free Pascal, первоначально известный как FPK-Pascal, стал одним из таких проектов. Все ранние разработчики Free Pascal были очень довольны пользователями Turbo Pascal, и цель компилятора была ясна: создать современную 32-битную замену Turbo Pascal.
Проект быстро привлек людей из большого сообщества Turbo Pascal и получил большую пользовательскую базу. В июле 2000 года, венцом работы, был выпущен Free Pascal 1.0. Free Pascal сделал то, что обещал, это был 32-битный современный компилятор Pascal, который был чрезвычайно совместим с Turbo Pascal. Он также оказался очень надежным компилятором, и ему можно было доверять для написания больших программ. В образовании, традиционно являющемся оплотом Паскаля, Turbo Pascal был заменен Free Pascal, и многие гуру кода начали разрабатывать программное обеспечение в FPC.
Количество загрузок резко возросло, и на данный момент они все еще растут, поскольку три сервера, образующие ftp.freepascal.org, выбрасывают 0,5 терабайт трафика в месяц.
Однако мир изменился. Turbo Pascal исчез из памяти людей, а его преемник, Delphi, который в основном использовался для разработки бизнес-приложений, теперь стал доминирующим фактором в мире Pascal. Таким образом, спрос изменился с современного преемника Turbo Pascal на альтернативу Delphi с открытым исходным кодом. Однако это поставило под сомнение способ написания компилятора. На самом деле компилятор был написан группой опытных молодых и сумасшедших программистов, которые в то время были относительно неопытны в проектировании компиляторов.
Выявился еще один, более важный недостаток. Версия 0.99 компилятора была перенесена на Commodore Amiga. Это было сделано путем написания второго генератора кода, одного для i386 и одного для M68000. Такой подход оказался совершенно несопровождаемым, так как очень много изменений требовало обновления обоих генераторов кода, а корректность изменений не могла быть гарантирована людьми, разрабатывающими на ПК.
Что касается генерации кода, то конструкция компилятора далеко не соответствовала задачам генерации эффективного кода на ассемблере.
Другими словами, потребовался редизайн. Самым неотложным был новый генератор кода, но для прочной архитектуры компилятора также пришлось переписать дерево синтаксического анализатора и распределитель регистров.
4. Архитектура
Архитектура компилятора Free Pascal 1
Новый компилятор использует архитектуру, которую мы еще нигде не видели, и мы ею очень гордимся. Сначала мы обсудим архитектуру компилятора 1.0. Компилятор версии 1.0 был довольно простым. Сканер преобразовал программу в токены, которые затем были проанализированы в дереве парсера. Затем компилятор выполнил первый проход для оценки константных выражений и сбора информации для генерации кода.
Затем второй проход, зависящий от ЦП, сгенерировал фактический код, после чего оптимизатор, зависящий от ЦП, мог улучшить сгенерированный код.
Free Pascal 2 выполняет три прохода, постоянную оценку, сбор информации и высокоуровневую оптимизацию, а также генерацию кода.
Генератор кода был разделен на фронтенд и бэкенд. Дерево, постоянный проход, сбор информации и высокоуровневая генерация кода встроены в объектно-ориентированную структуру класса. Серверная часть, зависящая от ЦП, также реализована как класс, который необходимо переопределить для каждого ЦП. Зависящий от ЦП диспетчер параметров помогает генератору кода передавать параметры процедурам, ничего не зная о ЦП и используемом соглашении о вызовах.
Преимущество этой архитектуры заключается в том, что для переноса компилятора необходимо написать немного кода, зависящего от ЦП, одного может быть достаточно, реализуя серверную часть генератора кода, менеджер параметров и предоставляя правильную информацию другим частям компилятора.
Архитектура компилятора Free Pascal 2
Однако любую часть процесса генерации кода можно переопределить, чтобы воспользоваться специфическими для процессора трюками. Например, архитектура x86 имеет мощные режимы адресации, которые очень полезны для индексных массивов.
Чтобы воспользоваться этим преимуществом, x86-часть генератора кода переопределяет генерацию кода для индексации массива и генерирует инструкции, специфичные для x86.
Мы считаем, что, используя эту архитектуру, мы можем лучше использовать странные функции ЦП, чем при использовании более традиционного подхода с промежуточным кодом. Текущие процессоры, которые сильно выигрывают от этого, — это ARM и x86.
Наконец, в новой архитектуре используется новый распределитель регистров. Выполняя распределение регистров после генерации кода, компилятор может принимать гораздо более разумные решения о назначении регистров. Раньше при размещении регистров компилятор не знал, какой код будет следовать в будущем, и поэтому обычно помещал данные в неудобные места, поэтому для перемещения вещей приходилось генерировать дополнительный код.
Что касается библиотек, то на фронте Unix была проведена большая переработка, позволившая совместно использовать код между Unix, поэтому многие из них теперь поддерживаются.
Уже очень быстрый диспетчер кучи был переработан, чтобы лучше вести себя во многих менее распространенных ситуациях и поддерживать освобождение памяти обратно в операционную систему (важно для демонов).
5. Новые возможности
Lazarus — это инструмент RAD, аналогичный Delphi, который позволяет быстро разрабатывать приложения с графическим интерфейсом
Новому компилятору нужна не только новая архитектура, но и новые функции. Какие новости? Неудивительно, что было сделано много портов. Free Pascal 2 доступен для процессоров i386, x86_64, PowerPC/32, Sparc и ARM. Операционные системы уже включали Dos, Linux, Windows, OS/2 и FreeBSD. Теперь некоторые из них доступны на нескольких процессорах, а крупными новичками являются Novell Netware, Mac OS classic и Mac OS X.
Во-вторых, компилятор генерирует более качественный код, выполняет правильное встраивание и может использовать несколько соглашений о вызовах. Он имеет некоторые языковые дополнения, такие как синтаксический анализ 64-битных констант, интерфейсы, динамические массивы и многое другое.
Улучшен диспетчер кучи, и компилятор, и библиотека времени выполнения теперь могут выполнять многопоточность. Поддержка интернационализации поможет вам перевести ваше приложение, а широкие строки позволят также настроить таргетинг на эти языки со странными наборами символов. Совместимость с Delphi была значительно улучшена, и многие особенности эмулируются в специальном режиме Delphi. Программисты Apple будут довольны тем, что режим Mac Pascal реализует многие языковые функции Think Pascal и Metrowerks Pascal.
Хороший компилятор бесполезен без хороших библиотек, а доступно множество новых библиотек. Однако описание всех улучшений здесь потребовало бы отдельной длинной статьи.
6. Будущее
Что нас ждет в будущем? Теперь, когда основные архитектурные препятствия устранены, мы ожидаем быстрого прогресса в области оптимизации кода, которая все еще немного отстает по сравнению с другими компиляторами с открытым исходным кодом. Большие улучшения ожидаются за счет реализации статических одиночных переменных присваивания в дереве парсера, что значительно сэкономит объем данных, перемещаемых между временными местоположениями.

freepascal.org/docs.var [возврат]