stringtranslate.com

Объектный Паскаль

Object Pascal — это расширение языка программирования Pascal , которое предоставляет такие функции объектно-ориентированного программирования (ООП), как классы и методы .

Первоначально язык был разработан Apple Computer как Clascal для системы разработки Lisa Workshop. Когда Lisa уступила место Macintosh , Apple в сотрудничестве с Никлаусом Виртом , автором Паскаля, разработала официально стандартизированную версию 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 разработала библиотеку Think Class Library (TCL), основанную на концепциях MacApp, которую можно было вызывать как из Object Pascal, так и из THINK C. Пакет Think Suite в значительной степени вытеснил MPW в качестве основной платформы разработки для Mac в конце 1980-х годов.

Symantec перенесла Object Pascal на ПК и разработала аналогичную объектную структуру на этой платформе. В отличие от TCL, который со временем перешёл на C++, библиотеки ПК остались в основном основанными на Паскале.

Borland добавила поддержку объектно-ориентированного программирования в Turbo Pascal 5.5, которая в конечном итоге стала основой для диалекта Object Pascal, используемого в Delphi . Delphi оставался основным поставщиком бизнес-приложений на ПК в начале 2000-х годов и был частично вытеснен в 2000-х годах с появлением .NET Framework .

История

Apple Паскаль

Паскаль стал основным языком в мире программирования в 1970-х годах, его высококачественные реализации были реализованы на большинстве миникомпьютерных платформ и микрокомпьютеров . Среди последних была система UCSD Pascal , которая скомпилировалась в промежуточный формат кода p-System , который затем мог работать на нескольких платформах. Apple лицензировала UCSD и использовала его в качестве основы для своей системы Apple Pascal для Apple II и Apple III .

В этот период Паскаль стал одним из основных языков в компании. С стартом проекта Apple Lisa в качестве основного языка программирования платформы был выбран Паскаль, хотя на этот раз в качестве компилятора в отличие от интерпретатора p-System .

Clascal и ранний Object Pascal от Apple

Object Pascal — это расширение языка Pascal, разработанное в Apple Computer командой под руководством Ларри Теслера при консультации с Никлаусом Виртом , изобретателем Pascal. [2] Он произошел от более ранней объектно-ориентированной версии Паскаля под названием Clascal , которая была доступна на компьютере Lisa .

Object Pascal был необходим для поддержки MacApp , расширяемой среды приложений Macintosh, которую теперь будут называть библиотекой классов . Расширения Object Pascal и MacApp были разработаны Барри Хейнсом, Кеном Дойлом и Ларри Розенштейном и протестированы Дэном Алленом. Ларри Теслер курировал проект, который начался в самом начале 1985 года и стал продуктом в 1986 году.

Расширение Object Pascal также было реализовано в интегрированной среде разработки (IDE) Think Pascal. В состав IDE входят компилятор и редактор с подсветкой и проверкой синтаксиса, мощный отладчик и библиотека классов. [3] Многие разработчики предпочли 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++ и перенесен на эту платформу.

Metrowerks вместе с CodeWarrior предложил компилятор Object Pascal для Macintosh, предназначенный как для 68k , так и для PowerPC , как в их IDE, так и в качестве инструментов MPW. У разработчиков Macintosh, использующих Object Pascal, была возможность портировать эту архитектуру на PowerPC , даже после того, как Apple и Symantec прекратили поддержку. MacApp 2.0, написанный на Object Pascal, был портирован на PowerPC с помощью CodeWarrior . [4] [5]

Годы работы Borland, Inprise, CodeGear и Embarcadero

В 1986 году компания Borland представила аналогичные расширения, также названные Object Pascal, для продукта Turbo Pascal для Macintosh, а в 1989 году — для Turbo Pascal 5.5 для DOS. Когда в 1994 году компания Borland переориентировалась с DOS на Windows , они создали преемника Turbo Pascal под названием Delphi и представили новый набор расширений для создания того, что сейчас известно как язык Delphi.

Разработка Delphi началась в 1993 году, а Delphi 1.0 был официально выпущен в США 14 февраля 1995 года. Хотя код, использующий объектную модель Turbo Pascal, все еще можно было скомпилировать, в Delphi использовался новый синтаксис, в котором вместо ключевого слова class, objectконструктор Create использовался новый синтаксис. и виртуальный деструктор Destroy (и исключающий необходимость вызова процедур Newи Dispose), свойства, указатели методов и некоторые другие вещи. Они были вдохновлены рабочим проектом ISO для объектно-ориентированных расширений, но многие отличия от диалекта Turbo Pascal (например, требование проекта, чтобы все методы были виртуальными ) были проигнорированы.

Язык Delphi на протяжении многих лет продолжал развиваться, поддерживая такие конструкции, как динамические массивы , обобщенные методы и анонимные методы . Старый синтаксис объектов, представленный Apple («Типы объектов старого стиля»), по-прежнему поддерживается. [6]

Версии

Составители

Компиляторы Object Pascal доступны для широкого спектра операционных систем и архитектур.

Устаревшие продукты

Переводчики

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, способное обрабатывать разные сценарии на порт), а также возможность компилировать и защищать исходный код сценария. . [12]

Примеры программ «Hello World»

Вот несколько программ «Hello World» в разных версиях Object Pascal.

Apple-версия

программа ObjectPascalExample ;  введите THelloWorld = процедура объекта Put ; конец ;       вар HelloWorld : THelloWorld ;   процедура THelloWorld . Помещать ; начать ShowMessage ( 'Привет, мир!' ) ; конец ;    начать новый ( HelloWorld ) ; Привет, мир . Помещать ; Удалить ( HelloWorld ) ; конец .   

Версия Турбо Паскаля

