Објектни Паскал

(преусмерено са Object Pascal)

Објектни Паскал се односи на грану објектно-оријентисаних деривата Паскала, већином познатих као примарни програмски језик Ембаркадеро Делфи.

Објектни Паскал
МоделИмператив, Структурирано, Објектно-оријентисано програмирање, Функционално (Делфијев дијалект само), Компонентно оријентисано, Догађај-погон програмирање, Генеричко
Појавио се1986, пре 29 година
Аутор(и)Андерс Хејлсберг и Никлаус Вирт док су били у Еплу
Систем типова.p, .pp, .pas
ИмплементацијеДелфи (x86, ARM), Оксиџен (CLI, Јава, Матерњи Кокоа), Слободни Паскал (x86, x86-64, PowerPC, ppc64, SPARC and ARM), Виртуални Паскал (x86), Turbo51 (Intel 8051), Паметни Мобилни Студио (Јаваскрипт)
ДијалектиЕпл, Турбо Паскал, Слободни Паскал (користи objfpc или delphi мод), Делфи, Делфи.NET, Делфи Веб Скрипта, Оксиџен
УтицајиПаскал, Smalltalk
Утицао наC#, Јава

Ранија историја код Епла

уреди

Објектни Паскал је екстензија Паскаловог језика који се развио код Епл рачунара од стране тима вођеног од стране Ларија Теслера у консултацији са Никлаусом Виртом, проналазача Паскала. Спустио се са раније објектно-оријентисане верзије Паскала названим Класкал, који је био доступан на Лиса рачунарима. 

Објектни Паскал је био потребан како би подржао MacApp, проширива Макинтош апликација оквира која се сада може звати класа библиотеке. Екстензије Објектног Паскала и MacApp су развијени од стране Барија Хајнеса, Кена Дојла и Ларија Розенстајна и тестиране су од стране Дана Алена. Лари Теслер је надгледао пројекат, који је почео веома рано 1985-те и постао продукт 1986. 

Екстензија Објектног Паскала је такође имплементована у Размишљај Паскал ИДЕ. ИДЕ укључује компилатор и едитор са назначавањем Синтаксе и чекирањем, јак дебагер и класе библиотеке. Многим развојницима је више одговарала Епл имплементација Објектног Паскала зато што је Размишљај Паскал нудио уску интеграцију његових алата. Развојништво је стало после 4.01 верзије зато што је компанија купљена од стране Symantec-а. Развојници су затим напустили пројекат.  

Епл је испустио подршку за Објектни Паскал када су прешли са Моторолиних 68К чипова на IBM PowerPC архитектуру 1944. MacApp 3.0, за ову платформу, је поново написан у С++

Борланд и КодГир године

уреди

1986, Борланд је представио сличне екстензије, такође назване Објектни Паскал, Турбо Паскал продукту за Макинтош, и 1989 за Турбо Паскал 5.5 за DOS. Када се Борланд фокусирао са DOS-a на Windows 1994, створили су наследника Турбо Паскала, званим Делфи и представили су нову групу екстензија да би створили оно што је знано као Делфи језик.

Развитак Делфија је почео 1993 и Делфи 1.0 је објављен у Америци 14-ог Фебруара 1995. Док код користи Турбо Паскалов овјектни модел може идаље бити састављен, Делфи је представио нову синтаксу користећи кључну речclass у предности са object, Create конструктор и виртуелни Destroy деструктор (и негира потребу за позивање  New и Dispose процедура), особине, показивачи метода и неке остале ствари. Они су били инспирисани од стране ISO радећег нацрта за објектно-оријентисане екстензије, али многе разлике Турбо Паскаловог дијалекта (као што је захтев за нацртом да све методе морају бити виртуалне) су игнорисане

Делфи језик је наставио да се развија током година подржавања конструкција  као што су динамички низови, генеричко програмирање и анонимне методе.

Верзије

