Objekt Pascal - Object Pascal
Paradigmer | Imperativ , struktureret , objektorienteret , funktionel (kun Delphi-dialekt), komponentbaseret , hændelsesdrevet , generisk |
---|---|
Familie | Wirth Pascal |
Designet af |
Larry Tesler (Apple) Niklaus Wirth (for Apple) Anders Hejlsberg (Borland) |
Udviklere | Apple Computer (initial) Borland International |
Første gang dukkede op | 1986 |
Skrive disciplin | Statisk og dynamisk (dynamisk indtastning gennem varianter, array af const og RTTI ), stærk , sikker |
Anvendelsesområde | Leksikalsk (statisk) |
Platform | ARM , x86 , PowerPC , ppc64 , SPARC , MIPS , CLI , Java , Cocoa |
Filnavn udvidelser |
.p , .pp ,.pas
|
Store implementeringer | |
Delphi ( x86 , ARM ), Free Pascal ( x86 , PowerPC , ppc64 , SPARC , MIPS , ARM ), Oxygene ( CLI , Java , Native Cocoa ), Smart Mobile Studio ( JavaScript ) | |
Dialekter | |
Apple, Turbo Pascal , Free Pascal (ved hjælp af objfpc eller delphi -tilstand), Delphi , Delphi.NET, Delphi Web Script, Oxygene | |
Påvirket af | |
Pascal , Simula , Smalltalk | |
Påvirket | |
C# , Genie , Java , Nim , C/AL |
Object Pascal er en udvidelse til programmeringssproget Pascal, der giver objektorienterede programmeringsfunktioner (OOP), såsom klasser og metoder .
Sproget blev oprindeligt udviklet af Apple Computer som Clascal til Lisa Workshop udviklingssystem. Da Lisa gav plads til Macintosh , samarbejdede Apple med Niklaus Wirth , forfatteren til Pascal, om at udvikle en officielt standardiseret version af Clascal. Dette blev omdøbt til objekt Pascal. Gennem midten af 1980'erne var Object Pascal det vigtigste programmeringssprog for tidlige versioner af MacApp- applikationsrammen . Sproget mistede sin plads som det vigtigste udviklingssprog på Mac i 1991 med udgivelsen af den C ++ -baserede MacApp 3.0. Officiel støtte ophørte i 1996.
Symantec udviklede også en compiler til Object Pascal til deres Think Pascal -produkt, som kunne kompilere programmer meget hurtigere end Apples eget Macintosh Programmer's Workshop (MPW). Symantec derefter udviklede Tænk Class Library (TCL), baseret på MacApp begreber, som kunne kaldes fra både Object Pascal og THINK C . Think -pakken fortrængte stort set MPW som den vigtigste udviklingsplatform på Mac'en i slutningen af 1980'erne.
Symantec portede Object Pascal til pc'en og udviklede en lignende objektramme på den platform. I modsætning til TCL, som til sidst migrerede til C ++, forblev pc -bibliotekerne hovedsageligt baseret på Pascal.
Borland tilføjede støtte til objektorienteret programmering til Turbo Pascal 5.5, som i sidste ende ville blive grundlaget for Object Pascal-dialekten, der blev brugt i Delphi . Delphi forblev mainstream for forretningsapplikationer på pc'en i begyndelsen af 2000'erne og blev delvist fordrevet i 2000'erne med introduktionen af .NET Framework .
Historie
Æble Pascal
Pascal blev et stort sprog i programmeringsverdenen i 1970'erne med implementeringer af høj kvalitet på de fleste minicomputerplatforme og mikrocomputere . Blandt de senere var UCSD Pascal- systemet, der kompilerede til et mellemliggende p-System- kodeformat, der derefter kunne køre på flere platforme. Apple licenserede UCSD og brugte det som grundlag for deres Apple Pascal -system til Apple II og Apple III .
Pascal blev et af de store sprog i virksomheden i denne periode. Med starten af Apple Lisa- projektet blev Pascal valgt som platformens hovedprogrammeringssprog, skønt denne gang som en kompilator i modsætning til p-System- tolken .
Clascal og Apples tidlige Object Pascal
Object Pascal er en forlængelse af Pascal -sproget, der blev udviklet på Apple Computer af et team ledet af Larry Tesler i samråd med Niklaus Wirth , opfinderen af Pascal. Det stammer fra en tidligere objektorienteret version af Pascal ved navn Clascal , som var tilgængelig på Lisa- computeren.
Object Pascal var nødvendig for at understøtte MacApp , en udvidelig Macintosh -applikationsramme, der nu ville blive betegnet som et klassebibliotek . Object Pascal -udvidelser og MacApp blev udviklet af Barry Haynes, Ken Doyle og Larry Rosenstein og blev testet af Dan Allen. Larry Tesler havde tilsyn med projektet, som begyndte meget tidligt i 1985 og blev et produkt i 1986.
En Object Pascal -udvidelse blev også implementeret i Think Pascal integrerede udviklingsmiljø (IDE). IDE inkluderer kompilatoren og en editor med syntaksfremhævelse og -kontrol, en kraftfuld fejlfinding og et klassebibliotek. Mange udviklere foretrak Think Pascal frem for Apples implementering af Object Pascal, fordi Think Pascal tilbød en meget hurtigere compile - link –debug -cyklus og stram integration af dets værktøjer. Den sidste officielle udgivelse af Think Pascal var 4.01 i 1992. Symantec udgav senere en uofficiel version 4.5d4 uden beregning.
Apple droppede support til Object Pascal, da de flyttede fra Motorola 68000 -serie chips til IBMs PowerPC -arkitektur i 1994. MacApp 3.0, var allerede blevet omskrevet i C ++ og portet til denne platform.
Metrowerks tilbød med CodeWarrior en Object Pascal -kompilator til Macintosh, der målrettede både 68k og PowerPC , både i deres IDE og som MPW -værktøjer. Macintosh -udviklere, der brugte Object Pascal, havde en vej til port til PowerPC , selv arkitektur, efter at både Apple og Symantec droppede support. MacApp 2.0, skrevet i Object Pascal, blev portet til PowerPC ved hjælp af CodeWarrior .
Borland, Inprise, CodeGear og Embarcadero år
I 1986 introducerede Borland lignende udvidelser, også kaldet Object Pascal, til Turbo Pascal -produktet til Macintosh og i 1989 til Turbo Pascal 5.5 til DOS. Da Borland refokuserede fra DOS til Windows i 1994, skabte de en efterfølger til Turbo Pascal, ved navn Delphi , og introducerede et nyt sæt udvidelser for at skabe det, der nu er kendt som Delphi -sproget.
Udviklingen af Delphi startede i 1993, og Delphi 1.0 blev officielt frigivet i USA den 14. februar 1995. Mens kode ved hjælp af Turbo Pascal -objektmodellen stadig kunne kompileres, fremhævede Delphi en ny syntaks ved hjælp af søgeordet class
frem for object
, Opret konstruktøren og en virtuel Destroy destructor (og nægter at skulle ringe til New
og Dispose
procedurer), egenskaber, metodepunkter og nogle andre ting. Disse var inspireret af ISO- arbejdsudkastet til objektorienterede udvidelser, men mange af forskellene fra Turbo Pascals dialekt (såsom udkastets krav om, at alle metoder skal være virtuelle ) blev ignoreret.
Delphi -sproget har fortsat udviklet sig gennem årene for at understøtte konstruktioner som dynamiske arrays , generiske og anonyme metoder . Den gamle objektsyntaks, der blev introduceret af Apple ("Old-Style Object Types") understøttes stadig.
Versioner
- Borland brugte navnet Object Pascal til programmeringssproget i de første versioner, men omdøbte det senere til Delphi . Kompilatorer, der hævder at være kompatible med Object Pascal, forsøger ofte at være kompatible med Delphi -kildekode . Fordi Delphi er et varemærke , fortsætter kompatible kompilatorer med at bruge navnet Object Pascal .
- Embarcadero Technologies , der købte Delphi i 2008, sælger Delphi integrerede udviklingsmiljø (IDE), der kompilerer Delphi -dialekten af Object Pascal til Windows og macOS , iOS , Android og Web.
- .NET- support eksisterede fra Delphi 8 til Delphi 2005, 2006 og 2007, som nu er blevet erstattet af et andet sprog, Oxygene (se nedenfor), som ikke er fuldt ud bagudkompatibelt.
- Den Oxygene sprog udviklet af RemObjects Software retter sig Common Language Infrastructure , den Java (softwareplatform) Runtime Environment og Apples 's Kakao rammer for iOS og MacOS .
- Den open source Gratis Pascal projekt tillader det sprog, der skal udarbejdes for en bred vifte af operativsystemer , herunder Linux ( 32-bit , 64-bit ), FreeBSD , Classic Mac OS , MacOS , Solaris , Windows API (32, 64, CE ), ARM instruktionssæt -arkitekturen (ISA) og flere andre hardwarearkitekturer. Den første version af Free Pascal til iPhone software development kit (SDK) 2. x blev annonceret den 17. januar 2009.
- Smart Pascal -sproget er målrettet mod ECMAScript - JavaScript og bruges i Smart Mobile Studio, skrevet af Jon Lennart Aasenden og udgivet af Optimale Systemer (2012). Sproget forenkler i høj grad HTML5- udvikling gennem objektorienterede og hurtige applikationsudviklingsmetoder (RAD). Smart Pascal integreres tæt med etablerede teknologier såsom node.js , Embarcadero DataSnap og Remobjects SDK for at producere højtydende klient-server-model webapplikationer. Sproget tillader let oprettelse af visuelle komponenter og genanvendelige biblioteker. Smart Pascal -dialekten stammer fra DWScript -sproget, udvidet til bedre at integreres med JavaScript -miljøet og biblioteker, f.eks.
asm
Sektioner, der er almindeligt JavaScript, men har adgang til Pascal -symboler eller eksterne klasser, der tilknyttes direkte til prototypiske JavaScript -klasser. Smart Pascal introducerer ægte arv, klasser, delklasser, grænseflader, en virtuel metodetabel og mange andre avancerede konstruktioner, der som standard ikke er en del af JavaScript. - MIDletPascal kører på en Java virtuel maskine (JVM) bytecode platform; som Free Pascal også målretter mod, med langt flere funktioner.
- Den Morfik Pascal sprog, som er udviklet af Morfik, mål Ajax -kompatible webapplikationer. Kompilatoren er indbygget i virksomhedens AppsBuilder IDE og gør det muligt at bruge Object Pascal -kode til implementering af kode til at udføre i en browser eller server. Den bruger Free Pascal -kompilatoren til at generere indfødte binære filer fra Object Pascal.
- Open source GNU Pascal- kompilatoren er tilgængelig som en front-end til GNU Compiler Collection , som implementerer International Organization for Standardization (ISO) 7185 Pascal-standarden og de fleste af ISO 10206 Extended Pascal-standarden.
- Turbo51 er en gratis kompilator til programmering af Intel 8051 -chips .
- WDSibyl er en open source Delphi-lignende IDE og compiler tilgængelig til Microsoft Windows og OS/2 , og er et kommercielt Turbo Pascal- kompatibelt miljø udgivet af et firma ved navn Speedsoft, der senere blev udviklet til et Delphi-lignende RAD-miljø ved navn Sybil, og derefter open sourced under GPL, da virksomheden lukkede. Wolfgang Draxler (WD) vedligeholder nu softwaren. Den anvendte kompilator ser ud til at være placeret i en DLL og er ikke open-source.
Kompilatorer
Object Pascal -kompilatorer er tilgængelige til en lang række operativsystemer og arkitekturer.
- Delphi er nok den mest kendte kompilator. Det er efterfølgeren til den meget succesrige produktserie Borland Pascal og Turbo Pascal . Det henvender Windows 9x , den Windows NT- familien, .NET Framework (Delphi 8, 2005, 2007), MacOS (Delphi XE2 og senere), iOS (Delphi XE2 og senere, genererer indfødte binære filer i XE4 og nyere), Android (Delphi XE5 og senere, generering af indfødte binære filer i XE5 og senere). Support til .NET blev endelig et separat produkt kendt som Oxygene (se nedenfor).
- Free Pascal Compiler (FPC) er en open-source Object Pascal-compiler, der understøtter mange Pascal-dialekter, herunder Turbo Pascal 7, Delphi og andre. I øjeblikket kan FPC generere kode til IA-32 , x86-64 , PowerPC , SPARC og ARM- processorer og til flere operativsystemer, herunder Microsoft Windows , Linux , FreeBSD , Classic Mac OS og macOS (med et Xcode- integrationssæt) . Der findes flere separate projekter for at lette hurtig applikationsudvikling med FPC, hvor den mest fremtrædende er Lazarus (IDE) .
- GNU Pascal (en separat distribueret del af GNU Compiler Collection ), selvom den ikke formelt er rettet mod Pascals Delphi -dialekt, indeholder en Turbo Pascal -kompatibilitetstilstand og inkorporerer meget langsomt nogle få Delphi -sprogfunktioner. Det er uegnet til direkte at genkompilere store dele af Delphi -kode, men er bemærkelsesværdigt som at have stor support til operativsystemer og hardwarearkitekturer.
- Oxygene (tidligere Chrome ) er en Object Pascal -kompilator fra RemObjects Software, der integreres i Microsoft Visual Studio . Det er også tilgængeligt som gratis kommandolinjegrænsefladekompiler, der kører indbygget på CLI . Det er tre kompilatorer i ét, der hver især er målrettet mod en anden platform: Echoes til .NET Framework , Mono , WinRT og Windows Phone 8 , Cooper til JDK og Android og Nougat til iOS og macOS .
- MIDletPascal er et værktøj til udvikling af mobile applikationer, der genererer Java ME -bytecode.
- PocketStudio er et Pascal-baseret integreret udviklingsmiljø (IDE) til Palm OS .
- Smart Mobile Studio er en kilde-til-kilde compiler, der omdanner Pascal kildekode til JavaScript
- Ultibo.org Core er baseret på Free Pascal, med udvikling i Lazarus IDE til integrerede Raspberry Pi -applikationer.
Ældre produkter
- Borland Kylix var en Linux- variant af Delphi, der kun er rettet mod Intel 32-bit Linux ved hjælp af Qt- biblioteket. Det fungerer ikke ud af boksen med de fleste moderne Linux -distributioner.
- Virtual Pascal var en gratis 32-bit Turbo Pascal og Delphi-kompatibel compiler til hovedsageligt OS/2 og Microsoft Windows. Senere modtog den også en DOS+ Extender og en eksperimentel Linux cross-compiler. Kompilatorens udvikling stoppede på niveau med Delphi 2. I 2007 ophørte dets officielle websted med at fungere, og den videre udvikling ophørte.
Tolke
Pascal Script (tidligere InnerFuse ) og DWScript (Delphi Web Script) er Object Pascal- tolke med open source og scriptmotorer skrevet i Delphi. De understøtter undersæt af Object Pascal. DWScript kan også kompilere Object Pascal-kode til JavaScript-kode (Smart Pascal) og understøtter just-in-time compilation (JIT). Modern Pascal leverer 3 forskellige tolke: en kommandolinjegrænseflade (CLI), Apache Module (Celerity) og CodeRunner (node.js som løsning, der kan håndtere forskellige scripts pr. Port), udover muligheden for at kompilere og beskytte et scripts kildekode .
Eksempel på programmer "Hello World"
Her er flere "Hello World" -programmer i forskellige Object Pascal -versioner.
Apple version
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 version
Stadig understøttet i Delphi og Free Pascal. FPC pakker også sine egne substitutter til bibliotekerne/enhederne. Det gør Delphi ikke. Free Pascal 1.0 -serien og FPC -tekstmode IDE er de største åbne kodebaser i denne dialekt. Free Pascal 2.0 blev omskrevet på en mere Delphi-lignende dialekt, og tekstform IDE og relaterede rammer (Free Vision) er de eneste dele i TP-versionen af Object Pascal.
Stabelbaseret tildeling
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.
Bunkebaseret tildeling
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.
Et andet eksempel:
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.
Dette fungerer baseret på markørkopi, medmindre der er en specifik tildeling til en dybere kopi.
Delphi og Free Pascal version
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.
Bemærk, at objektkonstruktionen stadig er tilgængelig i Delphi og Free Pascal.
Moderne version af Pascal
program ObjectPascalExample;
type
THelloWorld = class
Put:procedure of object;
end;
procedure THelloWorld.Put;
begin
Writeln('Hello, World!');
end;
procedure THelloWorld.Free;
begin
// dispose any pointers //
end;
procedure THelloWorld.Init;
begin
// initialize variables
// link methods (manual RTTI)
with Self do begin
TMethod(@Put):=[@THelloWorld.Put, @Self];
TMethod(@Free):=[@THelloWorld.Free, @Self];
End;
end;
var
HelloWorld: THelloWorld; { this is an implicit pointer }
begin
HelloWorld.Init; { self initialization (pointer to an object) of type THelloWorld }
HelloWorld.Put;
HelloWorld.Free; { this line deallocates the THelloWorld object pointed to by HelloWorld }
end.
Oxygene version
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 -version (Smart Pascal)
type
THelloWorld = class
procedure Put;
begin
PrintLn('Hello, World!');
end
end;
var HelloWorld := THelloWorld.Create;
HelloWorld.Put;
Metodeimplementeringen kan også foretages på et særskilt sted som i andre Object Pascal -dialekter.
Udvikling
Mange funktioner er løbende blevet introduceret til Object Pascal med udvidelser til Delphi og udvidelser til FreePascal. Som reaktion på kritik har Free Pascal vedtaget generika med samme syntaks som Delphi, forudsat at Delphi -kompatibilitetstilstand er valgt, og både Delphi (delvis) og Free Pascal (mere omfattende) understøtter overbelastning af operatører . Delphi har også introduceret mange andre funktioner siden version 7, herunder generiske. Mens FreePascal forsøger at være kompatibel med Delphi i Delphi -kompatibilitetstilstand, introducerede den normalt også mange nye funktioner til sproget, som ikke altid er tilgængelige i Delphi.
Referencer
eksterne links
- Introduktion til Object Pascal , MacTech Vol 2, udgave 12 1985.
-
Object Pascal referencevejledning til Free Pascal. "Målet er at liste, hvilke Pascal -konstruktioner, der understøttes, og vise, hvor Free Pascal -implementeringen adskiller sig fra Turbo Pascal- eller Delphi -implementeringerne."
- Free Pascal: Reference guide , Reference guide for Free Pascal, version 2.0.0
- Store forskelle mellem syntaksen for C ++ og Object Pascal
- Tænk Pascal 4.5 Uofficiel side om Symantecs sidste version af Think Pascal.
Delphi
- Object Pascal Language Guide Dækker Borland Delphi 6-7
- Delphi Basics , ressource for Delphi -projektets kildekoder.
- Delphi -Help - первая помощь программисту på Delphi
- Delphi -programmering , ressource til Delphi -programmering og Delphi -programmeringsfora.