По-прежнему поддерживается в Delphi и Free Pascal. FPC также упаковывает свои собственные заменители библиотек/модулей. Делфи нет. Серия Free Pascal 1.0 и текстовая среда разработки FPC являются крупнейшими открытыми базами кода на этом диалекте. Free Pascal 2.0 был переписан на диалекте, более похожем на Delphi, а текстовый режим IDE и связанные с ним платформы (Free Vision) являются единственными частями TP-версии Object Pascal.

Распределение на основе стека

программа ObjectPascalExample ;  введите THelloWorld = процедура объекта Put ; конец ;       процедура THelloWorld . Помещать ; начать WriteLn ( 'Привет, мир!' ) ; конец ;    вар HelloWorld : THelloWorld ; { выделяется в стеке и может использоваться без явного выделения. } начать HelloWorld . Помещать ; конец .    

Распределение на основе кучи

программа ObjectPascalExample ;  введите PHelloWorld = ^ THelloWorld ; THelloWorld = процедура объекта Put ; конец ;          процедура THelloWorld . Помещать ; начать WriteLn ( 'Привет, мир!' ) ; конец ;    вар HelloWorld : PHelloWorld ; { это типизированный указатель на THelloWorld }   начать новый ( HelloWorld ) ; Привет, мир ^. Помещать ; Удалить ( HelloWorld ) ; конец .   

Другой пример:

программа ObjectPascalExample ;  введите PHelloWorld = ^ THelloWorld ; THelloWorld = процедура объекта Put ; конец ;          процедура THelloWorld . Помещать ; начать WriteLn ( 'Привет, мир!' ) ; конец ;    вар 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 = процедура класса Put ; конец ;      процедура THelloWorld . Помещать ; начать Writeln ( «Привет, мир!» ) ; конец ;  вар HelloWorld : THelloWorld ; { это неявный указатель }   начать HelloWorld := THelloWorld . Создавать ; {конструктор возвращает указатель на объект типа THelloWorld } HelloWorld . Помещать ; Привет, мир . Бесплатно ; { эта строка освобождает объект THelloWorld, на который указывает HelloWorld } end .       

Обратите внимание, что конструкция объекта по-прежнему доступна в Delphi и Free Pascal.

Кислородная версия

пространство имен ObjectPascalExample ;  интерфейс введите ConsoleApp = класс метод класса Main ; конец ;        THelloWorld = метод класса Put ; конец ;      выполнение метод THelloWorld . Помещать ; начать консоль . WriteLine ( 'Привет, мир!' ) ; конец ;     метод класса ConsoleApp . Основной ; начать вар HelloWorld := новый THelloWorld ; Привет, мир . Помещать ; конец ;          конец .

Версия DWScript (Smart Pascal)

введите THelloWorld = процедура класса Put ; начать PrintLn ( 'Привет, мир!' ) ; конец конец ;         вар HelloWorld := THelloWorld . Создавать ; Привет, мир . Помещать ;   

Реализация метода также может быть выполнена в отдельном месте, как и в других диалектах Object Pascal.

Разработка

Многие функции постоянно добавлялись в Object Pascal с расширениями для Delphi и расширениями для FreePascal. В ответ на критику Free Pascal принял дженерики с тем же синтаксисом, что и Delphi, при условии, что выбран режим совместимости с Delphi, и как Delphi (частичный), так и Free Pascal (более расширенный) поддерживают перегрузку операторов . Начиная с версии 7, в Delphi также появилось множество других функций [13] , включая дженерики. Хотя FreePascal пытается быть совместимым с Delphi в режиме совместимости с Delphi, он также обычно вводит в язык множество новых функций, которые не всегда доступны в Delphi.

Рекомендации

  1. ^ Аб Гибсон, Стив (8 мая 1989 г.). «Borland и Microsoft выходят на объектно-ориентированное кольцо Паскаля». Инфомир . Том. 11, нет. 19. с. 28.
  2. ^ Теслер, Ларри (1985). «Отчет об Объектном Паскале». Структурированный языковой мир . 9 (3): 10–7.
  3. ^ Зейтер, Чарльз (ноябрь 1990 г.). «Думай, Паскаль 3». Макмир . Том. 7, нет. 11. с. 236.
  4. ^ Арнольд, Брайан; Маккарти, Гай (ноябрь 1995 г.). «MacApp Pascal снова едет». МакТех . Том. 11, нет. 11. С. 30–31.
  5. ^ Арнольд, Брайан (февраль 1996 г.). «MacApp 2 для PowerPC в Object Pascal». МакТех . Том. 12, нет. 2. С. 25–32.
  6. ^ Лишнер, Рэй (2000). Вкратце о Delphi: краткий справочник по настольному компьютеру (1-е изд.). Севастополь, Калифорния: О'Рейли и партнеры. ISBN 1565926595.
  7. ^ Письмо сообщества: Embarcadero Technologies соглашается приобрести CodeGear у Borland. Edn.embarcadero.com. Проверено 21 июля 2013 г.
  8. ^ «Разработка iPhone/iPod» . Команда разработчиков Free Pascal . Проверено 13 апреля 2009 г.
  9. ^ Умная книга. Линпаб. 18 мая 2012 г.
  10. ^ Фуна, Игорь (2021). «Turbo51: Компилятор Turbo Pascal для микроконтроллеров 8051». Архивировано из оригинала 25 сентября 2018 г.
  11. ^ Дракслер, Вольфганг. «WDSibyl: среда визуальной разработки». Архивировано из оригинала 12 февраля 2020 г.
  12. ^ «Современный Паскаль».
  13. ^ «Новые возможности языка Delphi начиная с Delphi 7» . КодГир . Проверено 6 июля 2008 г.

Внешние ссылки

Дельфи