**Turbo Pascal** var et imperativt og strukturert programmeringsspråk som ble lansert av Borland den 20. november 1983. Turbo Pascal bestod av en kompilator for Pascal og et integrert utviklingsmiljø, og var et innovativt og trendsettende produkt på begge områder.

Merkenavnet **Turbo** betyr at eksekverbare filer ble generert raskt, og ikke nødvendigvis at koden var optimal. Kompilering, lasting og lenking av objektfiler foregikk automatisk i én enkelt sekvens, mens disse oppgavene i tidligere versjoner av Pascal var blitt utført manuelt hver for seg. Borland benyttet samme konsept og merkenavn i Turbo C, Turbo C++, Turbo Modula-2, Turbo Prolog, Turbo Basic og Turbo Assembler.

Turbo Pascal var også en egen variant eller dialekt av Pascal, med flere utvidelser av syntaksen til ISO Pascal. Versjon 4.0 tilføyde syntaks for generering av biblioteker («Units»), etter modell fra Modula-2. I versjon 5.5 ble språket utvidet med objektorientert programmering.

Navnet **Borland Pascal** ble i versjon 7.0 brukt om en mer avansert programpakke. Den hadde flere biblioteker og ble lansert sammen med kildekoden til kompilatorens standardbiblioteker. Den billigere grunnversjonen ble fortsatt solgt og markedsført som **Turbo Pascal**.

I 1995 var det slutt. Da besluttet Borland å erstatte Turbo Pascal med det visuelle utviklingsverktøyet Delphi. Det var basert på *Rapid application development* og på det objektorienterte språket Objekt Pascal. Turbo Pascal har likevel historisk interesse. Dets syntaks levde videre i kompilatorer som Free Pascal og Virtual Pascal. Også GNU Pascal støtter syntaksen i Turbo Pascal.

De tre første versjonene
------------------------

### Røttene til Turbo Pascal

Datamaskinen Nascom-2
Røttene til Turbo Pascal begynner i Danmark i 1981. Programmereren Anders Hejlsberg laget da *Blue Label Pascal* for en Nascom-2 datamaskin, forsynt med 8-biter mikroprosessoren Zilog Z80A og operativsystemet CP/M 2.2.

Anders Hejlsberg laget forgjengerne til Turbo Pascal.
Kompilatoren støttet det meste av spesifikasjonene til Pascal. Unntakene var brukerdefinerte datatyper, den abstrakte datatypen for sett (mengde) og filtyper. Heltall var 16 biter, mens desimaltall ble implementert med 11.5 signifikante siffer. Kompilatoren støttet også lenking til eksterne funksjoner og prosedyrer skrevet i maskinkode.

Systemet inkluderte en «Find»-kommando for å flytte fra en adresse i objektkoden til linjen med programtekst i kildekoden. Blue Label Pascal opptok 12 Kb, fordelt på kompilatoren (5,5 Kb), teksteditoren (1,5 Kb), biblioteksrutiner (4,5 Kb) og et kontrollprogram (0,5 Kb), og var tilgjengelig på kassett eller EPROM.

I 1982 omarbeidet Hejlsberg kompilatoren til å kjøre på CP/M og IBM PC med operativsystemet MS-DOS. Den ble markedsført som *Compas Pascal* av hans danske selskap, *Poly-Data microcenter*.

Tredje versjon ble kalt *Poly Pascal*, og hadde et kommandolinje-grensesnitt. Kompilatoren ble lansert for CP/M-80, og var en komplett implementasjon av Pascal-spesifikasjonen til Niklaus Wirth.

### Turbo Pascal 1.0 (1983)

I 1983 ble kompilatoren solgt til Borland, og under Phillipe Kahns lederskap ble den 20. november 1983 lansert under merkenavnet **Turbo Pascal**. Som en del av avtalen ble Hejlsberg en av de opprinnelige medlemmene av Borland, og i sin tid hos Borland videreutviklet han Turbo Pascal, og endte opp som hovedansvarlig for utviklingen av de tre første versjonene av Delphi.

