**Паскаль** (англ.: Pascal) — мова праграмавання агульнага прызначэння. Адна з самых вядомых моў праграмавання, шырока ўжываецца ў прамысловым праграмаванні, навучанні праграмаванню ў вышэйшай школе, з'яўляецца базай для вялікай колькасці іншых моў. Была створана Ніклаўсам Віртам у 1970, пасля яго ўдзелу ў працы камітэта распрацоўкі стандарту мовы Алгол-68.

Асаблівасці
-----------

Паскаль быў створаны як мова для навучання працэдурнаму праграмаванню (аднак, па словах Вірта, мову нельга лічыць толькі вучэбнай, бо мова, непрыдатная для напісання дзейсных праграм, для навучання выкарыстоўвацца не павінна). Мова названа так у гонар выдатнага французскага матэматыка, фізіка, літаратара і філосафа Блеза Паскаля. Адна з першых моў, для якіх была створаная рэалізацыя «на самой сабе» — кампілятар Паскаля быў напісаны на самом Паскалі. У пачатку 1970-х гадоў для пераносу Паскаль-сістэм на розныя апаратныя платформы была створана сістэма Pascal-P, у якой быў адзіны кампілятар Паскаля ў прамежкавую мову (P-код) і для кожнай платформы ствараўся хуткі інтэрпрэтатар P-кода. Запазычанне гэтай сістэмы прывяло да стварэння сістэмы UCSD-Pascal ва Універсітэце Сан-Дыега (Каліфорнія, ЗША), нашмат пазней яе ідэі былі запазычаны стваральнікамі мовы Java (байт-код, кампіляцыя ў байт-код, інтэрпрэтатар байт-кода).

Асаблівасцямі мовы з'яўляюцца строгая тыпізацыя і наяўнасць сродкаў структурнага (працэдурнага) праграмавання. Паскаль была адной з першых такіх моў. Па меркаванню Н. Вірта, мова павінна спрыяць дысцыплінаванню праграмавання, таму, разам са строгай тыпізацыяй, у Паскалі зведзены да мінімуму магчымыя сінтаксічныя неадназначнасці, а сам сінтаксіс аўтар паспрабаваў зрабіць інтуітыўна зразумелым нават пры першым знаёмстве з мовай.

Тым не менш, першапачаткова мова мела шэраг абмежаванняў: немагчымасць перадачы функцыям масіваў зменнай даўжыні, адсутнасць пэўных сродкаў для работы з дынамічнай памяццю, абмежаваная бібліятэка ўводу-вываду, адсутнасць сродкаў для падключэння функцый з бібліятэк, напісаных на іншых мовах, адсутнасць сродкаў асобнай кампіляцыі і г.д. Найбольш прыкметны недахоп сінтаксісу — некрытычна запазычаная з Алгола структура кіруючых канструкцый (аператараў if і цыклаў), патрабаванне пастаяннага выкарыстання складовых аператараў «begin — end». Поўны разбор недахопаў мовы Паскаль быў выкананы Браянам Керніганам у артыкуле «Чаму Паскаль не з'яўляецца маёй любімай мовай праграмавання» (цікава, што гэты артыкул выйшаў ў пачатку 1980-х, калі ўжо існавала мова Модула-2, нашчадак Паскаля, пазбаўлены ад большасці яго заган). Некаторыя недахопы Паскаля былі выпраўлены ў ISO-стандарце 1982 г. у прыватнасці, у мове з'явіліся адкрытыя масівы, якія далі магчымасць выкарыстоўваць адны і тыя жа працэдуры для апрацоўкі аднамерных масіваў розных памераў.

Неабходна заўважыць, што шматлікія недахопы мовы не выяўляюцца або нават становяцца перавагамі пры навучанні праграмаванню. Акрамя таго, у параўнанні з асноўнай мовай праграмавання ў акадэмічным асяроддзі 70-х (якою быў Фартран, які валодаў значна больш істотнымі недахопамі), Паскаль уяўляў сабой значны крок наперад. У пачатку 1980-х гадоў у СССР для навучання школьнікаў асновам інфарматыкі і вылічальнай тэхнікі акадэмік А.П. Яршоў распрацаваў алгола-паскалепадобную «алгарытмічную мову».

Ніклаўс Вірт разумеў недахопы створанай ім мовы, але, згодна з традыцыямі акадэмічнага асяроддзя і ўласнымі прынцыпамі, паводле якіх «непрыдатныя прылады трэба не выпраўляць, а замяняць», не стаў яго развіваць далей, а распрацаваў новыя мовы сямейства: Модула-2 і Аберон. У супрацьлегласць гэтаму прамысловыя традыцыі і перавагі мовы заахвоцілі шматлікія камерцыйныя і некамерцыйныя арганізацыі працягваць распрацоўваць і развіваць сістэмы праграмавання іменна на аснове мовы Паскаль, адвольна пашыраючы мову, дабаўляючы ў яе, часта цалкам механічна, новыя сродкі і сінтаксічныя канструкцыі.

