Objektni Paskal

S Vikipedije, slobodne enciklopedije
Objektni Paskal
ModelImperativ, Strukturirano, Objektno-orijentisano programiranje, Funkcionalno (Delfijev dijalekt samo), Komponentno orijentisano, Događaj-pogon programiranje, Generičko
Pojavio se1986, pre 29 godina
Autor(i)Anders Hejlsberg i Niklaus Virt dok su bili u Eplu
Sistem tipova.p, .pp, .pas
ImplementacijeDelfi (x86, ARM), Oksidžen (CLI, Java, Maternji Kokoa), Slobodni Paskal (x86, x86-64, PowerPC, ppc64, SPARC and ARM), Virtualni Paskal (x86), Turbo51 (Intel 8051), Pametni Mobilni Studio (Javaskript)
DijalektiEpl, Turbo Paskal, Slobodni Paskal (koristi objfpc ili delphi mod), Delfi, Delfi.NET, Delfi Veb Skripta, Oksidžen
UticajiPaskal, Smalltalk
Uticao naC#, Java

Objektni Paskal se odnosi na granu objektno-orijentisanih derivata Paskala, većinom poznatih kao primarni programski jezik Embarkadero Delfi.

Ranija istorija kod Epla[uredi | uredi izvor]

Objektni Paskal je ekstenzija Paskalovog jezika koji se razvio kod Epl računara od strane tima vođenog od strane Larija Teslera u konsultaciji sa Niklausom Virtom, pronalazača Paskala. Spustio se sa ranije objektno-orijentisane verzije Paskala nazvanim Klaskal, koji je bio dostupan na Lisa računarima. 

Objektni Paskal je bio potreban kako bi podržao MacApp, proširiva Makintoš aplikacija okvira koja se sada može zvati klasa biblioteke. Ekstenzije Objektnog Paskala i MacApp su razvijeni od strane Barija Hajnesa, Kena Dojla i Larija Rozenstajna i testirane su od strane Dana Alena. Lari Tesler je nadgledao projekat, koji je počeo veoma rano 1985-te i postao produkt 1986. 

Ekstenzija Objektnog Paskala je takođe implementovana u Razmišljaj Paskal IDE. IDE uključuje kompilator i editor sa naznačavanjem Sintakse i čekiranjem, jak debager i klase biblioteke. Mnogim razvojnicima je više odgovarala Epl implementacija Objektnog Paskala zato što je Razmišljaj Paskal nudio usku integraciju njegovih alata. Razvojništvo je stalo posle 4.01 verzije zato što je kompanija kupljena od strane Symantec-a. Razvojnici su zatim napustili projekat.  

Epl je ispustio podršku za Objektni Paskal kada su prešli sa Motorolinih 68K čipova na IBM PowerPC arhitekturu 1944. MacApp 3.0, za ovu platformu, je ponovo napisan u S++

Borland i KodGir godine[uredi | uredi izvor]

1986, Borland je predstavio slične ekstenzije, takođe nazvane Objektni Paskal, Turbo Paskal produktu za Makintoš, i 1989 za Turbo Paskal 5.5 za DOS. Kada se Borland fokusirao sa DOS-a na Windows 1994, stvorili su naslednika Turbo Paskala, zvanim Delfi i predstavili su novu grupu ekstenzija da bi stvorili ono što je znano kao Delfi jezik.

Razvitak Delfija je počeo 1993 i Delfi 1.0 je objavljen u Americi 14-og Februara 1995. Dok kod koristi Turbo Paskalov ovjektni model može idalje biti sastavljen, Delfi je predstavio novu sintaksu koristeći ključnu rečclass u prednosti sa object, Create konstruktor i virtuelni Destroy destruktor (i negira potrebu za pozivanje  New i Dispose procedura), osobine, pokazivači metoda i neke ostale stvari. Oni su bili inspirisani od strane ISO radećeg nacrta za objektno-orijentisane ekstenzije, ali mnoge razlike Turbo Paskalovog dijalekta (kao što je zahtev za nacrtom da sve metode moraju biti virtualne) su ignorisane