Merkenavnet **Turbo** betyr at eksekverbare filer ble generert raskt, og ikke nødvendigvis at koden var optimal. Kompilering, lasting og lenking av objektfiler foregikk automatisk i én enkelt sekvens, mens disse oppgavene i tidligere versjoner av Pascal var blitt utført manuelt hver for seg. For eksempel opererte Microsoft Pascal med kompilering i to forskjellige faser og en lenking til slutt. Dette tok flere minutter på systemer med bare diskett som sekundært lagringsmedium.

Phillipe Kahn, leder av Borland.
Turbo Pascal ble lansert på én enkelt diskett, både i 8-toms og 5¼-toms utgaver. Disketten inneholdt ti filer:

* TURBO.COM - kompilatoren og teksteditoren
* TURBOMSG.OVR - feilmeldingsfil
* TINST.COM - det integrerte utviklingsmiljøet
* TINSTMSG.OVR - meldingsfil for TINST programmet
* TLIST.COM - programopplister
* ERROR.DOC - addendum til Turbo referansemanual
* CALC.PAS - MicroCalc (regneark)
* CALCMAIN.PAS - Demoprogrammer av hvordan man inkluderer filer
* CALC.HLP - Manual for MicroCalc
* CALCDEMO.MCS - Eksempler på bruk av regnearket

Totalt utgjorde filene en størrelse på 131 297 byte. Størrelsen på TURBO.COM var 33 280 byte. Kompilerte programmer kunne også kjøres fra det integrerte utviklingsmiljøet, og teksteditoren benyttet de samme hurtigtaster som tekstbehandleren WordStar. Det lille regnearket *MicroCalc* var et demoprogram som var skrevet i Turbo Pascal. Det overlevde under ulike navn helt til lanseringen av Delphi. 

Turbo Pascal 1.0 ble lansert i utgaver for tre forskjellige operativsystemer: CP/M-80, CP/M-86 og MS-DOS. CP/M-utgaven kunne benyttes på DEC Rainbow 100, Commodore 64 med et CP/M sidekort og på Apple II med sidekortet Z-80 SoftCard som ble lansert av Microsoft i 1980. På denne tiden benyttet CP/M filnavnsuffikset .COM, mens MS-DOS benyttet både .COM og .EXE. Turbo Pascal 1.0 genererte bare .COM filer. 

Koprosessoren Intel 8087. Turbo Pascal hadde delvis (versjon 2.0) og full (versjon 3.0) støtte for dens instruksjonssett.
Turbo Pascal diskettene manglet kopibeskyttelse og kom med en «boklisens»: *«Du kan behandle denne programvare nettopp som en bok ... den kan brukes av et hvilket som helst antall mennesker ... kan fritt flyttes fra en datamaskin til en annen, så lenge som der ikke er noen mulighet for at den brukes et sted samtidig som den brukes på et annet.»* Turbo Pascal kostet $49.95 og ble ekstrem populær. Borland solgte omkring 250 000 programpakker i de to første årene.

### Turbo Pascal 2.0 (1984)

Versjon 2.0 ble lansert 17. april 1984 på én enkelt 5¼-toms diskett. Den hadde delvis støtte for instruksjonssettet til koprosessoren Intel 8087. Denne versjonen støttet filnavnsuffiksene .COM og .CMD.

Brukergrensesnittet i teksteditoren var endret fra en gul-og-grå til en grå-og-hvit palett, og *Execute* var fjernet fra menykommandoen. Noen få endringer hadde funnet sted i kompilatoren, som økning i størrelsen på de eksekverbare filene.

### Turbo Pascal 3.0 (1985)

Versjon 3.0 ble lansert den 17. april 1985, også på én enkelt 5¼-toms diskett. Den var den første versjonen som fikk stor utbredelse. En mindre oppdatering, versjon 3.0.2, ble lansert 17. september 1986. Dette var den siste versjonen som kom i utgaver for CP/M. Systemkravene var CP/M versjon 2.2 eller høyere, og CP/M-86 versjon 1.1 eller høyere. På CP/M kunne denne versjonen generere programmer som var større enn 64 kilobyte, ved å benytte *overlays*.

MS-DOS utgaven hadde full støtte hele instruksjonssettet til koprosessoren Intel 8087 gjennom et bibliotek. På datamaskiner uten Intel 8087 benyttet Turbo Pascal 3.0 en emulator. Den støttet også *Binary-coded decimal* (BCD), som eliminerte avrundingsfeil.

