Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Pascal (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Implementations== ===Early compilers=== The first Pascal [[compiler]] was designed in [[Zürich]] for the [[CDC 6000 series]] [[mainframe computer]] family. [[Niklaus Wirth]] reports that a first attempt to implement it in [[Fortran|FORTRAN 66]] in 1969 was unsuccessful due to FORTRAN 66's inadequacy to express complex data structures. The second attempt was implemented in a C-like language (Scallop by Max Engeli) and then translated by hand (by R. Schild) to Pascal itself for boot-strapping.<ref>[https://www.inf.ethz.ch/personal/wirth/Miscellaneous/ComputersAndComputing.pdf Computers and Computing. A Personal Perspective.] {{webarchive|url=https://web.archive.org/web/20170510101203/https://www.inf.ethz.ch/personal/wirth/Miscellaneous/ComputersAndComputing.pdf |date=2017-05-10}} by Niklaus Wirth</ref> It was operational by mid-1970. Many Pascal compilers since have been similarly [[Self-hosting (compilers)|self-hosting]], that is, the compiler is itself written in Pascal, and the compiler is usually capable of recompiling itself when new features are added to the language, or when the compiler is to be [[porting|ported]] to a new environment. The [[GNU Pascal]] compiler is one notable exception, being written in C. The first successful port of the CDC Pascal compiler to another mainframe was completed by Welsh and Quinn at the [[Queen's University of Belfast]] (QUB) in 1972. The target was the [[International Computers Limited]] (ICL) [[ICT 1900 series|1900 series]]. This compiler, in turn, was the parent of the Pascal compiler for the Information Computer Systems (ICS) [[Multum]] minicomputer. The Multum port was developed – with a view to using Pascal as a systems programming language – by Findlay, Cupples, Cavouras and Davis, working at the Department of Computing Science in [[Glasgow University]]. It is thought that Multum Pascal, which was completed in the summer of 1973, may have been the first [[16-bit computing|16-bit]] implementation. A completely new compiler was completed by Welsh et al. at QUB in 1977. It offered a source-language diagnostic feature (incorporating profiling, tracing and type-aware formatted postmortem dumps) that was implemented by Findlay and Watt at Glasgow University. This implementation was ported in 1980 to the [[ICL 2900]] series by a team based at [[Southampton University]] and Glasgow University. The Standard Pascal Model Implementation was also based on this compiler, having been adapted, by Welsh and Hay at [[Manchester University]] in 1984, to check rigorously for conformity to the BSI 6192/ISO 7185 Standard and to generate code for a portable abstract machine. The first Pascal [[compiler]] written in North America was constructed at the [[University of Illinois at Urbana–Champaign|University of Illinois]] under [[Donald B. Gillies#Later career|Donald B. Gillies]] for the [[PDP-11]] and generated native machine code. Microsoft had Pascal compilers for IBM PCs, see [[Microsoft Pascal]]. ==={{anchor|Pascal-P}}The Pascal-P system=== To propagate the language rapidly, a compiler ''porting kit'' was created in Zürich that included a compiler that generated so called [[p-code machine|p-code]] for a ''virtual'' stack machine, i.e., code that lends itself to reasonably efficient interpretation, along with an interpreter for that code – the ''Pascal-P'' system. The P-system compilers were named Pascal-P1, Pascal-P2, Pascal-P3, and Pascal-P4. Pascal-P1 was the first version, and Pascal-P4 was the last to come from Zürich. The version termed Pascal-P1 was coined after the fact for the many different sources for Pascal-P that existed. The compiler was redesigned to enhance [[software portability|portability]], and issued as Pascal-P2. This code was later enhanced to become Pascal-P3, with an intermediate code [[backward compatible]] with Pascal-P2, and Pascal-P4, which was not backward compatible. The Pascal-P4 compiler–interpreter can still be run and compiled on systems compatible with original Pascal (as can Pascal-P2). However, it only accepts a subset of the Pascal language. Pascal-P5, created outside the Zürich group, accepts the full Pascal language and includes ISO 7185 compatibility. Pascal-P6 is a follow on to Pascal-P5 that along with other features, aims to be a compiler for specific CPUs, including AMD64. [[UCSD Pascal]] branched off Pascal-P2, where [[Kenneth Bowles]] used it to create the [[Interpreter (computing)|interpretive]] UCSD p-System. It was one of three operating systems available at the launch of the original [[IBM Personal Computer]].<ref>[http://www.cbi.umn.edu/oh/pdf/oh392jb.pdf cbi.umn.edu], "An Interview with John Brackett and Doug Ross"{{dead link |date=March 2018 |bot=InternetArchiveBot |fix-attempted=yes}}, p15, Charles Babbage Institute, 2004</ref> UCSD Pascal used an intermediate code based on byte values, and thus was one of the earliest ''[[bytecode]] compilers''. [[Apple Pascal]] was released in 1979 for the Apple II and [[Apple III]] computer systems. It was an implementation of, or largely based on, UCSD Pascal. Pascal-P1 through Pascal-P4 were not, but rather based on the [[CDC 6600]] 60-bit word length. A compiler based on the Pascal-P4 compiler, which created native binary [[OS/360 Object File Format|object files]], was released for the [[IBM System/370]] [[mainframe computer]] by the [[Australian Atomic Energy Commission]]; it was named the ''AAEC Pascal 8000 Compiler'' after the abbreviation of the name of the commission.<ref>{{cite report |url=http://www.iaea.org/inis/collection/NCLCollectionStore/_Public/10/477/10477561.pdf |date=1977 |title=Australian Atomic Energy Commission Research Establishment, Lucas Heights, Nuclear Science and Technology Branch Report, Divisional Research |page=22 |website=International Atomic Energy Agency (IEAE)}}</ref> ===Object Pascal and Turbo Pascal=== Apple Computer created its own Lisa Pascal for the Lisa Workshop in 1982, and ported the compiler to the Apple Macintosh and [[Macintosh Programmer's Workshop|MPW]] in 1985. In 1985 [[Larry Tesler]], in consultation with Niklaus Wirth, defined Object Pascal and these extensions were incorporated in both the Lisa Pascal and Mac Pascal compilers. In the 1980s, [[Anders Hejlsberg]] wrote the Blue Label Pascal compiler for the [[Nascom]]-2. A reimplementation of this compiler for the [[IBM PC]] was marketed under the names Compas Pascal and PolyPascal before it was acquired by [[Borland]] and renamed ''Turbo Pascal''. [[Turbo Pascal]] became hugely popular, thanks to an aggressive pricing strategy, having one of the first full-screen IDEs, and very fast turnaround time (just seconds to compile, link, and run). It was written and highly optimized entirely in [[assembly language]], making it [[Memory footprint|smaller]] and faster than much of the competition. In 1986, Anders ported Turbo Pascal to the Macintosh and incorporated Apple's Object Pascal extensions into Turbo Pascal. These extensions were then added back into the PC version of Turbo Pascal for version 5.5. At the same time [[Microsoft]] also implemented the Object Pascal compiler.<ref>Jon Udell, Crash of the Object-Oriented Pascals, BYTE, July, 1989.</ref><ref>M. I. Trofimov, The End of Pascal?, BYTE, March, 1990, p. 36.</ref> Turbo Pascal 5.5 had a large influence on the Pascal community, which began concentrating mainly on the IBM PC in the late 1980s. Many PC hobbyists in search of a structured replacement for BASIC used this product. It also began to be adopted by professional developers. Around the same time a number of concepts were imported from [[C (programming language)|C]] to let Pascal programmers use the C-based [[application programming interface]] (API) of [[Microsoft Windows]] directly. These extensions included null-terminated [[String (computer science)|string]]s, [[pointer arithmetic]], [[function pointer]]s, an address-of operator, and unsafe [[type conversion|typecasts]]. Turbo Pascal and other derivatives with ''unit'' or ''module'' structures are [[modular programming]] languages. However, it does not provide a nested module concept or qualified import and export of specific symbols. ==={{anchor|Pascal-SC|Pascal-XSC}}Other variants=== [[Super Pascal]] adds non-numeric labels, a return statement and expressions as names of types. TMT Pascal was the first [[Borland]]-compatible compiler for [[32-bit computing|32-bit]] [[MS-DOS]] compatible [[protected mode]], [[OS/2]], and [[Win32]]. It extends the language with function and [[operator overloading]]. The universities of [[University of Wisconsin–Madison|Wisconsin–Madison]], [[University of Zurich|Zürich]], [[Karlsruhe Institute of Technology|Karlsruhe]], and [[University of Wuppertal|Wuppertal]] developed the ''Pascal-SC''<ref>{{cite journal |last1=Rall |first1=L. B. |date=1987 |title=An introduction to the scientific computing language Pascal-SC |journal=Computers |volume=14 |pages=53–69 |doi=10.1016/0898-1221(87)90181-7|doi-access=}}</ref><ref name="Cadmus_1986">{{cite journal |title=Cadmus jetzt mit Kulisch-Arithmetik - Uni Karlsruhe gibt Pascal-Compiler nach München |trans-title=Cadmus now comes with Kulisch arithmetic - University Karlsruhe delivers Pascal compiler to Munich |author=PI |date=1986-08-29 |journal=[[Computerwoche]] |publisher=[[IDG Business Media GmbH]] |language=de |location=Munich – Karlsruhe, Germany |url=http://www.computerwoche.de/a/uni-karlsruhe-gibt-pascal-compiler-nach-muenchen-cadmus-jetzt-mit-kulisch-arithmetik,1165749 |access-date=2016-05-30 |url-status=dead |archive-url=https://web.archive.org/web/20160530220339/http://www.computerwoche.de/a/uni-karlsruhe-gibt-pascal-compiler-nach-muenchen-cadmus-jetzt-mit-kulisch-arithmetik,1165749 |archive-date=2016-05-30}}</ref> and ''Pascal-XSC''<ref>{{cite web |url=http://www.rz.uni-karlsruhe.de/~iam/html/language/pxsc.html |title=Pascal-XSC: Pascal for Extended Scientific Computing |url-status=dead |archive-url=https://web.archive.org/web/20140105102206/http://www.rz.uni-karlsruhe.de/~iam/html/language/pxsc.html |archive-date=2014-01-05}}</ref><ref>{{cite web |url=http://www.xsc.de/ |title=XSC Software |access-date=11 August 2015 |url-status=dead |archive-url=https://web.archive.org/web/20151101160306/http://www.xsc.de/ |archive-date=1 November 2015}}</ref><ref>{{cite web |url=http://www2.math.uni-wuppertal.de/wrswt/xsc/pxsc_download.html |title=Universitaet Wuppertal: Wissenschaftliches Rechnen / Softwaretechnologie |access-date=11 August 2015 |url-status=dead |archive-url=https://web.archive.org/web/20151106022857/http://www2.math.uni-wuppertal.de/wrswt/xsc/pxsc_download.html |archive-date=6 November 2015}}</ref> (''[[Extensions for Scientific Computation]]'') compilers, aimed at programming numerical computations. Development for Pascal-SC started in 1978 supporting ISO 7185 Pascal level 0, but level 2 support was added at a later stage.<ref name="Wallis_1990">{{cite book |title=Improving Floating-Point Programming |editor-first=Peter J. L. |editor-last=Wallis |author-first1=Lothar |author-last1=Bamberger |author-first2=James H. |author-last2=Davenport |author-first3=Hans-Christoph |author-last3=Fischer |author-first4=Jan |author-last4=Kok |author-first5=Günter |author-last5=Schumacher |author-first6=Christian |author-last6=Ullrich |author-first7=Peter J. L. |author-last7=Wallis |author-first8=Dik T. |author-last8=Winter |author-first9=Jürgen |author-last9=Wolff von Gudenberg |date=1990 |edition=1st |publisher=[[John Wiley & Sons Ltd.]] |location=Bath, United Kingdom |isbn=0-471-92437-7 <!--|ISBN=978-0-471-92437-1 -->}}</ref> Pascal-SC originally targeted the [[Z80]] processor, but was later rewritten for DOS ([[x86]]) and [[Motorola 68000|68000]]. Pascal-XSC has at various times been ported to Unix (Linux, [[SunOS]], [[HP-UX]], [[IBM AIX|AIX]]) and Microsoft/IBM (DOS with [[EMX (programming environment)|EMX]], OS/2, [[Windows]]) operating systems. It operates by generating intermediate C source code which is then compiled to a native executable. Some of the Pascal-SC language extensions have been adopted by [[GNU Pascal]]. Pascal Sol was designed around 1983 by a French team to implement a [[Unix-like]] system named Sol. It was standard Pascal level-1 (with parameterized array bounds) but the definition allowed alternative keywords and predefined identifiers in French and the language included a few extensions to ease system programming (e.g. an equivalent to lseek).<ref>Michel Gien, "The SOL Operating System", in Usenix Summer '83 Conference, Toronto, ON, (July 1983), pp. 75–78</ref> The Sol team later on moved to the [[ChorusOS]] project to design a [[distributed operating system]].<ref>{{Cite web|url=http://www.cs.berkeley.edu/~prabal/resources/osprelim/RAA+92.pdf|archiveurl=https://web.archive.org/web/20150207194433/http://www.cs.berkeley.edu/~prabal/resources/osprelim/RAA+92.pdf|url-status=dead|title=Overview of the CHORUS Distributed Operating Systems|year=1991|work=Chorus systems|via=cs.berkeley.edu|archivedate=February 7, 2015}}</ref> [[IP Pascal]] is an implementation of the Pascal programming language using [[Micropolis (company)|Micropolis]] DOS, but was moved rapidly to [[CP/M-80]] running on the Z80. It was moved to the [[80386]] machine types in 1994, and exists today as [[Windows XP]] and Linux implementations. In 2008, the system was brought up to a new level and the resulting language termed "Pascaline" (after [[Pascal's calculator]]). It includes objects, [[namespace]] controls, [[dynamic array]]s, and many other extensions, and generally features the same functionality and type protection as [[C Sharp (programming language)|C#]]. It is the only such implementation that is also compatible with the original Pascal implementation, which is standardized as ISO 7185.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)