уреди
  • Борланд је користио име Објектни Паскал за програмиран језик у први верзијама Делфија, али је касније назван Делфи програмски језик. Међутим, компилатори тврде да је компатибилан са Објектним Паскалом често покушавају да буде компатибилан са Делфијевим изворним кодом. Зато што је Дефли заштићен, компатибилни компилатори су наставили да користе име Објектни Паскал.
  • Ербакадеро Технологије, које су купиле Делфи 2008,[1] продаје Делфи ИДЕ који саставља Делфи дијалект Windows-у и Мак-у OS X, iOS-у, Андроиду и Web.
  • .NET подржава је постао из Делфија 8 кроз Делфи 2005, Делфи 2006 и Делфи 2007, који је сада замењен са другим језиком, Оксиџен (видети испод), који није потпуно уназад-компитабилан.
  • Оксиџен програмски језик је развијен од стране RemОбјекти Софтвер који циља на Општу језичку инфраструктуру, Јаву (софтверска платформа) Runtime окружење и Еплов Kokoa оквир за iOS и Mac OS X.
  • Морфик Паскал програмски језик развијен од стране Морфика циља Ајакс-омогућене Веб апликације. Морфик компилатор је инкорпорисан у компанију AppsBuilder Иде и дозвољава коду Објектног Паскала да буде коришћен у имплементовању кода који ће извршити и у браузери и на серверу. Користи Бесплатни Паскал компилатор да генерише изворне бинарне јединице из Објектног Паскала. 
  • Отворени код Бесплатног Паскала пројекат дозвољава језику да буде састављен за широк опсег оперативних система —укључујући Линукс (32-бита и 64-бита), FreeBSD, Mac OS/Mac OS X, Соларис, Win32, Win65 и Windows СЕ—као и за неколико различитих архитектура хардвера. Прва верзија Бесплатног Паскала за Ајфон SDK 2.х је објављен Јануара 17, 2009.[2] Сада постоји подршка за ARM ISA такође.
  • Паметни Паскал програмски језик[3] циља на Јаваскрипт/ЕЦМАСкрипт и користи се у Паметном Мобилном Студију, написаним од стране Џона Ленарта Асендена и објављеним од стране Оптимал Системера (2012). Језик увелико поједноставља HTML5 развојништво кроз ООП и RAD (брз развитак апликације) приступе. Паметни Паскал интегрише брзо са утемељеним технологијама као што је node.js, Емаркадеро DataSnap i Remoobjects SDK да достави висок-преформанс клиенту/серверу веб апликација. Језик дозвољава лаке креације визуелних компоненти и поновно коришћених библиотеки. Паметни Паскал дијалект потиче из DWСкрип језика- продужен да боље интегрише са Јаваскрип окружењем и библиотекама, као што су "асм" секције које су јасне Јаваскрипти али имају приступ Паскаловим симболима, или "екстерним" класама који мапирају директно на прототипне Јаваскрип класе. Паметни Паскал упознаје тачно наслеђивање, класе, делимичне класе, сучеља, виртуални метод табеле и многе остале напредне конструкције које нису део Јаваскрипте по дифолту.  
  • MIDletPascal је циљан на Јавиној бајт-код платформи .
  • Отворен извор ГНУ Паскала компилатора је доступан као предњи-крај ГНУ колекције компилатора, који имплементује ИСО 7185 Паскалов стандард, и "већини" ИСО 10206 стандарда Продуженог Паскала .
  • Такође, бесплатни компилатор,  Turbo51, је доступан за производњу Intel 8051 чипова. .
  • WDSibyl је отворени код типа-Делфи ИДЕ и компилатор доступан за Microsoft Windows и OS/2, и комерцијални је Борланд Паскал компатибилан окружењу објављеном од стране компаније која се зове Speedsoft која је касније развијена у Делфи као RAD окружење названо Sybilan и онда отворени код под GPL када се та компанија завршила. . Волфганг Дракслер (ВД) сада одржава софтвер. (Компилатор који се користи се чини да је лоциран у DLL и није отворени код).

Компилатори

уреди

