Turbo Pascal

**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

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.

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.

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&nbsp;297 byte. Størrelsen på TURBO.COM var 33&nbsp;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. 

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&nbsp;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 (programmering)|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:


```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. 


```pascal
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. 


```pascal
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:


```pascal
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




## Litteratur
*
*
*
*
*
*
*
*
*
*
*
*
*
*