Введение
Ветвь объектно-ориентированных производных языка программирования Pascal. Object Pascal был необходим для поддержки MacApp – расширяемой платформы для приложений Macintosh, которую сейчас можно назвать библиотекой классов. Расширения Object Pascal и MacApp были разработаны Барри Хейнсом, Кеном Дойлом и Ларри Розенштейном, а протестированы Дэном Алленом. Ларри Теслер руководил проектом, который начался в начале 1985 года и стал продуктом в 1986 году. Расширение Object Pascal также было реализовано в интегрированной среде разработки Think Pascal (IDE). IDE включала в себя компилятор и редактор с подсветкой и проверкой синтаксиса, мощный отладчик и библиотеку классов. Многие разработчики предпочитали Think Pascal реализации Object Pascal от Apple, поскольку Think Pascal предлагал значительно более быстрый цикл компиляции, компоновки и отладки, а также тесную интеграцию инструментов. Последним официальным релизом Think Pascal была версия 4.01, выпущенная в 1992 году. Позже Symantec выпустила неофициальную версию 4.5d4 бесплатно. Apple прекратила поддержку Object Pascal, когда в 1994 году перешла с процессоров Motorola 68000 на архитектуру PowerPC от IBM. MacApp 3.0 к тому времени уже был переписан на C++ и портирован на эту платформу. Metrowerks предлагала компилятор Object Pascal для Macintosh в составе CodeWarrior, который поддерживал как 68k, так и PowerPC, как в своей IDE, так и в виде инструментов MPW. Разработчики Macintosh, использующие Object Pascal, получили возможность портировать свои приложения на PowerPC даже после прекращения поддержки со стороны Apple и Symantec. MacApp 2.0, написанный на Object Pascal, был портирован на PowerPC с помощью CodeWarrior.
Object Pascal was needed to support MacApp, an expandable Macintosh application framework that would now be termed a class library. Object Pascal extensions, and MacApp, were developed by Barry Haynes, Ken Doyle, and Larry Rosenstein, and were tested by Dan Allen. Larry Tesler oversaw the project, which began very early in 1985 and became a product in 1986. An Object Pascal extension was also implemented in the Think Pascal integrated development environment (IDE). The IDE includes the compiler and an editor with syntax highlighting and checking, a powerful debugger, and a class library. Many developers preferred Think Pascal over Apple's implementation of Object Pascal because Think Pascal offered a much faster compile–link–debug cycle, and tight integration of its tools. The last official release of Think Pascal was 4.01, in 1992. Symantec later released an unofficial version 4.5d4 at no charge. Apple dropped support for Object Pascal when they moved from Motorola 68000 series chips to IBM's PowerPC architecture in 1994. MacApp 3.0, had already been rewritten in C++ and ported to this platform. Metrowerks offered with CodeWarrior an Object Pascal compiler for Macintosh that targeted both 68k and PowerPC, both in their IDE and as MPW tools. Macintosh developers using Object Pascal had a path to port to the PowerPC, even architecture after both Apple and Symantec dropped support. MacApp 2.0, written in Object Pascal, was ported to the PowerPC using CodeWarrior.
Борланд, Inprise, CodeGear и Embarcadero годы
В 1986 году Borland представил аналогичные расширения, также названные Object Pascal, для продукта Turbo Pascal для Macintosh, а в 1989 году – для Turbo Pascal 5.5 для DOS. Когда Borland переориентировался с DOS на Windows в 1994 году, компания создала преемника Turbo Pascal, названного Delphi, и представила новый набор расширений, сформировавший современный язык Delphi. Разработка Delphi началась в 1993 году, а Delphi 1.0 был официально выпущен в США 14 февраля 1995 года. Хотя код, использующий объектную модель Turbo Pascal, оставался компилируемым, Delphi представил новый синтаксис с использованием ключевого слова `class` вместо `object`, конструктора `Create` и виртуального деструктора `Destroy` (что избавляло от необходимости вызова процедур `New` и `Dispose`), свойств, указателей на методы и других возможностей. Эти нововведения были вдохновлены рабочим проектом ISO для объектно-ориентированных расширений, однако многие отличия от диалекта Turbo Pascal (например, требование проекта о том, что все методы должны быть виртуальными) были проигнорированы. Язык Delphi продолжал развиваться с годами, добавляя поддержку таких конструкций, как динамические массивы, обобщения (generics) и анонимные методы. Старый синтаксис объектов, представленный Apple ("Типы объектов старого стиля"), по-прежнему поддерживается.
Версии
Борланд использовал имя Object Pascal для языка программирования в первых версиях, но позже переименовал его в Delphi. Компиляторы, заявляющие о совместимости с Object Pascal, часто стремятся к совместимости с исходным кодом Delphi. Поскольку Delphi является товарным знаком, совместимые компиляторы продолжают использовать имя Object Pascal. Embarcadero Technologies, приобретшая Delphi в 2008 году, продает интегрированную среду разработки (IDE) Delphi, которая компилирует диалект Object Pascal для Windows и macOS, iOS, Android и Web. Поддержка .NET существовала в Delphi 8, а также в версиях 2005, 2006 и 2007, и теперь заменена другим языком, Oxygene (см. ниже), который не обеспечивает полной обратной совместимости. Язык Oxygene, разработанный RemObjects Software, ориентирован на Common Language Infrastructure, среду выполнения Java и фреймворки Apple Cocoa для iOS и macOS. Проект Free Pascal с открытым исходным кодом позволяет компилировать язык для широкого спектра операционных систем, включая Linux (32-разрядная, 64-разрядная), FreeBSD, Classic Mac OS, macOS, Solaris, Windows API (32, 64, CE), архитектуру набора команд ARM (ISA) и ряд других аппаратных архитектур. Первая версия Free Pascal для iPhone SDK 2.x была анонсирована 17 января 2009 года. Язык Smart Pascal ориентирован на ECMAScript–JavaScript и используется в Smart Mobile Studio, разработанной Джоном Леннартом Аасенденом и опубликованной Optimale Systemer (2012). Язык значительно упрощает разработку HTML5 благодаря объектно-ориентированным и методам быстрой разработки приложений (RAD). Smart Pascal тесно интегрируется с устоявшимися технологиями, такими как Node.js, Embarcadero DataSnap и Remobjects SDK, для создания высокопроизводительных веб-приложений клиент-серверной архитектуры. Язык позволяет легко создавать визуальные компоненты и многократно используемые библиотеки. Диалект Smart Pascal произошел от языка DWScript, расширенного для лучшей интеграции со средой и библиотеками JavaScript, таких как секции asm, представляющие собой обычный JavaScript, но имеющие доступ к символам Pascal, или внешние классы, которые напрямую отображаются на прототипные классы JavaScript. Smart Pascal вводит истинное наследование, классы, частичные классы, интерфейсы, виртуальную таблицу методов и многие другие продвинутые конструкции, которые по умолчанию не являются частью JavaScript. Язык Morfik Pascal, разработанный Morfik, предназначен для веб-приложений с поддержкой Ajax. Компилятор встроен в IDE AppsBuilder компании и позволяет использовать код Object Pascal для реализации кода, выполняемого в браузере или на сервере. Он использует компилятор Free Pascal для генерации нативных двоичных файлов из Object Pascal. Компилятор GNU Pascal с открытым исходным кодом доступен как фронтенд для GNU Compiler Collection, который реализует стандарт ISO 7185 Pascal и большую часть стандарта ISO 10206 Extended Pascal. Turbo51 — бесплатный компилятор для программирования микросхем Intel 8051. WDSibyl — это IDE, подобная Delphi, с открытым исходным кодом, доступная для Microsoft Windows и OS/2, и является коммерческой средой, совместимой с Turbo Pascal, выпущенной компанией Speedsoft, которая позже была развита в RAD-среду, подобную Delphi, под названием Sybil, а затем стала открытой под лицензией GPL после закрытия компании. В настоящее время программное обеспечение поддерживается Вольфгангом Дракслером (WD). Используемый компилятор, по всей видимости, находится в DLL и не является открытым исходным кодом.
Компиляторы
Компиляторы Object Pascal доступны для широкого спектра операционных систем и архитектур. Delphi – вероятно, самый известный из них. Он является преемником весьма успешных продуктов Borland Pascal и Turbo Pascal. Он предназначен для Windows 9x (Delphi 2007 и более ранних версий), семейства Windows NT, .NET Framework (Delphi 8, 2005, 2007), macOS (Delphi XE2 и более поздние версии), iOS (Delphi XE2 и более поздние версии, генерирующие нативные двоичные файлы начиная с XE4), Android (Delphi XE5 и более поздние версии, генерирующие нативные двоичные файлы начиная с XE5). Поддержка .NET в итоге выделилась в отдельный продукт, известный как Oxygene (см. ниже). Free Pascal Compiler (FPC) – это компилятор Object Pascal с открытым исходным кодом, поддерживающий множество диалектов Pascal, включая Turbo Pascal 7, Delphi и другие. В настоящее время FPC может генерировать код для процессоров IA-32, x86-64, PowerPC, SPARC и ARM, а также для различных операционных систем, таких как Microsoft Windows, Linux, FreeBSD, Classic Mac OS и macOS (с комплектом интеграции Xcode). Существует несколько отдельных проектов, облегчающих быструю разработку приложений с использованием FPC, наиболее заметным из которых является Lazarus (IDE). GNU Pascal (отдельно распространяемая часть GNU Compiler Collection), хотя и не ориентирован непосредственно на диалект Delphi Pascal, включает режим совместимости с Turbo Pascal и очень медленно добавляет некоторые возможности языка Delphi. Он не подходит для прямой перекомпиляции больших объемов кода Delphi, но отличается широкой поддержкой операционных систем и аппаратных архитектур. Oxygene (ранее Chrome) – это компилятор Object Pascal от RemObjects Software, который интегрируется с Microsoft Visual Studio. Он также доступен как бесплатный компилятор с интерфейсом командной строки, работающий на платформе CLI. Это три компилятора в одном, каждый из которых предназначен для своей платформы: Echoes для .NET Framework, Mono, WinRT и Windows Phone 8, Cooper для JDK и Android, и Nougat для iOS и macOS.
Продукты наследия
Borland Kylix был Linux-версией Delphi, предназначенной исключительно для 32-битной Linux на архитектуре Intel с использованием библиотеки Qt. Он не работает "из коробки" с большинством современных дистрибутивов Linux. Virtual Pascal был бесплатным 32-битным компилятором, совместимым с Turbo Pascal и Delphi, в основном для OS/2 и Microsoft Windows. Позже для него был разработан DOS+ Extender и экспериментальный кросс-компилятор для Linux. Разработка компилятора остановилась примерно на уровне Delphi 2. В 2007 году его официальный сайт перестал функционировать, и дальнейшая разработка была прекращена.
Переводчики
Pascal Script (ранее InnerFuse) и DWScript (Delphi Web Script) — это интерпретаторы и движки сценариев с открытым исходным кодом, написанные на Delphi. Они поддерживают подмножества Object Pascal. DWScript также может компилировать код Object Pascal в код JavaScript (Smart Pascal) и поддерживает JIT-компиляцию (компиляцию в реальном времени). Современный Pascal предоставляет 3 различных интерпретатора: интерфейс командной строки (CLI), модуль Apache (Celerity) и CodeRunner (решение, подобное Node.js, способное обрабатывать различные скрипты для каждого порта), а также возможность компилировать и защищать исходный код скриптов.
Образцы программ "Привет, мир"
Вот несколько программ "Hello, World!" в различных версиях Object Pascal.
Версия Turbo Pascal
Все еще поддерживается в Delphi и Free Pascal. FPC также поставляет собственные аналоги библиотек/модулей. Delphi этого не делает. Серия Free Pascal 1.0 и текстовый IDE FPC – крупнейшие открытые кодовые базы, использующие этот диалект. Free Pascal 2.0 был переписан на диалект, более близкий к Delphi, и текстовый IDE и связанные с ним фреймворки (Free Vision) – единственные части, сохранившиеся в версии TP Object Pascal.
Разработка
В Object Pascal постоянно добавлялись новые возможности благодаря расширениям для Delphi и Free Pascal. В ответ на критику, Free Pascal внедрил обобщения (generics) с тем же синтаксисом, что и Delphi, при условии выбора режима совместимости с Delphi, и как Delphi (частично), так и Free Pascal (в большем объеме) поддерживают перегрузку операторов. Delphi также представил множество других возможностей, начиная с версии 7, включая обобщения. В то время как Free Pascal стремится к совместимости с Delphi в режиме совместимости с Delphi, он также обычно добавляет в язык множество новых функций, которые не всегда доступны в Delphi.