Объектный Паскаль
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2019 г. ) |
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 также разработала компилятор (MPW) от Apple Object Pascal для своего продукта Think Pascal, который мог компилировать программы намного быстрее, чем собственный Macintosh Programmer's Workshop . Затем 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 Хейлсберга , которая включала C# .
История [ править ]
Эппл Паскаль [ править ]
Паскаль стал основным языком в мире программирования в 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]
, CodeGear и Borland, Inprise Годы 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]
Версии [ править ]
- В первых версиях Borland название Object Pascal использовала для языка программирования , но позже переименовала его в Delphi . Компиляторы , заявляющие о своей совместимости с Object Pascal, часто пытаются быть совместимыми с исходным кодом Delphi . [ нужна ссылка ] Поскольку Delphi является торговой маркой , совместимые компиляторы продолжают использовать имя Object Pascal .
- Embarcadero Technologies , купившая Delphi в 2008 году, [7] продает Delphi интегрированную среду разработки (IDE), которая компилирует диалект Delphi Object Pascal для Windows и macOS , iOS , Android и Интернета.
- Поддержка .NET существовала с Delphi 8 до Delphi 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 года. [8]
- Язык Паскаль Смарт [9] ориентирован на 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 . Компилятор встроен в среду разработки AppsBuilder компании и позволяет использовать код Object Pascal для реализации кода, выполняемого в браузере или на сервере. Он использует компилятор Free Pascal для создания собственных двоичных файлов из Object Pascal.
- с открытым исходным кодом Компилятор GNU Pascal доступен в качестве внешнего интерфейса к коллекции компиляторов GNU , которая реализует стандарт Pascal Международной организации по стандартизации (ISO) 7185 и большую часть стандарта ISO 10206 Extended Pascal.
- Turbo51 — бесплатный компилятор для программирования чипов Intel 8051 . [10]
- WDSibyl — это Delphi-подобная среда разработки и компилятор с открытым исходным кодом, доступная для Microsoft Windows и OS/2 . [11] и представляет собой коммерческую среду, совместимую с Turbo Pascal, выпущенную компанией Speedsoft, которая позже была развита в Delphi-подобную среду RAD под названием 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 ), хотя формально и не нацелен на диалект 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 представлял собой вариант Delphi для Linux , предназначенный только для 32-разрядной версии Linux Intel с использованием библиотеки Qt . Он не работает «из коробки» с большинством современных дистрибутивов Linux.
- Virtual Pascal представлял собой бесплатный 32-битный компилятор Turbo Pascal и Delphi, совместимый в основном с OS/2 и Microsoft Windows. Позже он также получил расширитель DOS+ и экспериментальный кросс-компилятор Linux. Развитие компилятора остановилось примерно на уровне Delphi 2. В 2007 году его официальный сайт прекратил работу, и дальнейшее развитие прекратилось.
Переводчики [ править ]
Pascal Script (ранее InnerFuse ) и DWScript Object Pascal с открытым исходным кодом (Delphi Web Script) — это интерпретаторы и механизмы сценариев, написанные на 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 [ править ]
program ObjectPascalExample;
type
THelloWorld = object
procedure Put;
end;
var
HelloWorld: THelloWorld;
procedure THelloWorld.Put;
begin
ShowMessage('Hello, World!');
end;
begin
New(HelloWorld);
HelloWorld.Put;
Dispose(HelloWorld);
end.
Версия Turbo Pascal [ править ]
По-прежнему поддерживается в Delphi и Free Pascal. FPC также упаковывает свои собственные заменители библиотек/модулей. Делфи нет. Серия Free Pascal 1.0 и текстовая среда разработки FPC являются крупнейшими открытыми базами кода на этом диалекте. Free Pascal 2.0 был переписан на диалекте, более похожем на Delphi, а текстовый режим IDE и связанные с ним платформы (Free Vision) являются единственными частями TP-версии Object Pascal.
Распределение на основе стека [ править ]
program ObjectPascalExample;
type
THelloWorld = object
procedure Put;
end;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
var
HelloWorld: THelloWorld; { allocated on the stack and can be used without explicit allocation. }
begin
HelloWorld.Put;
end.
Распределение на основе кучи [ править ]
program ObjectPascalExample;
type
PHelloWorld = ^THelloWorld;
THelloWorld = object
procedure Put;
end;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
var
HelloWorld: PHelloWorld; { this is a typed pointer to a THelloWorld }
begin
New(HelloWorld);
HelloWorld^.Put;
Dispose(HelloWorld);
end.
Другой пример:
program ObjectPascalExample;
type
PHelloWorld = ^THelloWorld;
THelloWorld = object
procedure Put;
end;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
var
HelloWorld: PHelloWorld; { this is a typed pointer to a THelloWorld }
HelloWorld2: ^THelloWorld; { this is exactly the same with different syntax }
HelloWorld3: ^THelloWorld;
HelloWorld4: PHelloWorld;
begin
{ This works in a similar way as the code above, note the allocation and de-allocation, though,
many people get confused. In the past there was a wrong example with wrong comments here... }
New(HelloWorld); { one instance }
HelloWorld4 := HelloWorld; { this is valid - a pointer copy }
HelloWorld2 := HelloWorld; { this is valid - a pointer copy }
New(HelloWorld3); { a second instance }
HelloWorld4 := HelloWorld3; { this is valid - a pointer copy }
HelloWorld2 := HelloWorld3; { this is valid - a pointer copy }
Dispose(HelloWorld); { it allocates only two instances }
Dispose(HelloWorld3); { so it must release only two instances }
end.
Это работает на основе копирования указателя, если не существует специального выделения для более глубокой копии.
Версия для Delphi и Free Pascal [ править ]
program ObjectPascalExample;
type
THelloWorld = class
procedure Put;
end;
procedure THelloWorld.Put;
begin
Writeln('Hello, World!');
end;
var
HelloWorld: THelloWorld; { this is an implicit pointer }
begin
HelloWorld := THelloWorld.Create; { constructor returns a pointer to an object of type THelloWorld }
HelloWorld.Put;
HelloWorld.Free; { this line deallocates the THelloWorld object pointed to by HelloWorld }
end.
Обратите внимание, что конструкция объекта по-прежнему доступна в Delphi и Free Pascal.
Кислородная версия [ править ]
namespace ObjectPascalExample;
interface
type
ConsoleApp = class
class method Main;
end;
THelloWorld = class
method Put;
end;
implementation
method THelloWorld.Put;
begin
Console.WriteLine('Hello, World!');
end;
class method ConsoleApp.Main;
begin
var HelloWorld := new THelloWorld;
HelloWorld.Put;
end;
end.
Версия DWScript (Smart Pascal) [ править ]
type
THelloWorld = class
procedure Put;
begin
PrintLn('Hello, World!');
end
end;
var HelloWorld := THelloWorld.Create;
HelloWorld.Put;
Реализация метода также может быть выполнена в отдельном месте, как и в других диалектах Object Pascal.
Развитие [ править ]
Многие функции постоянно добавлялись в Object Pascal с расширениями для Delphi и расширениями для FreePascal. В ответ на критику Free Pascal принял дженерики с тем же синтаксисом, что и Delphi, при условии, что выбран режим совместимости с Delphi, и как Delphi (частичный), так и Free Pascal (более расширенный) поддерживают перегрузку операторов . Начиная с версии 7, Delphi также представила множество других функций. [13] включая дженерики. Хотя FreePascal пытается быть совместимым с Delphi в режиме совместимости с Delphi, он также обычно вводит в язык множество новых функций, которые не всегда доступны в Delphi.
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Гибсон, Стив (8 мая 1989 г.). «Borland и Microsoft входят в кольцо объектно-ориентированного Паскаля» . Инфомир . Том. 11, нет. 19. с. 28. Архивировано из оригинала 29 февраля 2024 года . Проверено 18 сентября 2021 г.
- ^ Теслер, Ларри (1985). «Отчет об Объектном Паскале». Структурированный языковой мир . 9 (3): 10–7.
- ^ Зейтер, Чарльз (ноябрь 1990 г.). «Думай, Паскаль 3» . Макмир . Том. 7, нет. 11. с. 236.
- ^ Арнольд, Брайан; Маккарти, Гай (ноябрь 1995 г.). «MacApp Pascal снова едет» . МакТех . Том. 11, нет. 11. С. 30–31.
- ^ Арнольд, Брайан (февраль 1996 г.). «MacApp 2 для PowerPC в Object Pascal» . МакТех . Том. 12, нет. 2. С. 25–32.
- ^ Лишнер, Рэй (2000). Коротко о Delphi: краткий справочник по настольному компьютеру (1-е изд.). Севастополь, Калифорния: О'Рейли и партнеры. ISBN 1565926595 .
- ^ Письмо сообщества: Embarcadero Technologies соглашается приобрести CodeGear у Borland. Архивировано 2 марта 2018 г. на Wayback Machine . Edn.embarcadero.com. Проверено 21 июля 2013 г.
- ^ «Разработка iPhone/iPod» . Команда разработчиков Free Pascal. Архивировано из оригинала 28 апреля 2009 г. Проверено 13 апреля 2009 г.
- ^ Умная книга . Линпаб. 18 мая 2012 года. Архивировано из оригинала 25 мая 2013 года . Проверено 19 июня 2013 г.
- ^ Фуна, Игорь (2021). «Turbo51: Компилятор Turbo Pascal для микроконтроллеров 8051» . Архивировано из оригинала 25 сентября 2018 г.
- ^ Дракслер, Вольфганг. «WDSibyl: среда визуальной разработки» . Архивировано из оригинала 12 февраля 2020 г.
- ^ «Современный Паскаль» . Архивировано из оригинала 11 декабря 2018 г. Проверено 22 октября 2018 г.
- ^ «Новые возможности языка Delphi начиная с Delphi 7» . КодГир. Архивировано из оригинала 2 июля 2008 г. Проверено 6 июля 2008 г.
Внешние ссылки [ править ]
- Введение в Object Pascal , MacTech Том 2, выпуск 12, 1985 г.
- Справочное руководство по Object Pascal для Free Pascal. Архивировано 23 декабря 2009 г. на Wayback Machine . «Цель состоит в том, чтобы составить список поддерживаемых конструкций Pascal и показать, чем реализация Free Pascal отличается от реализаций Turbo Pascal или Delphi».
- Free Pascal: Справочное руководство , Справочное руководство по Free Pascal, версия 2.0.0
- Основные различия между синтаксисом C++ и Object Pascal
- Think Pascal 4.5 Неофициальная страница об окончательной версии Think Pascal от Symantec.
Делфи [ править ]
- Руководство по языку Object Pascal, охватывающее Borland Delphi 6-7
- Основы Delphi , Ресурс исходных кодов проектов Delphi.
- Delphi-Help - первая помощь программисту на Delphi
- Программирование на Delphi , ресурс по программированию на Delphi и форумы по программированию на Delphi.