Contents 1 Early history at Apple 2 Borland and CodeGear years 3 Versions 4 Compilers 4.1 Legacy products 5 Interpreters 6 Sample "Hello World" programs 6.1 Apple's Object Pascal 6.2 Turbo Pascal's Object Pascal 6.2.1 Stack based allocation 6.2.2 Heap based allocation 6.3 Delphi and Free Pascal's Object Pascal 6.4 Oxygene Object Pascal 6.5 DWScript's Object Pascal (a.k.a. Smart Pascal) 7 Development 8 References 9 External links


Early history at Apple[edit] This section needs expansion with: additional citations. You can help by adding to it. (April 2009) Object Pascal is an extension of the Pascal language that was developed at Apple Computer by a team led by Larry Tesler in consultation with Niklaus Wirth, the inventor of Pascal. It is descended from an earlier object-oriented version of Pascal called Clascal, which was available on the Lisa computer. Object Pascal was needed in order to support MacApp, an expandable Macintosh application framework that would now be called a class library. Object Pascal extensions, and MacApp itself, were developed by Barry Haynes, Ken Doyle, and Larry Rosenstein, and were tested by Dan Allen. Larry Tesler oversaw the project, which began very early in 1985 and became a product in 1986. An Object Pascal extension was also implemented in the Think Pascal IDE. The IDE includes the compiler and an editor with syntax highlighting and checking, a powerful debugger and a class library. Many developers preferred Think Pascal over Apple's implementation of Object Pascal because Think Pascal offered a tight integration of its tools. The development stopped after the 4.01 version because the company was bought by Symantec. The developers then left the project. Apple dropped support for Object Pascal when they moved from Motorola 68K chips to IBM's PowerPC architecture in 1994. MacApp 3.0, for this platform, was re-written in C++.


Borland and CodeGear years[edit] In 1986, Borland introduced similar extensions, also called Object Pascal, to the Turbo Pascal product for the Macintosh, and in 1989 for Turbo Pascal 5.5 for DOS. When Borland refocused from DOS to Windows in 1994, they created a successor to Turbo Pascal, called Delphi and introduced a new set of extensions to create what is now known as the Delphi language. The development of Delphi started in 1993 and Delphi 1.0 was officially released in the United States on 14 February 1995. While code using the Turbo Pascal object model could still be compiled, Delphi featured a new syntax using the keyword class in preference to object, the Create constructor and a virtual Destroy destructor (and negating having to call the New and Dispose procedures), properties, method pointers, and some other things. These were inspired by the ISO working draft for object-oriented extensions, but many of the differences from Turbo Pascal's dialect (such as the draft's requirement that all methods be virtual) were ignored. The Delphi language has continued to evolve over the years to support constructs such as dynamic arrays, generics and anonymous methods.


Versions[edit] Borland used the name Object Pascal for the programming language in the first versions of Delphi, but later renamed it to the Delphi programming language. However, compilers that claim to be compatible with Object Pascal are often trying to be compatible with Delphi source code.[citation needed] Because Delphi is trademarked, compatible compilers continued using the name Object Pascal. Embarcadero Technologies, which purchased Delphi in 2008,[2] sells the Delphi IDE that compiles the Delphi dialect of Object Pascal to Windows and macOS, iOS, Android and Web. .NET support existed from Delphi 8 through Delphi 2005, Delphi 2006 and Delphi 2007, which now has been replaced by another language, Oxygene (see below), which is not fully backward-compatible. The Oxygene programming language developed by RemObjects Software targets the Common Language Infrastructure, the Java (software platform) Runtime Environment and Apple's Cocoa frameworks for iOS and macOS. The open source Free Pascal project allows the language to be compiled for a wide range of operating systems—including Linux (32-bit and 64-bit), FreeBSD, Classic Mac OS/macOS, Solaris, Win32, Win64 and Windows CE—as well as for several different hardware architectures. The first version of Free Pascal for the iPhone SDK 2.x was announced on January 17, 2009.[3] Now there is support for the ARM ISA also. The Smart Pascal programming language[4] targets JavaScript/ECMAScript and is used in Smart Mobile Studio, written by Jon Lennart Aasenden and published by Optimale Systemer (2012). The language greatly simplifies HTML5 development through OOP and RAD (rapid application development) approaches. Smart Pascal integrates tightly with established technologies such as node.js, Embarcadero DataSnap and Remobjects SDK to deliver high-performance client/server web applications. The language allows for easy creation of visual components and re-usable libraries. The Smart Pascal dialect stems from the DWScript language- extended to better integrate with the JavaScript environment and libraries, such as "asm" sections which are plain JavaScript but have access to Pascal symbols, or "external" classes which map directly to prototypal JavaScript classes. Smart Pascal introduces true inheritance, classes, partial classes, interfaces, a virtual method table and many other advanced constructs which are not a part of JavaScript by default. MIDletPascal is aimed at the Java byte-code platform. Note that Free Pascal targets the JVM as well, with a much richer set of features. The Morfik Pascal programming language developed by Morfik targets Ajax-enabled Web applications. The Morfik compiler is incorporated into the company's AppsBuilder IDE and allows Object Pascal code to be used in implementing code that will execute both in the browser and on the server. It uses the Free Pascal compiler to generate native binaries from Object Pascal. The open source GNU Pascal compiler is available as a front-end to the GNU compiler collection, which implements the ISO 7185 Pascal standard, and "most" of the ISO 10206 Extended Pascal standard. Also, a free compiler, Turbo51, is available for producing code for Intel 8051 chips. WDSibyl is an open source Delphi-like IDE and compiler available for Microsoft Windows and OS/2, and is a commercial Borland Pascal compatible environment released by a company called Speedsoft that was later developed into a Delphi like RAD environment called Sybil and then open sourced under the GPL when that company closed down. Wolfgang Draxler (WD) now maintains the software. (The compiler used seems to be located in a DLL and is not open-source).