Delfi jezik je nastavio da se razvija tokom godina podržavanja konstrukcija  kao što su dinamički nizovi, generičko programiranje i anonimne metode.

Verzije[uredi | uredi izvor]

  • Borland je koristio ime Objektni Paskal za programiran jezik u prvi verzijama Delfija, ali je kasnije nazvan Delfi programski jezik. Međutim, kompilatori tvrde da je kompatibilan sa Objektnim Paskalom često pokušavaju da bude kompatibilan sa Delfijevim izvornim kodom. Zato što je Defli zaštićen, kompatibilni kompilatori su nastavili da koriste ime Objektni Paskal.
  • Erbakadero Tehnologije, koje su kupile Delfi 2008,[1] prodaje Delfi IDE koji sastavlja Delfi dijalekt Windows-u i Mak-u OS X, iOS-u, Androidu i Web.
  • .NET podržava je postao iz Delfija 8 kroz Delfi 2005, Delfi 2006 i Delfi 2007, koji je sada zamenjen sa drugim jezikom, Oksidžen (videti ispod), koji nije potpuno unazad-kompitabilan.
  • Oksidžen programski jezik je razvijen od strane RemObjekti Softver koji cilja na Opštu jezičku infrastrukturu, Javu (softverska platforma) Runtime okruženje i Eplov Kokoa okvir za iOS i Mac OS X.
  • Morfik Paskal programski jezik razvijen od strane Morfika cilja Ajaks-omogućene Veb aplikacije. Morfik kompilator je inkorporisan u kompaniju AppsBuilder Ide i dozvoljava kodu Objektnog Paskala da bude korišćen u implementovanju koda koji će izvršiti i u brauzeri i na serveru. Koristi Besplatni Paskal kompilator da generiše izvorne binarne jedinice iz Objektnog Paskala. 
  • Otvoreni kod Besplatnog Paskala projekat dozvoljava jeziku da bude sastavljen za širok opseg operativnih sistema —uključujući Linuks (32-bita i 64-bita), FreeBSD, Mac OS/Mac OS X, Solaris, Win32, Win65 i Windows SE—kao i za nekoliko različitih arhitektura hardvera. Prva verzija Besplatnog Paskala za Ajfon SDK 2.h je objavljen Januara 17, 2009.[2] Sada postoji podrška za ARM ISA takođe.
  • Pametni Paskal programski jezik[3] cilja na Javaskript/ECMASkript i koristi se u Pametnom Mobilnom Studiju, napisanim od strane Džona Lenarta Asendena i objavljenim od strane Optimal Sistemera (2012). Jezik uveliko pojednostavlja HTML5 razvojništvo kroz OOP i RAD (brz razvitak aplikacije) pristupe. Pametni Paskal integriše brzo sa utemeljenim tehnologijama kao što je node.js, Emarkadero DataSnap i Remoobjects SDK da dostavi visok-preformans klientu/serveru veb aplikacija. Jezik dozvoljava lake kreacije vizuelnih komponenti i ponovno korišćenih biblioteki. Pametni Paskal dijalekt potiče iz DWSkrip jezika- produžen da bolje integriše sa Javaskrip okruženjem i bibliotekama, kao što su "asm" sekcije koje su jasne Javaskripti ali imaju pristup Paskalovim simbolima, ili "eksternim" klasama koji mapiraju direktno na prototipne Javaskrip klase. Pametni Paskal upoznaje tačno nasleđivanje, klase, delimične klase, sučelja, virtualni metod tabele i mnoge ostale napredne konstrukcije koje nisu deo Javaskripte po difoltu.  
  • MIDletPascal je ciljan na Javinoj bajt-kod platformi .
  • Otvoren izvor GNU Paskala kompilatora je dostupan kao prednji-kraj GNU kolekcije kompilatora, koji implementuje ISO 7185 Paskalov standard, i "većini" ISO 10206 standarda Produženog Paskala .
  • Takođe, besplatni kompilator,  Turbo51, je dostupan za proizvodnju Intel 8051 čipova. .
  • WDSibyl je otvoreni kod tipa-Delfi IDE i kompilator dostupan za Microsoft Windows i OS/2, i komercijalni je Borland Paskal kompatibilan okruženju objavljenom od strane kompanije koja se zove Speedsoft koja je kasnije razvijena u Delfi kao RAD okruženje nazvano Sybilan i onda otvoreni kod pod GPL kada se ta kompanija završila. . Volfgang Draksler (VD) sada održava softver. (Kompilator koji se koristi se čini da je lociran u DLL i nije otvoreni kod).