En rekke tilleggsprogrammer for Turbo Pascal 3 for MS-DOS kunne kjøpes separat: Opplæringsprogrammet *Turbo Tutor* (en 5¼-toms diskett) med programeksempler, tilleggsverktøy *Turbo Editor Toolbox* (to 5¼-toms disketter som ble lansert den 12. november 1985), biblioteksrutinene *Turbo Gameworks* for videospill, grafiske biblioteker i *Turbo Graphix* (deriblant skilpaddegrafikk samt egne rutiner for farge, lyd, vinduer), databasen *Turbo Database* og de matematiske rutinene *Numerical Methods*.

### Turbo Pascal for Macintosh (1985)

I 1985 lanserte Borland også Turbo Pascal for Macintosh. I likhet med de tre første versjonene for CP/M og MS-DOS, var den skrevet i kompakt assembler og hadde et svært avansert integrert utviklingsmiljø, etter datidens standarder. Den 5. november 1987 kom Borland med en oppdatering i versjon 1.1, som støttet 32-biter Macintosh II. Produktet ble ingen kommersiell suksess, og Borland forkastet støtten til Macintosh etter kort tid.

Programeksempler
----------------

### Hallo verden

Dette er det klassiske Hallo verden programmet i Turbo Pascal:

```
program HalloVerden;
begin
 WriteLn('Hallo Verden')
end.

```

### Fakultet

Her benyttes datatypen *real* til å lagre fakultetverdier. Kommandoen *writeln(f:-1:0)* skriver ut desimaltallet *f* med 0 siffer etter desimaltallet og venstrejusterer det. 

```
program fakultet;
function fak(n: integer): real;
begin
 if (n = 0) then
 fak := 1
 else
 fak := n \* fak(n - 1);
end;
var
 n: integer;
begin
 for n := 0 to 16 do
 writeln(n, '! = ', fak(n):-1:0);
end.

```

### Fibonacci-tall

Dette eksempelet viser en reursiv definisjon av Fibonacci-tall. 

```
program fibonacci;

function fib(n:integer): integer;
begin
 if (n <= 2) then
 fib := 1
 else
 fib := fib(n-1) + fib(n-2);
end;

var
 i:integer;
begin
 for i := 1 to 16 do
 write(fib(i), ', ');
 writeln('...');
end.

```

### Kvadrat

Dette programmet tegner et kvadrat:

```
program Kvadrat;

var
 A,B,C,D: integer;

begin
 write('A = ');
 readln(A);
 if (A=0) then
 begin
 writeln('Ikke en kvadratisk ligning.');
 halt;
 end;
 write('B = ');
 readln(B);
 write('C = ');
 readln(C);
 D := B\*B-4\*A\*C;
 if (D=0) then
 begin
 writeln('x = ',-B/2.0/A);
 halt;
 end;
 if (D>0) then
 begin
 writeln('x1 = ',(-B+Sqrt(D))/2.0/A);
 writeln('x2 = ',(-B-Sqrt(D))/2.0/A);
 end
 else
 begin
 writeln('x1 = (',-B/2.0/A,',',Sqrt(-D)/2.0/A,')');
 writeln('x2 = (',-B/2.0/A,',',-Sqrt(-D)/2.0/A,')');
 end;
end.

```

Påvirkninger fra Modula-2
-------------------------

### Turbo Pascal 4.0 (1987)

Versjon 4.0 ble lansert i 1987, og ble levert på én enkelt 5¼-toms diskett. I tillegg lanserte Borland oppdaterte utgaver av tilleggsprogrammene som tidligere hadde vært en opsjon i versjon 3.0. Kompilatoren genererte nå filer med filnavnsuffikset .EXE, i stedet for .COM. Versjon 4.0 fantes ikke i utgaver for CP/M og CP/M-86, men utelukkende for MS-DOS.

Denne versjonen innførte et vindus-lignende grensesnitt over hele skjermen med rullegardins-menyer, mens tidligere versjoner hadde en tekstbasert meny og en separat editor for hele skjermen. Det integrerte utviklingsmiljøet inneholdt også et hjelpesystem.