Compilers[edit] Object Pascal compilers are available for a wide range of operating systems and architectures. Delphi is probably the best known compiler. It is the successor of the highly successful Borland Pascal and Turbo Pascal product line. It targets Windows 9x, the Windows NT family, .NET Framework (Delphi 8, Delphi 2005–Delphi 2007), macOS (Delphi XE2 and later), iOS (Delphi XE2 and later, generating native binaries in XE4 and later), Android (Delphi XE5 and later, generating native binaries in XE5 and later). Support for .NET finally became a separate product known as Oxygene (see below). Free Pascal Compiler (FPC) is an open-source Object Pascal compiler that supports many Pascal dialects, including those of Turbo Pascal 7 and Delphi, among others. Currently, FPC can generate code for IA-32, x86-64, PowerPC, SPARC, and ARM processors, and for various operating systems, including Microsoft Windows, Linux, FreeBSD, Classic Mac OS, and macOS (with an Xcode integration kit). Several separate projects exist to facilitate rapid application development with FPC, the most prominent one being the Lazarus IDE. GNU Pascal (A separately distributed part of the GNU Compiler Collection) While not formally aimed at the Delphi dialect of Pascal, it does contain a Borland Pascal compatibility mode, and is very slowly incorporating a few Delphi language features. It is unsuitable for recompiling large bodies of Delphi code directly, but is noteworthy as having prolific support for operating systems and hardware architectures. Oxygene (formerly known as Chrome) is an Object Pascal compiler from RemObjects Software that integrates into Microsoft Visual Studio. It is also available as free command-line compiler that runs native on CLI. It is three compilers in one, each targeting a different platform: Echoes for .NET Framework, Mono, WinRT and Windows Phone 8, Cooper for JDK and Android, and Nougat for iOS and macOS. MIDletPascal is a mobile application development tool that generates Java ME bytecode. PocketStudio is a Pascal-based IDE for Palm OS. Smart Mobile Studio is a compiler that transforms Pascal source code to JavaScript (Source-to-source compiler) Legacy products[edit] Borland Kylix was a Linux variant of Delphi which only targets Intel 32-bit Linux using the Qt library. It does not work out of the box with most modern Linux distributions. Virtual Pascal was a free 32-bit Turbo Pascal- and Delphi-compatible compiler aimed mainly at OS/2 and Microsoft Windows, although it also developed a DOS+ Extender and an experimental Linux cross-compiler. The compiler's development stopped at about the level of Delphi 2. In 2007, with its official website ceasing to operate, Virtual Pascal was discontinued from being further developed.


Interpreters[edit] Main article: Pascal Script Pascal Script (formerly known as InnerFuse) and DWScript (Delphi Web Script) are open-source Object Pascal interpreters/scripting engines written in Delphi. They support subsets of Object Pascal. DWScript can also compile Object Pascal code into JavaScript code (Smart Pascal), and supports just-in-time compilation.