Компилатори Објектног Паскала су доступни за широк опсег оперативних система и архитектура.

  • Ембаркадеро Делфи (раније CodeGear Делфи и Борланд Делфи) је највероватније најпознатији компилатор. Он је наследник високо успешног Борланд Паскала и Турбо Паскала линије продукта. Он циља Win16(Делфи 1), Win32 (Делфи 2 и каснији), Windows 64-бита (Делфи ХЕ2 и каснији), .NET 1.х,2.0 (Делфи 8, Делфи 2005-Делфи 2007) и Mac OS X (Делфи ХЕ2 и каснији), iOS (Делфи ХЕ2 и каснији, генеришући изворне бинарде вредности у ХЕ4 и каснији), Андроид (Делфи ХЕ5 и каснији, генеришући изворне бинарне вредности у ХЕ5 и каснији). Подршка за .NET коначно је постала продукт познат као Оксиџен (видети доле)
  • Слободни Паскал компилатор (БПК) је отворени извор Објектног Паскала компилатора који подржава многе Паскалове дијалекте, укључујући оне од Турбо Паскала 7 и Дефли, између осталог. Тренутно, БПК може генерисати код за x86, x86-64, PowerPC,SPARC, и ARM процесорима, и за многе оперативне системе, укључујући Windows, Линукс, FreeBSD, Mac OS и Mac OS X(са Хкод интеграционим комплетом). Неколико одвојених пројеката постоје да би олакшали брз развој апликације са БПК, најистакнутије је Лазарус ИДЕ.  
  • ГНУ Паскал (Одвојен дистрибуирану део ГНУ колекције компилатора)  Иако није званично циљан на Делфи дијалект Паскала, не садржи Борланд Паскал мод компатибилности, и веома је спор при укључивању неколико Делфијевих карактеристика језика.  Непогодан је за рекомпајлирање великих тела Делфи кода директно, али је вредан пажње пошто има профилну подршку за оперативне системе и хардверске архитектуре. 
  • Оксиџен (формално познат као Chrome) је Објектни Паскал компилатор из RamObjects Софтвера који интегрише у Мајкрософт Вижуал Студио. Такође је доступан као бесплатна команда-линије компилатора који се води матерњим на CLI. То су 3 компилатора у једном, сваки циља другу платформу: Екоус за .NET/Mono/WinRT/Windows Phone 8, Куупер за Јаву и Андроид и Нугат за iOS и OS X. 
  • MIDletPascal је мобилна апликазија развнојног алата која генерише Јавин МЕ бајткод.
  • PocketStudio је Паскал-базиран ИДЕ за Палм ОС .
  • Паметни Мобилни Сутдио је компилатор који трансформише Паскалов изворни код у Јаваскрипту (Извор-у-извор компилатор)

Старији производи

уреди
  • Borland Kylix је била Линукс варијанта Делфија који само циља Интел 32-бит Линукс којистећи Qt библиотеку. Не ради ван кутије са већином модерних Линукс дистрибуција.
  • Виртуелни Паскал је био бесплатан 32-битни Турбо Паскал- и Делфи-компатибилан компилатор циљан углавном на ОS/2 и Microsoft Windows, такође је развио DOS+ Екстендер и експериментални Линук крос-компилатор. Развој компилатора је стао отприлике при Делфи 2 нивоу. 2007, са његовим престанком рада званичног сајта, Виртуални Паскал је прекинуо даље да се развија.

Интерпретатори

уреди

Паскал Скрипта Архивирано на сајту Wayback Machine (19. октобар 2019) (раније позната као InnerFuse) и DWScript (Делфи веб скрипта) су отвореног-кода Објектног Паскала интерпретатора/скриптинг енџина написаних у Делфију. Они подржавају подгрупе Објектног Паскала. DWScript може такође саставити Објектно Паскални код у Јаваскрип код (Паметни Паскал), и подржава у- правом-тренутку компилацију.

Узорак "Hello World" програма

уреди

Епл Објектни Паскал

уреди
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.

Турбо Паскалов Објектни Паскал

уреди