Kompilatori[uredi | uredi izvor]

Kompilatori Objektnog Paskala su dostupni za širok opseg operativnih sistema i arhitektura.

  • Embarkadero Delfi (ranije CodeGear Delfi i Borland Delfi) je najverovatnije najpoznatiji kompilator. On je naslednik visoko uspešnog Borland Paskala i Turbo Paskala linije produkta. On cilja Win16(Delfi 1), Win32 (Delfi 2 i kasniji), Windows 64-bita (Delfi HE2 i kasniji), .NET 1.h,2.0 (Delfi 8, Delfi 2005-Delfi 2007) i Mac OS X (Delfi HE2 i kasniji), iOS (Delfi HE2 i kasniji, generišući izvorne binarde vrednosti u HE4 i kasniji), Android (Delfi HE5 i kasniji, generišući izvorne binarne vrednosti u HE5 i kasniji). Podrška za .NET konačno je postala produkt poznat kao Oksidžen (videti dole)
  • Slobodni Paskal kompilator (BPK) je otvoreni izvor Objektnog Paskala kompilatora koji podržava mnoge Paskalove dijalekte, uključujući one od Turbo Paskala 7 i Defli, između ostalog. Trenutno, BPK može generisati kod za x86, x86-64, PowerPC,SPARC, i ARM procesorima, i za mnoge operativne sisteme, uključujući Windows, Linuks, FreeBSD, Mac OS i Mac OS X(sa Hkod integracionim kompletom). Nekoliko odvojenih projekata postoje da bi olakšali brz razvoj aplikacije sa BPK, najistaknutije je Lazarus IDE.  
  • GNU Paskal (Odvojen distribuiranu deo GNU kolekcije kompilatora)  Iako nije zvanično ciljan na Delfi dijalekt Paskala, ne sadrži Borland Paskal mod kompatibilnosti, i veoma je spor pri uključivanju nekoliko Delfijevih karakteristika jezika.  Nepogodan je za rekompajliranje velikih tela Delfi koda direktno, ali je vredan pažnje pošto ima profilnu podršku za operativne sisteme i hardverske arhitekture. 
  • Oksidžen (formalno poznat kao Chrome) je Objektni Paskal kompilator iz RamObjects Softvera koji integriše u Majkrosoft Vižual Studio. Takođe je dostupan kao besplatna komanda-linije kompilatora koji se vodi maternjim na CLI. To su 3 kompilatora u jednom, svaki cilja drugu platformu: Ekous za .NET/Mono/WinRT/Windows Phone 8, Kuuper za Javu i Android i Nugat za iOS i OS X. 
  • MIDletPascal je mobilna aplikazija razvnojnog alata koja generiše Javin ME bajtkod.
  • PocketStudio je Paskal-baziran IDE za Palm OS .
  • Pametni Mobilni Sutdio je kompilator koji transformiše Paskalov izvorni kod u Javaskriptu (Izvor-u-izvor kompilator)