Sample "Hello World" programs[edit] This section does not cite any sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (June 2013) (Learn how and when to remove this template message) Apple's Object Pascal[edit] 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's Object Pascal[edit] Still supported in Delphi and Free Pascal. FPC also packages its own substitutes for the libraries/units. Delphi doesn't. The Free Pascal 1.0 series and the FPC textmode IDE are the largest open codebases in this dialect. Free Pascal 2.0 was rewritten in a more Delphi-like dialect, and the textmode IDE and related frameworks (Free Vision) are the only parts in the TP version of Object Pascal. Stack based allocation[edit] 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. Heap based allocation[edit] 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. Another example: 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 a direct variable to a pointer of the THelloWorld type. This variable is type incompatible with PHelloWorld. } HelloWorld3: ^THelloWorld; { the compiler sees this as being type incompatible with HelloWorld2 *and* PHelloWorld. Using the pointer syntax is the only way to declare a type that is assignment compatible. } HelloWorld4: PHelloWorld; { this is type compatible with HelloWorld, but incompatible with the other two variables. } begin { This works in a similar way as the code above... but it demonstrates the disadvantage of not using a specific type. The type definition between two variables using the raw pointer based notation would be seen as "different" by the compiler. } New(HelloWorld4); HelloWorld := HelloWorld4; { this is valid - the type assignment is valid } HelloWorld2 = HelloWorld; { this would be a compiler error } {disposes left out for brevity} New(HelloWorld3); HelloWorld := HelloWorld3; { this would be a compiler error } HelloWorld2 = HelloWorld3; { this would be a compiler error } {disposes left out for brevity} end. This is an important distinction to make, and could be seen as one of the key differences that led to the Delphi style of "hiding" the heap allocation and pointer notation from the programmer. Delphi removed the need for the additional Pointer type and pointer syntax, but retained the explicit construction mechanism. Delphi and Free Pascal's Object Pascal[edit] 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. Note that the object construct is still available in Delphi and Free Pascal. Oxygene Object Pascal[edit] 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's Object Pascal (a.k.a. Smart Pascal)[edit] type THelloWorld = class procedure Put; begin PrintLn('Hello, World!'); end end; var HelloWorld := THelloWorld.Create; HelloWorld.Put; Note that the method implementation can also be made in a distinct location as in other Object Pascal dialects.


Development[edit] Many features have been introduced continuously to Object Pascal with extensions to Delphi and extensions to FreePascal. In reaction to criticism, Free Pascal has adopted generics with the same syntax as Delphi, provided Delphi compatibility mode is selected, and both Delphi (partially) and Free Pascal (more extensive) support operator overloading. Delphi has also introduced many other features since version 7[5] including generics. Whereas FreePascal tries to be compatible to Delphi in Delphi compatibility mode, it also traditionally introduced many new features to the language that are not always available in Delphi.


References[edit] ^ Gibson, Steve (May 8, 1989). "Borland and Microsoft Enter the Object-Oriented Pascal Ring". Infoworld. p. 28.  |access-date= requires |url= (help) ^ Community Letter: Embarcadero Technologies agrees to acquire CodeGear from Borland. Edn.embarcadero.com. Retrieved on 2013-07-21. ^ "iPhone/iPod development". Free Pascal development team. Retrieved 2009-04-13.  ^ "A Smart Book".  ^ "New Delphi language features since Delphi 7". CodeGear. Retrieved 2008-07-06. 


External links[edit] 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. "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." Object Pascal reference guide for Free Pascal, downloadable PDF Delphi-Help - первая помощь программисту на Delphi Major Differences Between the Syntax of C++ and Object Pascal Delphi Programming, Resource of Delphi Programming & Delphi Programming Forums. Delphi Programming Helper - An app that contains references and help for Pascal/Delphi. v t e Pascal programming language family Dialects Pascal Object Pascal Pascal Script Oxygene Clascal Concurrent Pascal SuperPascal Compilers Current Delphi Oxygene PocketStudio HP Pascal IP Pascal Free Pascal (Lazarus) PascalABC.NET GNU Pascal Turbo51 MIDletPascal Pic Micro Pascal ACK Historic Virtual Pascal Apple Pascal Turbo Pascal Microsoft Pascal UCSD Pascal JRT Pascal/MT+ API CLX FCL FireMonkey LCL Object Windows Library OpenWire RTL Turbo Vision Visual Component Library Comparison of Pascal and C Comparison of Pascal and Delphi Related to ALGOL (1958) Modula-2 (1977) Ada (1983) Oberon (1986) Modula-3 (1988) Oberon-2 (1991) Component Pascal (1991) Retrieved from "https://en.wikipedia.org/w/index.php?title=Object_Pascal&oldid=823918442" Categories: BorlandCodeGear softwareDelphi (programming language)Object-oriented programming languagesPascal programming language familyProgramming languages created in 1986Hidden categories: Pages using citations with accessdate and no URLArticles to be expanded from April 2009All articles to be expandedArticles using small message boxesAll articles with unsourced statementsArticles with unsourced statements from August 2009Articles needing additional references from June 2013All articles needing additional references