Идаље подржан у Делфију и Бесплатном Паскалу. БПК такође пакује своје замене за библиотеке/јединица. Делфи не ради. Бепслатни Паскал 1.0 серије и БПК текст мод ИДЕ су највећи отворене базе кодова у овом дијалекту. Бесплатни Паскал 2.0 је написан у сличном Делфи дијалекту, и текст мод ИДЕ и везани оквири (Бесплатна визија) су једини делови у ТП верзији Објектног Паскала.

Засновано на алокацији стека

уреди
program ObjectPascalExample;

   type
      THelloWorld = object
         procedure Put;
      end;

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;

var
  HelloWorld: THelloWorld; { издвојен на гомилу и може се користити без изричите расподеле. }
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; { ово је укуцан показивач на 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; { ово је укуцан показивач на THelloWorld }
  HelloWorld2: ^THelloWorld; { ово је директна варијабла на показивач THelloWorld типа. 
                               Ова варијабла је неспојивог типа са PHelloWorld. } 
  HelloWorld3: ^THelloWorld; { Компилатор види ово као неспојив тип са HelloWorld2 *и* 
                               PHelloWorld. Коришћење синтаксе показивача је једини начин да се декларише тип који 
                               је компатибилна додела . }
  HelloWorld4: PHelloWorld; { ово је тип копатибилан са HelloWorld, али некомпатибилан са остале две варијабле. }
begin
   { Ово ради на сличан начин као код изнад... али демонстрира недостатак некоришћења 
     специфичног типа. Дефиниција типа између две варијабле коришћењем сировог показивача
     базираним на нотацији би био виђен као "различит" преко компилатора. }

   New(HelloWorld4);
   HelloWorld := HelloWorld4; { ово је валидно - тип доделе је валидан }
   HelloWorld2 = HelloWorld; { ово би била грешка компилатора }
   {располаже изостављањем ради краткоће}

   New(HelloWorld3);
   HelloWorld := HelloWorld3; { ово би била грешка компилатора }
   HelloWorld2 = HelloWorld3; { ово би била грешка компилатора }
   {располаже изостављањем ради краткоће}
end.

Овде се мора направити битна разлика, и може бити виђен као једна од кључних разлика које су довеле до Делфи стила "скривања" гомиле алокација и показивача појмова од програмера. Делфи је уклонио потребу за додатним типом Показивача и показивача синтаксе, али је задржао механизам експлицитне конструкције.

Делфијем и Бесплатни Паскалов Објектни Паскал

уреди
program ObjectPascalExample;

type
  THelloWorld = class
    procedure Put;
  end;

procedure THelloWorld.Put;
begin
  Writeln('Hello, World!');
end;

var
  HelloWorld: THelloWorld;               { ово је имплицитни показивач }

begin
  HelloWorld := THelloWorld.Create;      { конструктор враћа показиван на објекат типа THelloWorld }
  HelloWorld.Put;
  HelloWorld.Free;                       { ова линија одваја THelloWorld објекат показан преко HelloWorld }
end.

Имати на уму да је објектна конструкција идаље доступна у Делфију и Бесплатном Паскалу (Дефли-компатибилни мод).

Оксиџен Објектни Паскал

уреди
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-ин Објектни Паскал (илити Паметни Паскал)

уреди
type
   THelloWorld = class
      procedure Put;
      begin
         PrintLn('Hello, World!');
      end
   end;

var HelloWorld := THelloWorld.Create;

HelloWorld.Put;

Имати на уму да метода имплементације може такође бити направљена у посебној локацији као у осталим дијалектима Објектног Паскала. 

Развој

уреди

Многе карактеристике су биле уведе континуирано у Објектни Паскал са екстензијама у Делфију, сада такође преко Бесплатног Паскала. У реакцији против критицизма, Бесплатни Паскал је усвојио генерике, и оба Делфи и Бесплатни Паскал сада подржавају преоптерећења оператора (са различитом граматиком, иначе). Делфи је такође представио многе остале карактеристике још од верзије 7[4] укључујући генерике.

Види још

уреди

Референце

уреди

Спољашње везе

уреди