Објектни Паскал
Објектни Паскал се односи на грану објектно-оријентисаних деривата Паскала, већином познатих као примарни програмски језик Ембаркадеро Делфи.
Објектни Паскал | |
---|---|
Модел | Императив, Структурирано, Објектно-оријентисано програмирање, Функционално (Делфијев дијалект само), Компонентно оријентисано, Догађај-погон програмирање, Генеричко |
Појавио се | 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] укључујући генерике.
Види још
уредиРеференце
уреди- ^ Community Letter: Embarcadero Technologies agrees to acquire CodeGear from Borland Архивирано на сајту Wayback Machine (2. март 2018).
- ^ "iPhone/iPod development".
- ^ "A Smart Book".
- ^ "New Delphi language features since Delphi 7" Архивирано на сајту Wayback Machine (2. јул 2008).
Спољашње везе
уреди- Delphi Basics, Resource of Delphi Project Source Codes.
- Introduction to Object Pascal, MacTech Vol 2 Issue 12 1985.
- Object Pascal reference guide for Free Pascal. Архивирано на сајту Wayback Machine (23. децембар 2009) "The aim is to list which Pascal constructs are supported, and to show where the Free Pascal implementation differs from the Turbo Pascal or Delphi implementations."
- Delphi-Help - первая помощь программисту на Delphi
- Major Differences Between the Syntax of C++ and Object Pascal
- Delphi Programming, Resource of Delphi Programming & Delphi Programming Forums.