I versjon 4.0 utvidet Borland programmeringsspråket Pascal med syntaks for å kompilere biblioteker *(«Units»)*, etter modell fra programmeringsspråket Modula-2. I 1987 var Modula-2 i ferd med å erstatte Pascal som et pedagogisk språk for å lære studenter strukturert programmering. Borland hadde riktignok også lansert en Turbo Modula-2 kompilator for CP/M. I stedet for å lansere Turbo Modula-2 for MS-DOS, utvidet Borland syntaksen til Pascal med funksjonaliteten til Modula-2. Modulær kompilering var allerede tilgjengelig i UCSD Pascal for 8-bit datamaskiner, og Turbo Pascal syntaksen for moduler *(«Units»)*, synes å ha blitt hentet fra UCSD Pascal.

### Turbo Pascal 5.0 (1988)

Versjon 5.0 ble lansert den 29. august 1988 i to utgaver: Turbo Pascal 5.0 og Turbo Pascal Professional 5.0. Editorens blå bakgrunnsfarge ble et av varemerkene på Turbo Pascal. Turbo Pascal 5.0 hadde også det første integrerte utviklingsmiljøet med støtte for mus.

I versjon 5 ble det mulig å skrive assembler-kode direkte i Pascal-koden. En innebygd assembler oversatte disse programlinjene automatisk, uten behov for en ekstern assembler.

Den profesjonelle utgaven ble levert i fire 720 Kb disketter, som i tillegg inneholdt Turbo Debugger 1.0, Turbo Assember 1.0, og fire manualer som alle hadde samme ISBN-nr.

Turbo Debugger gjorde det mulig å avluse programmer trinn-for-trinn under utførelsen, inkludert de delene som måtte være skrevet i assembler, og brukeren kunne også se innholdet i variabler og registre. En ytelses-analysator gjorde det mulig å analysere de kompilerte programmenes ytelse, og i manualene var antall klokkepulser for de enkelte instruksjonene spesifisert.

Objektorientert programmering
-----------------------------

### Turbo Pascal 5.5 (1989)

Versjon 5.5 ble lansert den 2. mai 1989. Den største nyheten var at syntaksen var utvidet med objekt-orientert programmering, et konsept som var hentet fra Apples *Object Pascal*. I stedet for å lansere et nytt objektorientert språk, ble et funksjonsorientert språk utvidet med støtte for objektorientering (liksom C++ er en utvidelse av C) og et rudimentært klasse-bibliotek. Versjon 5.5 kom i to utgaver: Turbo Pascal 5.5 og Turbo Pascal Professional 5.5, som inkluderte Turbo Assembler 1.0 og Turbo Debugger 1.5. 

Det integrerte utviklingsmiljøet hadde et nytt *hypertext* hjelpesystem, og full støtte for «klipp-og-lim» funksjonalitet. Det fulgte også med en nytt, integrert opplærings-system i objektorientert programmering.

Kompilatoren kunne kompilere 34,000 linjer i minuttet, og hadde full støtte for ko-prosessorene Intel 8087, 80287 og Intel 80387. Det fulgte også med en forbedret linker og *overlay manager*.

Grunnpakken ble levert sammen med tre manualer, mens den profesjonelle utgaven inneholdt ytterligere tre manualer for assembleren og avluseren.

### Turbo Pascal 6.0 (1990)

Versjon 6.0 ble lansert i 1990, og inneholdt klasse-biblioteket *Turbo Vision*, som gjorde det mulig å realisere Windows-lignende brukergrensesnitt i tekstmodus. *Turbo Vision* gjorde det mulig å utvikle grensesnitt med flere overlappende dokumenter i samme vindu, med støtte for mus. Det integrerte utviklingsmiljøet var i seg selv Windows-lignende, og utviklet med *Turbo Vision*.

Kommandlinje-kompilatoren var i stand til å utnytte 80386 beskyttet modus på Intel 80386 og Intel 80486; med en DOS-utvider kunne derfor kompilatoren generere programmer som var større enn den tradisjonelle 640-kb grensen i reell modus.

I den profesjonelle utgaven fulgte *Turbo Profiler* med. Dette var et program som målte ytelsen ved genererte programmer, og som kunne avdekke «flaskehalser» inne i prosedyrer, *overlays*, avbruddshåndtering og filhåndtering.