Stariji proizvodi[uredi | uredi izvor]

  • Borland Kylix je bila Linuks varijanta Delfija koji samo cilja Intel 32-bit Linuks kojisteći Qt biblioteku. Ne radi van kutije sa većinom modernih Linuks distribucija.
  • Virtuelni Paskal je bio besplatan 32-bitni Turbo Paskal- i Delfi-kompatibilan kompilator ciljan uglavnom na OS/2 i Microsoft Windows, takođe je razvio DOS+ Ekstender i eksperimentalni Linuk kros-kompilator. Razvoj kompilatora je stao otprilike pri Delfi 2 nivou. 2007, sa njegovim prestankom rada zvaničnog sajta, Virtualni Paskal je prekinuo dalje da se razvija.

Interpretatori[uredi | uredi izvor]

Paskal Skripta (ranije poznata kao InnerFuse) i DWScript (Delfi veb skripta) su otvorenog-koda Objektnog Paskala interpretatora/skripting endžina napisanih u Delfiju. Oni podržavaju podgrupe Objektnog Paskala. DWScript može takođe sastaviti Objektno Paskalni kod u Javaskrip kod (Pametni Paskal), i podržava u- pravom-trenutku kompilaciju.

Uzorak "Hello World" programa[uredi | uredi izvor]

Epl Objektni Paskal[uredi | uredi izvor]

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 Paskalov Objektni Paskal[uredi | uredi izvor]

Idalje podržan u Delfiju i Besplatnom Paskalu. BPK takođe pakuje svoje zamene za biblioteke/jedinica. Delfi ne radi. Bepslatni Paskal 1.0 serije i BPK tekst mod IDE su najveći otvorene baze kodova u ovom dijalektu. Besplatni Paskal 2.0 je napisan u sličnom Delfi dijalektu, i tekst mod IDE i vezani okviri (Besplatna vizija) su jedini delovi u TP verziji Objektnog Paskala.

Zasnovano na alokaciji steka[uredi | uredi izvor]

program ObjectPascalExample;

   type
      THelloWorld = object
         procedure Put;
      end;

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

var
  HelloWorld: THelloWorld; { издвојен на гомилу и може се користити без изричите расподеле. }
begin
   HelloWorld.Put;
end.

Alokacija zasnovana na gomili[uredi | uredi izvor]

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.

Još jedan primer:

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.

Ovde se mora napraviti bitna razlika, i može biti viđen kao jedna od ključnih razlika koje su dovele do Delfi stila "skrivanja" gomile alokacija i pokazivača pojmova od programera. Delfi je uklonio potrebu za dodatnim tipom Pokazivača i pokazivača sintakse, ali je zadržao mehanizam eksplicitne konstrukcije.

Delfijem i Besplatni Paskalov Objektni Paskal[uredi | uredi izvor]

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.

Imati na umu da je objektna konstrukcija idalje dostupna u Delfiju i Besplatnom Paskalu (Defli-kompatibilni mod).

Oksidžen Objektni Paskal[uredi | uredi izvor]

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-in Objektni Paskal (iliti Pametni Paskal)[uredi | uredi izvor]

type
   THelloWorld = class
      procedure Put;
      begin
         PrintLn('Hello, World!');
      end
   end;

var HelloWorld := THelloWorld.Create;

HelloWorld.Put;

Imati na umu da metoda implementacije može takođe biti napravljena u posebnoj lokaciji kao u ostalim dijalektima Objektnog Paskala. 

Razvoj[uredi | uredi izvor]

Mnoge karakteristike su bile uvede kontinuirano u Objektni Paskal sa ekstenzijama u Delfiju, sada takođe preko Besplatnog Paskala. U reakciji protiv kriticizma, Besplatni Paskal je usvojio generike, i oba Delfi i Besplatni Paskal sada podržavaju preopterećenja operatora (sa različitom gramatikom, inače). Delfi je takođe predstavio mnoge ostale karakteristike još od verzije 7[4] uključujući generike.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]