Navigation menu Personal tools Not logged inTalkContributionsCreate accountLog in Namespaces ArticleTalk Variants Views ReadEditView history More Search Navigation Main pageContentsFeatured contentCurrent eventsRandom articleDonate to WikipediaWikipedia store Interaction HelpAbout WikipediaCommunity portalRecent changesContact page Tools What links hereRelated changesUpload fileSpecial pagesPermanent linkPage informationWikidata itemCite this page Print/export Create a bookDownload as PDFPrintable version Languages العربيةČeštinaDanskDeutschEspañolEsperantoفارسیFrançais한국어LatinaMagyarBahasa MelayuNederlands日本語NorskPolskiPortuguêsRomânăРусскийShqipSlovenčinaСрпски / srpskiSuomiSvenskaไทยТоҷикӣTürkçeУкраїнська中文 Edit links This page was last edited on 4 February 2018, at 05:54. Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization. Privacy policy About Wikipedia Disclaimers Contact Wikipedia Developers Cookie statement Mobile view (window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.236","walltime":"0.308","ppvisitednodes":{"value":1177,"limit":1000000},"ppgeneratednodes":{"value":0,"limit":1500000},"postexpandincludesize":{"value":39220,"limit":2097152},"templateargumentsize":{"value":3287,"limit":2097152},"expansiondepth":{"value":12,"limit":40},"expensivefunctioncount":{"value":5,"limit":500},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 235.929 1 -total"," 32.36% 76.338 1 Template:Infobox_programming_language"," 29.92% 70.599 1 Template:Infobox"," 26.03% 61.407 1 Template:Reflist"," 15.51% 36.592 1 Template:Cite_news"," 14.70% 34.683 1 Template:Expand_section"," 13.79% 32.542 2 Template:Ambox"," 9.27% 21.879 1 Template:Citation_needed"," 7.86% 18.550 1 Template:Fix"," 7.04% 16.603 2 Template:Navbox"]},"scribunto":{"limitreport-timeusage":{"value":"0.088","limit":"10.000"},"limitreport-memusage":{"value":3041482,"limit":52428800}},"cachereport":{"origin":"mw1270","timestamp":"20180211012048","ttl":86400,"transientcontent":true}}});});(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":91,"wgHostname":"mw1266"});});


Delphi_(programming_language) - Photos and All Basic Informations

Delphi_(programming_language) More Links

Programming ParadigmImperative ProgrammingStructured ProgrammingObject-oriented ProgrammingFunctional ProgrammingComponent-based Software EngineeringEvent-driven ProgrammingGeneric ProgrammingSoftware DesignNiklaus WirthAnders HejlsbergType SystemType SystemRun-time Type InformationType SystemType SystemFilename ExtensionProgramming Language ImplementationEmbarcadero DelphiX86ARM ArchitectureFree PascalX86PowerPCPpc64SPARCMIPS ArchitectureARM ArchitectureOxygene (programming Language)Common Language InfrastructureJava (programming Language)Cocoa (API)JavaScriptDialect (computing)Turbo PascalFree PascalOxygene (programming Language)Pascal (programming Language)SimulaSmalltalkC Sharp (programming Language)Genie (programming Language)Java (programming Language)Nim (programming Language)Object-oriented ProgrammingPascal (programming Language)Programming LanguageDelphi (IDE)Apple ComputerLarry TeslerNiklaus WirthClascalApple LisaMacAppClass LibraryLarry TeslerSyntax HighlightingSymantecPowerPCC++BorlandTurbo PascalDOSMicrosoft WindowsEmbarcadero DelphiInternational Organization For StandardizationDraft DocumentVirtual FunctionDynamic ArrayGeneric ProgrammingAnonymous FunctionBorlandCompilerWikipedia:Citation NeededEmbarcadero TechnologiesEmbarcadero DelphiIntegrated Development EnvironmentWindowsMacOSIOSAndroid (Operating System).NET FrameworkOxygene (programming Language)RemObjects SoftwareCommon Language InfrastructureJava (software Platform)Apple Inc.Cocoa (API)IOSMacOSOpen SourceFree PascalLinuxFreeBSDClassic Mac OSMacOSSolaris (operating System)Win32Win64Windows CEApple IPhoneSoftware Development KitARM ArchitectureInstruction SetJavaScriptECMAScriptHTML5Object-oriented ProgrammingRapid Application DevelopmentNode.jsVirtual Method TableMIDletPascalMorfikMorfikFree PascalGNU PascalGNUGNU Compiler CollectionInternational Organization For StandardizationIntel 8051Microsoft WindowsOS/2Borland PascalRapid Application DevelopmentCompilerOperating SystemDelphi (IDE)Borland PascalTurbo PascalWindows 9xWindows NT.NET FrameworkMacOSIOSAndroid OSFree PascalTurbo PascalIA-32X86-64PowerPCSPARCARM ArchitectureMicrosoft WindowsLinuxFreeBSDClassic Mac OSMacOSXcodeLazarus (software)GNU PascalGNU Compiler CollectionOxygene (programming Language)RemObjects SoftwareMicrosoft Visual StudioCommon Language Infrastructure.NET FrameworkMono (software)WinRTWindows Phone 8JDKAndroid (operating System)IOSMacOSMIDletPascalJava MEPocketStudioIntegrated Development EnvironmentPalm OSJavaScriptSource-to-source CompilerBorland KylixLinuxQt (toolkit)Virtual PascalOS/2Pascal ScriptInterpreter (computing)Wikipedia:Citing SourcesWikipedia:VerifiabilityHelp:Introduction To Referencing With Wiki Markup/1Wikipedia:VerifiabilityHelp:Maintenance Template RemovalHelp:CS1 ErrorsTemplate:Pascal Programming Language FamilyTemplate Talk:Pascal Programming Language FamilyPascal (programming Language)Pascal (programming Language)Pascal ScriptOxygene (programming Language)ClascalConcurrent PascalSuperPascalDelphi (IDE)Oxygene (programming Language)PocketStudioHP PascalIP PascalFree PascalLazarus (IDE)PascalABC.NETGNU PascalTurbo51MIDletPascalPic Micro PascalAmsterdam Compiler KitVirtual PascalApple PascalTurbo PascalMicrosoft PascalUCSD PascalJRT (programming Language)Pascal/MT+Application Programming InterfaceComponent Library For Cross PlatformFree Component LibraryFireMonkeyLazarus Component LibraryObject Windows LibraryOpenWire (library)Free Pascal Runtime LibraryTurbo VisionVisual Component LibraryComparison Of Pascal And CComparison Of Pascal And DelphiALGOLModula-2Ada (programming Language)Oberon (programming Language)Modula-3Oberon-2Component PascalHelp:CategoryCategory:BorlandCategory:CodeGear SoftwareCategory:Delphi (programming Language)Category:Object-oriented Programming LanguagesCategory:Pascal Programming Language FamilyCategory:Programming Languages Created In 1986Category:Pages Using Citations With Accessdate And No URLCategory:Articles To Be Expanded From April 2009Category:All Articles To Be ExpandedCategory:Articles Using Small Message BoxesCategory:All Articles With Unsourced StatementsCategory:Articles With Unsourced Statements From August 2009Category:Articles Needing Additional References From June 2013Category:All Articles Needing Additional ReferencesDiscussion About Edits From This IP Address [n]A List Of Edits Made From This IP Address [y]View The Content Page [c]Discussion About The Content Page [t]Edit This Page [e]Visit The Main Page [z]Guides To Browsing WikipediaFeatured Content – The Best Of WikipediaFind Background Information On Current EventsLoad A Random Article [x]Guidance On How To Use And Edit WikipediaFind Out About WikipediaAbout The Project, What You Can Do, Where To Find ThingsA List Of Recent Changes In The Wiki [r]List Of All English Wikipedia Pages Containing Links To This Page [j]Recent Changes In Pages Linked From This Page [k]Upload Files [u]A List Of All Special Pages [q]Wikipedia:AboutWikipedia:General Disclaimer



view link view link view link view link view link