### Turbo Pascal for Windows 1.0 (1991)

Denne versjonen ble lansert den 13. mars 1991 og var eksplisitt utviklet for Windows 3.0. Kompilatoren ble levert sammen med biblioteksrutiner som inneholdt API-kallene i Windows 3.0. Utviklingsverktøyet inneholdt også et *ressurs-verktøy* *(resource toolkit)* og en debugger i tekst-modus.

### Turbo Pascal for Windows 1.5 (1992)

Denne versjonen ble lansert i 1992, og hadde full støtte for alle API-kallene i Windows 3.1x, deriblant det nye tegnsettet og det nye hjelpesystemet i Windows. Editoren støttet utheving av syntaks *(syntax highlighting)* og et forbedret *ressurs-verktøy* *(resource toolkit)* var innebygd i det intregrerte utviklingsmiljøet.

### Turbo Pascal 7.0 (1992)

Turbo Pascal 7.0 ble lansert i 1992, og var siste versjon. Versjon 7.0 bestod hovedsakelig av oppdaterte versjoner av Turbo Pascal og Turbo Pascal for Windows, solgt som ét produkt sammen med andre oppdaterte utviklingsverktøy. Programpakken hadde utvidet støtte for API-kall i Windows 3.1x, støttet DOS Protected Mode Interface i utvidet DOS, og hadde utheving av syntaks *(syntax highlighting)* i både MS-DOS og Windows-versjonen.

Referanser
----------

1. 1 2 3 4 5 6 7  Intersimone 2002
2. ↑  Free Pascal 2015
3. ↑  GNU Pascal 2005
4. 1 2 3 4 5  Intersimone 2008
5. 1 2 3  BLS Pascal 1981
6. ↑  Google Groups
7. ↑  Webster 1985
8. 1 2 3 4 5 6 7  Borland 1985
9. 1 2  Intersimone 2002 b
10. ↑  UCSD Pascal System II.0 User Manual Reconstruction – Version I.5, 3.3.2. Linkage to Externally Compiled and Assembled Routines, september 1978 Arkivert 3. september 2007 hos Wayback Machine.
11. 1 2  User's Guide, PART# 11MN-PAS01-50 BOR 0867, ISBN 0-87524-201-4
12. 1 2  Reference Guide, PART# 11MN-PAS02-50 BOR 0866, ISBN 0-87524-201-4
13. 1 2  Turbo Assembler User's Guide, PART# 15MN-ASD01-10 BOR 0851, ISBN 0-87524-201-4
14. 1 2  Turbo Assembler Reference Guide, PART# 15MN-ASD02-10 BOR 0852, ISBN 0-87524-201-4
15. 1 2  Turbo Debugger User's Guide, PART# 15MN-ASD03-10 BOR 0847, ISBN 0-87524-201-4
16. ↑  OOP Guide, PART# 11MN-PAS03-55 BOR 1309

Litteratur
----------

