Эта статья требует дополнительных ссылок для проверки . ( май 2019 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Парадигмы | Императивный , структурированный , объектно-ориентированный , функциональный (только на диалекте Delphi), компонентный , событийно-ориентированный , общий |
---|---|
Семья | Вирт Паскаль |
Разработано | Ларри Теслер (Apple), Никлаус Вирт (для Apple), Андерс Хейлсберг (Borland) [1] |
Разработчики | Apple Computer (начальный) Borland International [1] |
Впервые появился | 1986 |
Печатная дисциплина | Статический и динамический (динамическая типизация через варианты, массив констант и RTTI ), сильный , безопасный |
Объем | Лексический (статический) |
Платформа | ARM , x86 , PowerPC , ppc64 , SPARC , MIPS , CLI , Java , Какао |
Расширения имени файла | .p , .pp ,.pas |
Основные реализации | |
Delphi ( x86 , ARM ), Free Pascal ( x86 , PowerPC , ppc64 , SPARC , MIPS , ARM ), Oxygene ( CLI , Java , Native Cocoa ), Smart Mobile Studio ( JavaScript ) | |
Диалекты | |
Apple, Turbo Pascal , Free Pascal (с использованием режима objfpc или delphi ), Delphi , Delphi.NET, Delphi Web Script, Oxygene | |
Под влиянием | |
Паскаль , Симула , Smalltalk | |
Под влиянием | |
C # , Genie , Java , Nim , C / AL |
Object Pascal - это расширение языка программирования Pascal, которое предоставляет функции объектно-ориентированного программирования (ООП), такие как классы и методы .
Язык был первоначально разработан Apple Computer как Clascal для системы разработки Lisa Workshop. Когда Лиза уступила место Macintosh , Apple вместе с Никлаусом Виртом , автором Pascal, разработали официально стандартизированную версию Clascal. Он был переименован в Object Pascal. В середине 1980-х Object Pascal был основным языком программирования для ранних версий платформы приложений MacApp . Этот язык потерял свое место в качестве основного языка разработки на Mac в 1991 году с выпуском MacApp 3.0 на основе C ++ . Официальная поддержка закончилась в 1996 году.
Symantec также разработала компилятор для Object Pascal для своего продукта Think Pascal, который может компилировать программы намного быстрее, чем собственный Macintosh Programmer's Workshop (MPW) Apple . Symantec затем разработали Подумайте Class Library (TCL), основанный на концепциях МасАрр, которые можно было бы назвать как из Object Pascal и думать , C . Пакет Think в конце 1980-х годов в значительной степени вытеснил MPW в качестве основной платформы разработки на Mac.
Symantec перенесла Object Pascal на ПК и разработала аналогичную объектную среду на этой платформе. В отличие от TCL, который со временем перешел на C ++, библиотеки для ПК остались в основном основанными на Паскале.
Borland добавила поддержку объектно-ориентированного программирования в Turbo Pascal 5.5, который в конечном итоге стал основой для диалекта Object Pascal, используемого в Delphi . Delphi оставался основным продуктом для бизнес-приложений на ПК в начале 2000-х годов и был частично вытеснен в 2000-х с появлением .NET Framework .
История [ править ]
Apple Pascal [ править ]
Паскаль стал основным языком программирования в 1970-х годах с высококачественными реализациями на большинстве миникомпьютерных платформ и микрокомпьютеров . Среди последних была система UCSD Pascal , которая была скомпилирована в промежуточный формат кода p-System , который затем мог работать на нескольких платформах. Apple лицензировала UCSD и использовала его в качестве основы для своей системы Apple Pascal для Apple II и Apple III .
В этот период Паскаль стал одним из основных языков в компании. С началом проекта Apple Lisa в качестве основного языка программирования платформы был выбран Паскаль, хотя на этот раз в качестве компилятора в отличие от интерпретатора p-System .
Класкаль и ранний Object Pascal от Apple [ править ]
Object Pascal - это расширение языка Pascal, которое было разработано в Apple Computer командой под руководством Ларри Теслера при консультации с Никлаусом Виртом , изобретателем Паскаля. [2] Он происходит от более ранней объектно-ориентированной версии Паскаля под названием Clascal , которая была доступна на компьютере Lisa .
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 на архитектуру IBM PowerPC . MacApp 3.0 для этой платформы был переписан на C ++ .
Годы Borland, 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 году, а 14 февраля 1995 года в США был официально выпущен Delphi 1.0. Хотя код, использующий объектную модель Turbo Pascal, все еще можно было скомпилировать, Delphi представила новый синтаксис с использованием ключевого слова class
вместо object
конструктора Create. и виртуальный деструктор Destroy (и отрицание того , чтобы вызвать New
и Dispose
процедуру), свойство, метод указатели, и некоторые другие вещи. Они были вдохновлены рабочим проектом ISO для объектно-ориентированных расширений, но многие отличия от диалекта Turbo Pascal (например, требование проекта, чтобы все методы были виртуальными ) были проигнорированы.
Язык Delphi продолжал развиваться на протяжении многих лет для поддержки таких конструкций, как динамические массивы , универсальные шаблоны и анонимные методы . Старый синтаксис объектов, представленный Apple («Типы объектов старого стиля»), по-прежнему поддерживается. [3]
Версии [ править ]
- Borland использовал имя Object Pascal для языка программирования в первых версиях, но позже переименовал его в Delphi . Компиляторы , претендующие на совместимость с Object Pascal, часто пытаются быть совместимыми с исходным кодом Delphi . [ необходима цитата ] Поскольку Delphi является товарным знаком , совместимые компиляторы продолжают использовать имя Object Pascal .
- Embarcadero Technologies , который приобрел Delphi в 2008 году [4] продает Delphi интегрированную среду разработки (IDE) , которая компилирует Delphi диалекте Object Pascal для Windows , и MacOS , прошивкой , Android и Web.
- Поддержка .NET существовала от Delphi 8 до Delphi 2005, 2006 и 2007, который теперь был заменен другим языком, Oxygene (см. Ниже), который не является полностью обратно совместимым.
- Oxygene язык , разработанный RemObjects Software нацелена на инфраструктуре общего языка , то Java (программная платформа) исполнительная среда и Apple , «s какао рамка для прошивки и MacOS .
- Проект Free Pascal с открытым исходным кодом позволяет компилировать язык для широкого спектра операционных систем , включая Linux ( 32-бит , 64-бит ), FreeBSD , Classic Mac OS , macOS , Solaris , Windows API (32, 64, CE ), архитектуру набора инструкций ARM (ISA) и несколько других аппаратных архитектур. Первая версия Free Pascal для комплекта разработки программного обеспечения (SDK) 2. x для iPhone была анонсирована 17 января 2009 г. [5]
- Язык Smart Pascal [6] нацелен на 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. - MIDletPascal работает на платформе байт-кода виртуальной машины Java (JVM) ; на который также нацелен Free Pascal, с гораздо большим количеством функций.
- Язык Morfik Pascal, разработанный Morfik, нацелен на веб-приложения с поддержкой Ajax . Компилятор встроен в IDE компании AppsBuilder и позволяет использовать код Object Pascal для реализации кода, выполняемого в браузере или на сервере. Он использует компилятор Free Pascal для создания собственных двоичных файлов из Object Pascal.
- Компилятор GNU Pascal с открытым исходным кодом доступен в качестве внешнего интерфейса для GNU Compiler Collection , которая реализует стандарт Pascal 7185 Международной организации по стандартизации (ISO) и большую часть стандарта ISO 10206 Extended Pascal.
- Turbo51 - это бесплатный компилятор для программирования микросхем Intel 8051 . [7]
- WDSibyl - это Delphi-подобная IDE с открытым исходным кодом и компилятор, доступная для Microsoft Windows и OS / 2 , [8] и коммерческая среда, совместимая с Turbo Pascal, выпущенная компанией Speedsoft, которая позже была разработана в Delphi-подобную среду RAD под названием Sybil. , а затем открывать исходный код под лицензией GPL после закрытия этой компании. Вольфганг Дракслер (WD) теперь поддерживает программное обеспечение. Используемый компилятор, похоже, находится в DLL и не является открытым исходным кодом.
Компиляторы [ править ]
Компиляторы Object Pascal доступны для широкого диапазона операционных систем и архитектур.
- Delphi , вероятно, самый известный компилятор. Это преемник очень успешной линейки продуктов Borland Pascal и Turbo Pascal . Он нацелен на Windows 9x , семейство 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 с открытым исходным кодом, который поддерживает множество диалектов Паскаля, включая 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 ), хотя формально не нацелен на диалект 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 .
- MIDletPascal - это инструмент разработки мобильных приложений, который генерирует байт-код Java ME .
- PocketStudio - это интегрированная среда разработки (IDE) на основе Pascal для Palm OS .
- Smart Mobile Studio - это компилятор, который преобразует исходный код Pascal в JavaScript.
- Ultibo.org - это бесплатный вариант паскаль, который компилируется на «голое» оборудование Raspberry Pi .
Устаревшие продукты [ править ]
- Borland Kylix был вариантом Delphi для Linux, который нацелен только на 32-разрядную версию Intel Linux с использованием библиотеки 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) - это интерпретаторы Object Pascal с открытым исходным кодом и механизмы сценариев, написанные на Delphi. Они поддерживают подмножества Object Pascal. DWScript также может компилировать код Object Pascal в код JavaScript (Smart Pascal) и поддерживает своевременную компиляцию (JIT). Modern Pascal предоставляет 3 разных интерпретатора: интерфейс командной строки (CLI), модуль Apache (Celerity) и CodeRunner (например, node.js решение, способное обрабатывать разные сценарии для каждого порта), помимо возможности компилировать и защищать исходный код сценария. . [9]
Примеры программ "Hello World" [ править ]
В этом разделе не процитировать любые источники . Июнь 2013 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
Вот несколько программ "Hello World" в разных версиях Object Pascal.
Версия Apple [ править ]
программа ObjectPascalExample ; тип THelloWorld = объект процедуры Put ; конец ; var HelloWorld : THelloWorld ; процедура THelloWorld . Положите ; begin ShowMessage ( 'Привет, мир!' ) ; конец ;begin New ( HelloWorld ) ; HelloWorld . Положите ; Утилизировать ( HelloWorld ) ; конец .
Версия Turbo Pascal [ править ]
По-прежнему поддерживается в Delphi и Free Pascal. FPC также упаковывает собственные заменители библиотек / модулей. Delphi этого не делает. Серия Free Pascal 1.0 и IDE текстового режима FPC являются крупнейшими открытыми кодовыми базами на этом диалекте. Free Pascal 2.0 был переписан на диалекте, более похожем на Delphi, а IDE текстового режима и связанные с ним фреймворки (Free Vision) являются единственными частями TP-версии Object Pascal.
Распределение на основе стека [ править ]
программа ObjectPascalExample ; тип THelloWorld = объект процедуры Put ; конец ; процедура THelloWorld . Положите ; begin WriteLn ( 'Привет, мир!' ) ; конец ;var HelloWorld : THelloWorld ; {размещается в стеке и может использоваться без явного выделения. } начать HelloWorld . Положите ; конец .
Распределение на основе кучи [ править ]
программа ObjectPascalExample ; введите PHelloWorld = ^ THelloWorld ; THelloWorld = объект процедуры Put ; конец ; процедура THelloWorld . Положите ; begin WriteLn ( 'Привет, мир!' ) ; конец ;var HelloWorld : PHelloWorld ; {это типизированный указатель на THelloWorld}begin New ( HelloWorld ) ; HelloWorld ^. Положите ; Утилизировать ( HelloWorld ) ; конец .
Другой пример:
программа ObjectPascalExample ; введите PHelloWorld = ^ THelloWorld ; THelloWorld = объект процедуры Put ; конец ; процедура THelloWorld . Положите ; begin WriteLn ( 'Привет, мир!' ) ; конец ;var HelloWorld : PHelloWorld ; {это типизированный указатель на THelloWorld} HelloWorld2 : ^ THelloWorld ; {точно так же, но с другим синтаксисом} HelloWorld3 : ^ THelloWorld ; HelloWorld4 : PHelloWorld ; begin {Это работает аналогично приведенному выше коду, обратите внимание на выделение и отмену выделения, хотя многие люди путаются. Раньше здесь был неправильный пример с неправильными комментариями ...} Новый ( HelloWorld ) ; {один экземпляр} HelloWorld4 : = HelloWorld ; {это действительно - копия указателя} HelloWorld2 : = HelloWorld ; {это действительно - копия указателя} New ( HelloWorld3 ) ; {второй экземпляр} HelloWorld4 : = HelloWorld3 ; {это действительно - копия указателя} HelloWorld2 : = HelloWorld3 ; {это действительно - копия указателя} Dispose ( HelloWorld ) ; {выделяет только два экземпляра} Dispose ( HelloWorld3 ) ; {поэтому он должен выпустить только два экземпляра} end .
Это работает на основе копии указателя, если нет специального выделения для более глубокой копии.
Версия Delphi и Free Pascal [ править ]
программа ObjectPascalExample ;тип THelloWorld = class procedure Put ; конец ;процедура THelloWorld . Положите ; begin Writeln ( 'Привет, мир!' ) ; конец ;var HelloWorld : THelloWorld ; {это неявный указатель}begin HelloWorld : = THelloWorld . Создать ; {конструктор возвращает указатель на объект типа THelloWorld} HelloWorld . Положите ; HelloWorld . Бесплатно ; {эта строка освобождает объект THelloWorld, на который указывает HelloWorld} end .
Обратите внимание, что конструкция объекта по-прежнему доступна в Delphi и Free Pascal.
Версия Modern Pascal [ править ]
программа ObjectPascalExample ;тип THelloWorld = класс Put : процедура из объекта ; конец ;процедура THelloWorld . Положите ; begin Writeln ( 'Привет, мир!' ) ; конец ;процедура THelloWorld . Бесплатно ; begin // удаляем любые указатели // end ;процедура THelloWorld . Init ; begin // инициализация переменных // методы связывания (ручное RTTI) с помощью Self do begin TMethod ( @ Put ) : = [ @ THelloWorld . Положите , @ Self ] ; TMethod ( @ Free ) : = [ @ THelloWorld . Бесплатно , @ Self ] ; Конец ; конец ;var HelloWorld : THelloWorld ; {это неявный указатель}начать HelloWorld . Init ; {самоинициализация (указатель на объект) типа THelloWorld} HelloWorld . Положите ; HelloWorld . Бесплатно ; {эта строка освобождает объект THelloWorld, на который указывает HelloWorld} end .
Версия Oxygene [ править ]
пространство имен ObjectPascalExample ; интерфейс тип ConsoleApp = класс class method Main ; конец ; THelloWorld = метод класса Put ; конец ; выполнение метод THelloWorld . Положите ; начать консоль . WriteLine ( 'Привет, мир!' ) ; конец ; метод класса ConsoleApp . Главный ; begin var HelloWorld : = новый THelloWorld ; HelloWorld . Положите ; конец ;конец .
Версия DWScript (Smart Pascal) [ править ]
тип THelloWorld = class procedure Put ; begin PrintLn ( 'Привет, мир!' ) ; конец конец ;var HelloWorld : = THelloWorld . Создать ; HelloWorld . Положите ;
Реализация метода также может быть выполнена в другом месте, как в других диалектах Object Pascal.
Развитие [ править ]
Многие функции постоянно добавляются в Object Pascal с расширениями Delphi и FreePascal. В ответ на критику Free Pascal принял универсальные шаблоны с тем же синтаксисом, что и Delphi, при условии, что выбран режим совместимости с Delphi, и как Delphi (частичная), так и Free Pascal (более обширная) поддерживают перегрузку операторов . Начиная с версии 7 [10], Delphi также представила множество других функций, включая универсальные. В то время как FreePascal пытается быть совместимым с Delphi в режиме совместимости с Delphi, он также обычно вводит в язык много новых функций, которые не всегда доступны в Delphi.
Ссылки [ править ]
- ^ a b Гибсон, Стив (8 мая 1989 г.). «Borland и Microsoft входят в объектно-ориентированное кольцо Паскаля». InfoWorld . п. 28.
- ^ Теслер, Ларри (1985). «Отчет Object Pascal». Структурированный языковой мир . 9 (3): 10–7.
- ^ Lischner, Ray (2000). В двух словах о Delphi: краткий справочник по настольному компьютеру (1-е изд.). Севастополь, Калифорния: O'Reilly and Associates. ISBN 1565926595.
- ^ Письмо сообщества: Embarcadero Technologies соглашается приобрести CodeGear у Borland . Edn.embarcadero.com. Проверено 21 июля 2013.
- ^ «Разработка iPhone / iPod» . Команда разработчиков Free Pascal . Проверено 13 апреля 2009 .
- ^ «Умная книга» .
- ^ Фун, Игорь (2021). «Turbo51: компилятор Turbo Pascal для микроконтроллеров 8051» . Архивировано 25 сентября 2018 года.
- ^ Дракслер, Вольфганг. «WDSibyl: среда визуальной разработки» . Архивировано 12 февраля 2020 года.
- ^ "Современный Паскаль" .
- ^ «Новые возможности языка Delphi начиная с Delphi 7» . CodeGear . Проверено 6 июля 2008 .
Внешние ссылки [ править ]
- Введение в Object Pascal , MacTech, том 2, выпуск 12, 1985 г.
- Справочное руководство по Object Pascal для Free Pascal. «Цель состоит в том, чтобы перечислить, какие конструкции Паскаля поддерживаются, и показать, чем реализация Free Pascal отличается от реализаций Turbo Pascal или Delphi».
- Free Pascal: Справочное руководство , Справочное руководство для Free Pascal, версия 2.0.0
- Основные различия между синтаксисом C ++ и Object Pascal
- Think Pascal 4.5 Неофициальная страница последней версии Think Pascal от Symantec.
Delphi [ править ]
- Руководство по языку Object Pascal, охватывающее Borland Delphi 6-7
- Основы Delphi , Ресурс исходных кодов проекта Delphi.
- Delphi-Help - первая помощь программисту на Delphi
- Программирование Delphi , Ресурсы по программированию Delphi и форумы по программированию Delphi.