**Pascal** on Niklaus Wirthin kehittämä proseduraalinen ohjelmointikieli, joka on kehitetty 1960- ja 1970-lukujen vaihteessa ALGOL-kielen pohjalta erityisesti opetuskäyttöä ajatellen. 
Pascalia pidetään esimerkkinä strukturoitua ohjelmointia tukevasta kielestä.

Pascal-kieli on nimetty matemaatikko Blaise Pascalin mukaan. Pascalia hyvin lähellä ovat Wirthin myöhemmin kehittämät ohjelmointikielet Modula-2 ja Oberon, joita voidaan pitää Pascalin "jälkeläisinä". Pascal oli suosittu kieli opetuskäytössä 1970-luvulta 1990-luvun alkupuolelle asti kunnes C-kieli syrjäytti sen.

Ammattikäyttöön Pascal-kieli tuli Borlandin Turbo Pascal -ympäristön ansiosta 1980-luvulla. Silloiset Turbo Pascalin ylivoimaiset ominaisuudet aiheuttivat sen, että muut ohjelmointikieliä tekevät ohjelmistotalot luopuivat vähitellen omista Pascal-kääntäjistään.

Esimerkkiohjelma
----------------

Yleinen esimerkki ohjelmointikielen syntaksista on Hei maailma -ohjelma.

```
{ Ohjelma tulostaa tekstin "Hei maailma!" }
program HeiMaailma(input,output);
begin
 WriteLn('Hei maailma!');
end.

```

Kaikki Pascal-ohjelmat alkavat "Program"-avainsanalla ja ohjelmalohkon alku ja loppu merkitään avainsanoilla "Begin" ja "End". Yksittäiset lauseet erotetaan puolipisteellä, ja koko ohjelma loppuu pisteeseen.

program Kuolinilmoitus;

var

```
 nimi, syntyma, kuolinpaiva: string;
 ika: integer;
```

begin

```
 writeln('Kuolinilmoitus');
 writeln('----------------');
 
 write('Nimi: ');
 readln(nimi);
 
 write('Syntymäaika: ');
 readln(syntyma);
 
 write('Kuolinpäivä: ');
 readln(kuolinpaiva);
 
 write('Ikä: ');
 readln(ika);
 
 writeln;
 
 writeln('Suru-uutisella ilmoitamme ', nimi, 'n poismenosta.');
 writeln('Hän syntyi ', syntyma, ' ja menehtyi ', kuolinpaiva, ' ollessaan ', ika, ' vuotta vanha.');
 writeln('Otamme osaa läheisten suruun.');
```

end.

Pascalin kehitys
----------------

Kielestä on kehitetty eräitä muunnelmia.

Object Pascal lisää kieleen olio-ohjelmointiin liittyviä ominaisuuksia. Siihen kuuluvat myös poikkeukset ja niiden hallinta.

Super Pascal on rinnakkaisuusohjelmointiin kehitetty versio.

Extended Pascal on muunnos, joka on määritelty standardeissa ISO 10206:1991 ja ANSI/IEEE 770X3.160-1989 (ISO- ja ANSI-standardit ovat tekniseltä sisällöltä identtisiä).

Concurrent Pascal ja Sequential Pascal ovat eräitä muunnoksia.

Kritiikkiä
----------

Kielen ISO-standardia edeltävää versiota on kritisoitu sen soveltuvuudesta käytännön ohjelmointiin ja sen soveltuvuudesta vain opetuskäyttöön. Esimerkiksi taulukon koko osana sen tyyppiä ei mahdollista käyttää samaa lajittelualgoritmin toteutusta erikokoisille taulukoille.

Myöhempi standardoitu versio on korjannut useita kritiikin kohteita.
Kieleen kohdistunut kritiikkiä on myöhemmin käsitelty vastineissa.

Pascal-kääntäjiä
----------------

* Delphi
* FreePascal
* Turbo Pascal

Lähteet
-------

* Wirth, Niklaus: *Algorithms + Data Structures = Programs*. Prentice-Hall, 1976. ISBN 0-13-022418-9.
* Findlay, William & Watt, David A.: *Pascal: An Introduction to Methodical Programming*. Great Britain: Pitman, 1979. ISBN 0-273-01220-7.
* Korpela, Jukka & Larmela, Timo & Planman, Ahti: *Pascal-ohjelmointikieli*. Espoo: OtaDATA, 1980. ISBN 951-767-034-6.

### Viitteet

1. ↑  ISO 7185:1990 ISO. Viitattu 14.2.2020. (englanniksi)
2. ↑  Korpela et al. 1980, s. 7
3. ↑  Niklaus E. Wirth *amturing.acm.org*. Viitattu 6.9.2019. (englanniksi)
4. ↑  Karl P. Hunt: An introduction to structured programming (PDF) *link.springer.com*.  1979. doi:10.3758/BF03205654.  Viitattu 6.1.2020. (englanniksi)
5. ↑
6. ↑  Language standards – Internet Archive
7. 1 2  Brian W. Kernighan: Why Pascal is Not My Favorite Programming Language *lysator.liu.se*.  2.4.1981. Viitattu 14.2.2020. (englanniksi)
8. ↑  Bill Catambay: IV. Myths Uncovered *pascal-central.com*.  Arkistoitu 17.9.2015. Viitattu 14.2.2020. (englanniksi)

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **Pascal (ohjelmointikieli)**.

WikibooksWikibooks 
Wikikirjastossa on aihe: **Pascal**. 
* Suomalainen Pascal-opassarja
* Turbo Pascal Information

|  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Yleisimmät ohjelmointikielet |
| --- |
|  |
| Tuotantokäytössä | 
* Ada
* APL
* Assembly
* AWK
* C
* C++
* C#
* COBOL
* Dart
* Delphi
* Eiffel
* Erlang
* Forth
* Fortran
* Go
* Java
* JavaScript
* Kotlin
* Lisp
* Lua
* Objective-C
* Pascal
* Perl
* PHP
* PostScript
* Python
* R
* Ruby
* Rust
* Smalltalk
* Swift
* Tcl
* TypeScript
* Visual Basic

 |
|  |
| Akateemiset | 
* CLU
* Haskell
* Logo
* ML
* OCaml
* Prolog
* Scheme

 |
|  |
| Historialliset | 
* ALGOL
* BASIC
* Modula-3
* MUMPS
* Plankalkül
* PL/I
* Simula

 |
|  |
| Luettelo yleisimmistä ohjelmointikielistä |

 |

|  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 

| Auktoriteettitunnisteet Muokkaa Wikidatassa |
| --- |
|  |
| Kansainväliset | 
* FAST

 |
|  |
| Kansalliset | 
* Ranska
* BnF data
* Israel
* Yhdysvallat
* Tšekki

 |

 |