Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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" [ править ]

Вот несколько программ "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.

Ссылки [ править ]

  1. ^ a b Гибсон, Стив (8 мая 1989 г.). «Borland и Microsoft входят в объектно-ориентированное кольцо Паскаля». InfoWorld . п. 28.
  2. ^ Теслер, Ларри (1985). «Отчет Object Pascal». Структурированный языковой мир . 9 (3): 10–7.
  3. ^ Lischner, Ray (2000). В двух словах о Delphi: краткий справочник по настольному компьютеру (1-е изд.). Севастополь, Калифорния: O'Reilly and Associates. ISBN 1565926595.
  4. ^ Письмо сообщества: Embarcadero Technologies соглашается приобрести CodeGear у Borland . Edn.embarcadero.com. Проверено 21 июля 2013.
  5. ^ «Разработка iPhone / iPod» . Команда разработчиков Free Pascal . Проверено 13 апреля 2009 .
  6. ^ «Умная книга» .
  7. ^ Фун, Игорь (2021). «Turbo51: компилятор Turbo Pascal для микроконтроллеров 8051» . Архивировано 25 сентября 2018 года.
  8. ^ Дракслер, Вольфганг. «WDSibyl: среда визуальной разработки» . Архивировано 12 февраля 2020 года.
  9. ^ "Современный Паскаль" .
  10. ^ «Новые возможности языка 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.