* Borland (1985). *Turbo Pascal, Version 3.0: Reference Manual*. Scotts Valley, California, 17. april 1985. ISBN 978-0875240039.
* Free Pascal (2015). *Free Pascal wiki*. Free Pascal wiki, 2005.
* GNU Project (2005). *Language standards supported by GNU Pascal*. GNU Pascal's hjemmeside, 2005.
* Intersimone, David (2008). *Blue Label Software Pascal -> Compas Pascal -> Poly Pascal -> Turbo Pascal v1.0]*. Sip from the Firehose, David I's (Intersimone) Embarcadero blog about programming, languages, databases, history and more, 2. november 2008. Arkivert fra originalen 4. mars 2016. Besøkt 3. august 2015.
* Intersimone, David (2002). *Antique Software: Turbo Pascal v1.0*. Embarcadero Developer Network, 1. februar 2002. Arkivert fra originalen 21. desember 2010. Besøkt 4. august 2015.
* Intersimone, David (2002). *Antique Software: Turbo Pascal v3.02*. Embarcadero Developer Network, 21. februar 2002. Arkivert fra originalen 24. november 2010. Besøkt 6. august 2015.
* O'Brien, Stephen K. (1988). *Turbo Pascal 5: Advanced Programmer`s Guide*. Osborne McGraw-Hill, Berkeley, California, 1. januar 1988. ISBN 978-0078814204.
* O'Brien, Stephen K. (1988). *Turbo Pascal: The Complete Reference*. Osborne McGraw-Hill, Berkeley, California, 1. juni 1988. ISBN 0-07-881290-9, ISBN 978-0078812903 Sjekk `|isbn=`-verdien: invalid character (hjelp).
* O'Brien, Stephen K. (1989). *Turbo Pascal 5.5 ®: The Complete Reference*. Osborne McGraw-Hill, Berkeley, California, 1. juni 1989. ISBN 978-0078815010.
* O'Brien, Stephen K. (1991). *Turbo Pascal 6: The Complete Reference*. Osborne McGraw-Hill, Berkeley, California, 1. januar 1991. ISBN 978-0078817038.
* O'Brien, Stephen K.; Nameroff, Steve (1993). *Turbo Pascal 7: The Complete Reference*. Osborne McGraw-Hill, Berkeley, California, mars 1993. ISBN 978-0078817939. CS1-vedlikehold: Flere navn: forfatterliste (link)
* Polydata microsenter (1981). *BLS Pascal User Manual* (PDF). 1981.
* Savitch, Walter J. (1988). *Turbo Pascal. An Introduction to the Art and Science of Programming*. 2. reviderte utgave, The Benjamin/Cummings Publishing Company, Inc. University of California, San Diego, 1. september 1988. ISBN 978-0805383966.
* Webster, Bruce F. (1985). *Greetings and Agitations*. BYTE, s. 355, august 1985.

| * v
* d
* r
Programmeringsspråk |
| --- |
| Tidslinje |
| A# **·** ActionScript **·** Ada **·** Alef **·** ALGOL **·** ALGOL 58 **·** ALGOL 60 **·** ALGOL 68 **·** ALTRAN **·** APL **·** AppleScript **·** Argus **·** Assembler **·** Autokode **·** awk **·** B **·** BASIC **·** BCPL **·** BETA **·** BitC **·** BLISS **·** Bourne Shell **·** C **·** C++ **·** C-- **·** CHILL **·** C# **·** C shell **·** Caml **·** Ch **·** Cilk **·** Cilk++ **·** Cilk Plus **·** Clarion **·** Clipper **·** CLISP **·** Clojure **·** CLU **·** COBOL **·** COMAL **·** Common Lisp **·** Concurrent C **·** Concurrent Euclid **·** Concurrent Pascal **·** C shell **·** D **·** Delphi **·** Dylan **·** ECMAScript **·** Eiffel **·** Emacs Lisp **·** Erlang **·** Euclid **·** F\* **·** F# **·** Forth **·** Fortran **·** GNU Common Lisp **·** GNU Pascal **·** Go **·** Haskell **·** HyperTalk **·** Incr Tcl **·** INTERCAL **·** Interlisp **·** Java **·** JavaScript **·** JRuby **·** LaTeX **·** Legoscript **·** LilyPond **·** Limbo **·** Lisp **·** LPC **·** Lua **·** Lynx **·** Mary **·** MATLAB **·** Mesa **·** ML **·** MML **·** Modula **·** Modula-2 **·** MUMPS **·** Objective-C **·** Objective-C++ **·** OCaml **·** OpenVera **·** O'Haskell **·** Pascal **·** Perl **·** PHP **·** Pike **·** PL/I **·** Plankalkül **·** PLEX **·** Prolog **·** Protel **·** Pure Data **·** Python **·** R **·** Ratfor **·** REXX **·** RTL/2 **·** Ruby **·** Rust **·** SAS **·** Scala **·** Scheme **·** Scratch **·** Simula **·** SML **·** Smalltalk **·** SNOBOL **·** Tcsh **·** Tcl **·** TECO **·** TOM **·** Turbo Basic **·** Turbo Pascal **·** Verilog **·** Visual Prolog **·** Turing **·** TypeScript **·** Vala **·** VHDL **·** Visual Basic **·** Flere.. |
| 
* Kategori **Kategori**

 |

|  |  |
| --- | --- |
| Oppslagsverk/autoritetsdata | VIAF **·** GND **·** LCCN **·** NKC
 |