Pascal (programming language): Difference between revisions

Content deleted Content added
m Removing link(s) undefined (XFDcloser)
m WP:LINKs: update-standardizes, adds, WP:Disambiguates, WP:EASTEREGGs clarify for WP:LEAST surprise.
Line 26:
* [[Java (programming language)|Java]]<ref>{{cite web| url=http://java.sun.com/docs/white/delegates.html |title=About Microsoft's "Delegates" |archive-url=https://web.archive.org/web/20120627043929/http://java.sun.com/docs/white/delegates.html |archive-date=2012-06-27 |quote=We looked very carefully at Delphi [[Object Pascal]] and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs&nbsp;... Our conclusion was that bound method references are unnecessary and detrimental to the language. This decision was made in consultation with Borland International, who had previous experience with bound method references in Delphi [[Object Pascal]].}}</ref><ref>{{cite web |url=http://www.fscript.org/prof/javapassport.pdf |quote=The project went ahead under the name "green" and the language was based on an old model of [[UCSD Pascal]], which makes it possible to generate interpretive code |title=History of Java |work=Java Application Servers Report |author=TechMetrix Research |date=1999 |url-status=dead |archive-url=https://web.archive.org/web/20101229090912/http://www.fscript.org/prof/javapassport.pdf |archive-date=2010-12-29}}</ref><ref>{{cite web|url=http://queue.acm.org/detail.cfm?id=1017013|title=A Conversation with James Gosling – ACM Queue|access-date=11 August 2015|url-status=live|archive-url=https://web.archive.org/web/20150716194245/http://queue.acm.org/detail.cfm?id=1017013|archive-date=16 July 2015}}</ref>
* [[Modula]]{{\}}[[Modula-2|-2]]{{\}}[[Modula-3|-3]]
* [[Oberon (programming language)|Oberon]]{{\}}[[Oberon-2 (programming language)|-2]]
* [[Object Pascal]]
* [[Oxygene (programming language)|Oxygene]]
Line 90:
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.
Line 123:
[[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 Wisconsin-Madison[[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>
Line 193:
Often-used types like byte and string are already defined in many implementations.
 
Normally the system will use a [[Word (computer architecture)|word]] to store the data. For instance, the {{code|byte}} type may be stored in a machine integer - 32 bits perhaps - rather than an [[8-bit computing|8-bit]] value. Pascal does not contain language elements that allow the basic storage types to be defined more granularly. This capability was included in a number of Pascal extensions and follow-on languages, while others, like [[Modula-2]], expanded the built-in set to cover most machine data types like 16-bit integers.
 
The {{code|packed}} keyword tells the compiler to use the most efficient method of storage for the structured data types: sets, arrays and records, rather than using one [[Word (computer architecture)|word]] for each element. Packing may slow access on machines that do not offer easy access to parts of a word.
Line 464:
===ISO/IEC 10206:1990 Extended Pascal===
{{Expand section|date=February 2018}}
In 1990, an extended Pascal standard was created as ISO/IEC 10206,<ref>{{cite book|title=Extended Pascal: ISO/IEC 10206:1990|url=http://www.dcs.gla.ac.uk/~wpc/reports/compilers/compilerindex/iso10206.ps|access-date=16 September 2014|url-status=dead|archive-url=https://web.archive.org/web/20160327025949/http://www.dcs.gla.ac.uk/%7Ewpc/reports/compilers/compilerindex/iso10206.ps|archive-date=2016-03-27}}</ref> which is identical in technical content<ref name="ISO/ANSI identical">{{cite web|title=Language standards: Pascal, Extended Pascal, Fortan|url=http://www.prosperosoftware.com/std.html|access-date=16 September 2014|ref=identical|archive-url=https://web.archive.org/web/20140714024231/http://www.prosperosoftware.com/std.html|archive-date=2014-07-14}}</ref> to IEEE/ANSI 770X3.160-1989<ref>{{cite book|doi=10.1109/IEEESTD.1990.101061|isbn=978-0-7381-4247-0|date=1990 |title=IEEE/ANSI Standard for the Programming Language Extended Pascal }}</ref>
As of 2019, Support of Extended Pascal in [[FreePascal]] Compiler is planned.<ref>{{Cite web|url=https://wiki.freepascal.org/Extended_Pascal|title=Extended Pascal - Free Pascal wiki|website=wiki.freepascal.org}}</ref>
<!-- WHAT FOLLOW APPEARS FACTUALLY WRONG AND IS COMMENTED OUT FOR FUTURE REFERENCE