Найболей вядомай рэалізацыяй Паскаля з'яўляецца сістэма Turbo Pascal (затым у Borland Pascal і далей у Delphi) фірмы Borland, у якой мова была значна пашырана, былі выпраўлены некаторыя недахопы мовы, дабаўлены новыя магчымасці. Мова стала багацейшай, але з-за адсутнасці галіновай стандартызацыі, страціла пераноснасць і агульнасць (да з'яўлення ў 1998 годзе Kylix — Delphi для Linux, прадукты Borland працавалі толькі на платформе DOS/Windows, у цяперашні час Kylix фактычна замарожаная).

Важным крокам у развіцці мовы стала стварэнне свабоднай мовы Паскаль GNU Pascal, якая не толькі ўвабрала у сябе рысы іншых Паскаляў, але і забяспечыла надзвычай шырокую пераноснасць напісаных на ёй праграм (больш 20 розных платформ, пад больш чым 10 рознымі аперацыйнымі сістэмамі).

У цяперашні час карыстаюцца папулярнасцю такія версіі мовы як TMT Pascal, Free Pascal і GNU Pascal.
Працягвае выкарыстоўвацца і Borland Pascal.

У 1986 годзе кампанія Apple распрацавала аб'ектнае пашырэнне мовы Паскаль, атрымаўшы ў выніку Object Pascal. У 1989 годзе аналагічныя аб'ектныя сродкі былі ўключаны фірмай Borland у сістэму Turbo Pascal (моўныя адрозненні паміж аб'ектным Turbo Pascal 5.5 і Object Pascal ад Apple вельмі нязначныя). Наступныя версіі Turbo Pascal, які стаў затым звацца Borland Pascal, дапаўнялі аб'ектнае пашырэнне новымі сродкамі, гэты працэс працягваўся і падчас дапрацовак мовы сістэмы Delphi. Назва мовы змянялася: ад Pascal, праз Object Pascal for Delphi, у літаратуры сустракалася назва Delphi Pascal, у апошніх версіях Delphi мова называецца гэтак жа, як і сама сістэма (цікавы момант: у Delphi 7 пункт сістэмнага меню, які запускае даведку па мове, як і ў больш ранніх версіях, называецца «Object Pascal Reference», а сам модуль даведкі, што ў выніку запускаецца, мае загаловак «Delphi Language Manual», у тэксце мова таксама ўсюды завецца «Delphi»).

Акрамя таго, распрацоўваецца сістэма праграмавання PascalABC.NET, арыентаваная на навучанне сучаснаму праграмаванню.
PascalABC — рэалізацыя звычайнага паскаля, распрацаваны для навучання праграмаванню.
PascalABC.net — аналаг PascalABC, з магчымасцю ствараць .exe файлы.

Hello World
-----------

Найпрасцейшая праграма, якая выводзіць на экран надпіс Hello World.

```
program HelloWorld(output);
begin { Пачатак праграмы }
 WriteLn('Hello World'); { Выводны надпіс }
end. { Канец праграмы }

```

Тэкст паміж фігурнымі дужкамі "{" і "}" у мове Паскаль з'яўляецца каментарыем і ніяк не ўплывае на вынік кампіляцыі. 
У падмностве мовы Паскаль кампілятараў кампаніі Borland (Turbo Pascal, Borland Pascal, Delphi) каментарыі таксама можна пазначаць парамі сімвалаў (\* і \*), а таксама пры дапамозе пары сімвалаў "//" - якія пазначаюць, што тэкст да канца радка з'яўляецца каментарыем.

Гл. таксама
-----------

* Алгол
* MIDletPascal
* Delphi

Спасылкі
--------

* Артыкул аб Паскалі ў энцыклапедыі progopedia.ru Архівавана 27 мая 2007.
* Тэорыя праграмавання для вучняў і студэнтаў
* Урокі Паскаля для праграмістаў-пачаткоўцаў Архівавана 13 сакавіка 2016.
* Прыклады праграм
* Артыкулы, прыклады праграм Архівавана 17 лютага 2010.

Заўвагі
-------

1. ↑  Бадд Т. Аб'ектна-арыентаванае праграмаванне ў дзеянні. Спб.: Піцер, 1997. ISBN 5-88782-270-8

| ⛭Мовы праграмавання |
| --- |
| 
* Ada
* ActionScript
* ALGOL
* APL
* Асэмблер
* BASIC
* C
* C++
* C#
* COBOL
* Delphi
* Erlang
* Forth
* Fortran
* Go
* Haskell
* Java
* JavaScript
* Kotlin
* Lisp
* Logo
* Lua
* Modula-2
* Objective-C
* Pascal
* Perl
* PL/I
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* Scala
* SQL
* Scheme
* Smalltalk
* Swift
* Zig
* *больш...*

 |
| List-Class article Спіс паводле катэгорый |

| ⛭Стандарты ISO |
| --- |
| *Пералікі:*  Пералік стандартаў ІСО ·  Пералік раманізацый ISO ·  Пералік стандартаў IEC*Катэгорыі:*  Катэгорыя:Стандарты ISO ·  Катэгорыя:Пратаколы OSI |
| 1по9999 | 1 ·  2 ·  3 ·  4 ·  6 ·  7 ·  9 ·  16 ·  31 (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13) ·  128 ·  216 ·  217 ·  226 ·  228 ·  233 ·  259 ·  269 ·  302 ·  306 ·  428 ·  639 (-1, -2, -3, -5, -6) ·  646 ·  690 ·  732 ·  764 ·  843 ·  898 ·  1000 ·  1004 ·  1007 ·  1073-1 ·  1413 ·  1538 ·  1745 ·  2014 ·  2015 ·  2022 ·  2108 ·  2145 ·  2146 ·  2281 ·  2709 ·  2711 ·  2788 ·  3029 ·  3103 ·  3166 (-1, -2, -3) ·  3297 ·  3307 ·  3602 ·  3864 ·  3901 ·  3977 ·  4031 ·  4157 ·  4217 ·  5218 ·  5775 ·  5776 ·  5964 ·  6166 ·  6344 ·  6346 ·  6425 ·  6429 ·  6438 ·  6523 ·  6709 ·  7001 ·  7002 ·  7098 ·  7185 ·  7498 ·  7736 ·  7810 ·  7811 ·  7812 ·  7813 ·  7816 ·  8000 ·  8217 ·  8571 ·  8583 ·  8601 ·  8632 ·  8652 ·  8691 ·  8807 ·  8820-5 ·  8859 (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16) ·  8879 ·  9000 ·  9075 ·  9126 ·  9241 ·  9362 ·  9407 ·  9506 ·  9529 ·  9564 ·  9594 ·  9660 ·  9897 ·  9945 ·  9984 ·  9985 ·  9995 |
| 10000по19999 | 10006 ·  10118-3 ·  10160 ·  10161 ·  10165 ·  10179 ·  10206 ·  10303 ·  10303-11 ·  10303-21 ·  10303-22 ·  10303-238 ·  10303-28 ·  10383 ·  10487 ·  10585 ·  10589 ·  10646 ·  10664 ·  10746 ·  10861 ·  10957 ·  10962 ·  10967 ·  11073 ·  11170 ·  11179 ·  11404 ·  11544 ·  11783 ·  11784 ·  11785 ·  11801 ·  11898 ·  11940 ·  11941 ·  11941 (TR) ·  11992 ·  12006 ·  12182:1998 ·  12207:1995 ·  12207:2008 ·  12234-2 ·  13211 (-1, -2) ·  13216 ·  13250 ·  13399 ·  13406-2 ·  13407 ·  13450 ·  13485 ·  13490 ·  13567 ·  13568 ·  13584 ·  13616 ·  14000 ·  14031 ·  14396 ·  14443 ·  14496-10 ·  14496-14 ·  14644 (-1, -2, -3, -4, -5, -6, -7, -8, -9) ·  14649 ·  14651 ·  14698 ·  14698-2 ·  14750 ·  14882 ·  14971 · 15022 ·  15189 ·  15288 ·  15291 ·  15292 ·  15408 ·  15444 ·  15445 ·  15438 ·  15504 · 15511 ·  15686 ·  15693 ·  15706 ·  15706-2 ·  15707 ·  15897 ·  15919 ·  15924 ·  15926 ·  15926 WIP ·  15930 ·  16023 ·  16262 ·  16750 ·  17024 ·  17025 ·  17369 ·  17799 ·  18000 ·  18004 ·  18014 ·  18245 ·  18629 ·  18916 ·  19005 ·  19011 ·  19092-1 ·  19092-2 ·  19114 ·  19115 ·  19439 ·  19501:2005 ·  19752 ·  19757 ·  19770 ·  19775-1 ·  19794-5 |
| 20000+ | 20000 ·  20022 ·  21000 ·  21047 ·  21827:2002 ·  22000 ·  23270 ·  23360 ·  24613 ·  24707 ·  25178 ·  26000 ·  26300 ·  26324 ·  27000 series ·  27000 ·  27001 ·  27002 ·  27003 ·  27004 ·  27005 ·  27006 ·  27007 ·  27729 ·  27799 ·  29199-2 ·  29500 ·  31000 ·  32000 ·  38500 ·  42010 ·  80000 |
| *Гл. таксама:* Усе артыкулы, якія пачынаюцца з «ISO» |