Jump to content

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

Объектный Паскаль
Парадигмы Императивный , структурированный , объектно-ориентированный , функциональный (только диалект Delphi), компонентный , управляемый событиями , общий
Семья Вирт Паскаль
Разработано Ларри Теслер (Apple)
Никлаус Вирт (для Apple)
Андерс Хейлсберг (Borland) [1]
Разработчики Apple Computer (начальный)
Борланд Интернэшнл [1]
Впервые появился 1986 год ; 38 лет назад ( 1986 )
Дисциплина набора текста Статический и динамический (динамическая типизация с помощью вариантов, массив const и RTTI ), сильный , безопасный
Объем Лексический (статический)
Платформа ARM , x86 , PowerPC , ppc64 , SPARC , MIPS , CLI , Java , Cocoa
Расширения имен файлов .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, PascalABC.NET , Oxygene
Под влиянием
Паскаль , Симула , Smalltalk
Под влиянием
C# , Genie , Java , Nim , C/AL

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]

Версии [ править ]

Компиляторы [ править ]

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.

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

  1. ^ Jump up to: Перейти обратно: а б Гибсон, Стив (8 мая 1989 г.). «Borland и Microsoft входят в кольцо объектно-ориентированного Паскаля» . Инфомир . Том. 11, нет. 19. с. 28. Архивировано из оригинала 29 февраля 2024 года . Проверено 18 сентября 2021 г.
  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. Архивировано 2 марта 2018 г. на Wayback Machine . Edn.embarcadero.com. Проверено 21 июля 2013 г.
  8. ^ «Разработка iPhone/iPod» . Команда разработчиков Free Pascal. Архивировано из оригинала 28 апреля 2009 г. Проверено 13 апреля 2009 г.
  9. ^ Умная книга . Линпаб. 18 мая 2012 года. Архивировано из оригинала 25 мая 2013 года . Проверено 19 июня 2013 г.
  10. ^ Фуна, Игорь (2021). «Turbo51: Компилятор Turbo Pascal для микроконтроллеров 8051» . Архивировано из оригинала 25 сентября 2018 г.
  11. ^ Дракслер, Вольфганг. «WDSibyl: среда визуальной разработки» . Архивировано из оригинала 12 февраля 2020 г.
  12. ^ «Современный Паскаль» . Архивировано из оригинала 11 декабря 2018 г. Проверено 22 октября 2018 г.
  13. ^ «Новые возможности языка Delphi начиная с Delphi 7» . КодГир. Архивировано из оригинала 2 июля 2008 г. Проверено 6 июля 2008 г.

Внешние ссылки [ править ]

Делфи [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3e63d0a138abc028b3cbaafdde832b4f__1714535100
URL1:https://arc.ask3.ru/arc/aa/3e/4f/3e63d0a138abc028b3cbaafdde832b4f.html
Заголовок, (Title) документа по адресу, URL1:
Object Pascal - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)