Pascal: розьніца паміж вэрсіямі

Змесціва выдалена Змесціва дададзена
д артаграфія
Радок 1:
'''Pascal''' (Паска́ль) — [[мова праграмаваньня]] агульнага прызначэньня, створаная [[НіклаўсНікляўс ВіртЎірт|НіклаўсамНікляўсам ВіртамЎіртам]] у [[1970]] годзе як мова [[структурнае праграмаваньне|структурнага праграмаваньня]].
{{Артаграфія}}
'''Pascal''' (Паска́ль) — [[мова праграмаваньня]] агульнага прызначэньня, створаная [[Ніклаўс Вірт|Ніклаўсам Віртам]] у [[1970]] годзе як мова [[структурнае праграмаваньне|структурнага праграмаваньня]].
 
''Pascal'' заснаваны на мове праграмаваньня ''[[Algol]]'' і названы ў гонар матэматыка і філёзафа [[Блез Паскаль|Блеза Паскаля]]. ВіртЎірт таксама стварыў мовы праграмаваньня ''[[Modula-2]]'' і ''[[Oberon]]'', падобныя на ''Pascal'', аднак з дадатковымі сродкамі для [[аб'ектна-арыентаванае праграмаваньне|аб’ектна-арыентаванага праграмаваньня]].
 
Спачатку ''Pascal'' быў гіпатэтычнай мовай для навучаньня студэнтаў структурнаму праграмаваньню, і шмат студэнтаў вучыліся па ім. Варыянты ''Pascal'' выкарыстоўваюцца дагэтуль як у асьвеце, так і ў праграмаваньні.
 
Вялікая частка арыгінальнайарыгінальнае апэрацыйнайапэрацыйнае сістэмы ''[[Apple Macintosh|Macintosh]]'' была напісана на ''Pascal''. Папулярная [[друкарня|друкарская]] сістэма ''[[TeX]]'' напісана на мове пад назвай ''[[WEB]]'', пры стварэньні якойякое [[Дональд Кнут]] шмат чаго пераняў з ''Pascal''.
 
== Мова ==
 
Усе [[праграма|праграмы]] на ''Pascal'' пачынаюцца з ключавога слова ''<code>program</code>'', неабавязковага сьпісу ўнутраных дэскрыптараў файла ій блёку кода, які знаходзіцца паміж словамі ''<code>begin</code>'' і ''<code>end</code>''. Розьніцы паміж вялікімі ій маленькімі літарамі ў ''Pascal'' няма<ref>У адрозьненьне ад яго нашчадка — мовы ''[[Oberon]]'', дзе ключавыя словы павінны быць напісаныя вялікімі літарамі.</ref>. [[Кропка з коскай]] разьдзяляе выразы, а [[кропка (знак пунктуацыі)|кропка]] заканчвае праграму (ці [[модуль]]).
 
<code>
Радок 19 ⟶ 18:
</code>
 
''Pascal'', у сваёй арыгінальнай форме, — выключна [[Працэдурнае праграмаваньне|працэдурная мова праграмаваньня]] са звыклымі для гэтага тыпу моўмоваў канструкцыямі ''<code>if</code>'', ''<code>while</code>'', ''<code>for</code>'' і падобнымі.
 
''Pascal'' — гэта [[структурнае праграмаваньне|структурная мова праграмаваньня]], а гэта значыць, што ўвесь код разбіты на стандартныя выразы, лепей за ўсё без канструкцыйканструкцыяў безумоўнага пераходу (''<code>goto</code>'').
 
<code>
Радок 46 ⟶ 45:
</code>
 
У ''Pascal'' праграмы разьбіваюцца на [[працэдура|працэдуры]] ій [[функцыя|функцыі]].
 
<code>
Радок 68 ⟶ 67:
</code>
 
Працэдуры ій функцыі могуць быць укладзенымі да любой ступені, і канструкцыя ''<code>program</code>'' — найвышэйшы блёк.
 
Кожны блёк мае свае аб’яўленьні [[метка|метак]] ''<code>goto</code>'', [[канстанта]]ў, [[тып]]аў, [[зьменная|зьменных]] і іншых працэдурпрацэдураў і функцыйфункцыяў, якія маюць ісьці ў такім парадку, як тут пералічана.
 
У ''Pascal'' ёсьць наступныя тыпы дадзеных: [[цэлы лік]], [[сімвалсымбаль]] і [[лягічная зьменная]] (простыя тыпы), а таксама новы тып, уведзены ў ''Pascal'' — пералічальны тып<ref>Дарэчы, у сваіх пазьнейшых працах ВіртЎірт прызнае, што гэты тып зьяўляецца лішкавымнепатрэбным, і вынімаевымае яго з мовы ''Oberon'', прапануючы карыстацца замест яго звычайнымі канстантамі.</ref>.
 
<code>
Радок 92 ⟶ 91:
</code>
 
Можна ствараць новыя тыпы на асновепадставе іншых за дапамогай аб’яўленьня тыпаў<ref>У пашырэньні мовы ад кампаніі ''[[Borland]]'' — ''[[Object Pascal]]'' (''[[Delphi (мова праграмаваньня)|]]'') — уведзены спэцыяльныадмысловы сынтаксіс для абвешчаньня тыпу, несумяшчальнага з тым, ад якога ён атрыманы:
 
<code>
Радок 119 ⟶ 118:
</code>
 
Радкі ў клясычным ''Pascal'' — гэта масівы сымбаляў<ref>У пашырэньні ад ''Borland'' (пачынаючы з ''[[Turbo Pascal]]'') уведзены спэцыяльныадмысловы тып — <code>'''string'''</code>, які падтрымлівае большасьць апэрацыйапэрацыяў над радкамі сымбаляў, у тым ліку складаньне двух радкоў запісам <code>S:=S1+S2;</code>. Пазьней гэты тып быў пашыраны для таго, каб падтрымліваць любую колькасьць сымбаляў (спачатку да 255 — ''Turbo Pascal 4.0'', потым да <math>2^{32}-1</math> сымбаляў — ''Object Pascal/Delphi 4.0'').</ref>.
 
== Hello World ==
Радок 133 ⟶ 132:
== Рэалізацыі ==
 
Першы кампілятар ''Pascal'' быў створаны ў [[Цюрых]]у ў [[1970]] для сямейства кампутараў ''CDC 6000''. Першы паўночнаамерыканскіпаўночнаамэрыканскі кампілятар ''Pascal'' быў напісаны ў [[Унівэрсытэт Ілінойса|унівэрсытэце Ілінойса]] для ''[[PDP-11]]'' і ствараў [[машынны код]].
 
Для хуткага распаўсюджаньня мовы ў Цюрыху быў створаны «набор інструментаўінструмэнтаў для партаваньня кампілятара», які ўключаўўлучаў кампілятар у код для віртуальнай машыны ій праграму, якая выконвала гэты код. Гэты набор стаў называцца ''P''-сістэмайсыстэмай. Хаця зь яго дапамогай плянавалася стварэньне кампілятараў у машынны код, як мінімум адна сыстэма выкарыстоўвала яго для стварэньня інтэрпрэтуемай сыстэмы — ''[[UCSD p-System]]''.
 
''[[IP Pascal]]'' быў рэалізацыяй ''Pascal'' для ''Micropolis DOS'', аднак ён хутка быў перанесены на ''[[CP/M]]'' для ''[[Z80]]''.
Радок 141 ⟶ 140:
У пачатку [[1980-я|1980-х]] гадоў ''UCSD Pascal'' быў перанесены на кампутары ''[[Apple II]]'' і ''[[Apple III]]'' як структурная мова праграмаваньня, бо ў той час з гэтымі кампутарамі пастаўляўся інтэрпрэтатар мовы ''[[BASIC]]''.
 
У пачатку 1980-х гадоў ''Anders Hejlsberg'' напісаў кампілятар ''Blue Label Software Pascal'' для ''Nascom-2''. Пазьней ён уладкаваўся на працу ў кампанію ''[[Borland]]'' і перапісаў свой кампілятар для ''[[IBM PC]]'', і гэту версіювэрсію назваў ''[[Turbo Pascal]]''. Гэты новы кампілятар каштаваў 49,95$, што было намнога меней за цану на кампілятар ''Blue Label Software Pascal''.
 
Танны кампілятар ''Borland'' меў вялікі ўплыў на карыстальнікаў ''Pascal'', якія ў канцы 1980-х гадоў карысталіся ў асноўным ''IBM PC''. Шматлікія аматары праграмаваньня на ''PC'', якія раней шукалі структурную замену для мовы праграмаваньня BASIC, пачалі карыстацца гэтым прадуктам. ''Turbo Pascal'' быў даступны толькі для адной архітэктуры, таму ён кампіляваў код наўпрост у машынныя коды працэсара ''[[Intel 8088]]'', што дазваляла выконваць праграмы на ''Pascal'' хутчэй, чым праграмы на інтэрпрэтуемых мовах праграмаваньня.
 
''Super Pascal'' быў версіяйвэрсіяй, якая дадала неня лічбавыя меткі, аператарапэратар ''return'' і выразы як імёны тыпаў.
 
У [[1990-я|1990-х]] гадах кампілятары, на якіх можна скампіляваць код для розных сістэмсістэмаў, сталі выкарыстоўвацца часьцей, у тым ліку ій ''Pascal'', які дазваляў кампіляцыю ў машынны код і ў той жа час лёгка пераносіўся на новае [[апаратнае забесьпячэньне]].
 
У вэрсыі ''Turbo Pascal 5.5'' ''Borland'' дабавіла ў ''Pascal'' [[аб'ектна-арыентаванае праграмаваньне]] (ААП).
 
Аднак потым у ''Borland'' вырашылі, што патрэбенпатрэбны ''Pascal'' зь лепей прадуманай рэалізацыяй ААП, і пачалі распрацоўку ''[[Delphi (мова праграмаваньня)|Delphi]]'', якая выкарыстоўвала ідэі ''[[Object Pascal]]'', прапанаваныя ''[[Apple ComputerInc.|Apple]]'', як аснову (гэтыя ідэі ''Apple'' дагэтуль ня сталі фармальным стандартам). ''Borland'' таксама называў сваю рэалізацыю ''Object Pascal'' у першых вэрсыях ''Delphi'', аднак зьмяніў назву на «мова праграмаваньня ''Delphi''» у далейшым. Асноўнае дапаўненьне ў параўнаньні з папярэднімі вэрсыямівэрсіямі — заснаваная на спасылках (reference-based) аб’ектная мадэль, віртуальныя канструктары ій дэструктары, іа таксама ўласьцівасьці. Існуе некалькі кампілятараў, аснаваныхзаснаваных на гэтым дыялекце.
 
''Turbo Pascal'' і іншыя рэалізацыі з канцэпцыяй модуляў (''units'' ці ''module'') — гэта [[модульнасьць (праграмаваньне)|модульныя мовы]]. ''Turbo Pascal'' скапіяваў гэтая канцэпцыі ці з стандарту пашыранага ''Pascal'', ці зь ягоягонага пасьлядоўніка ''[[Modula-2]]''. Аднак у ім адсутнічае падтрымка канцэпцыі ўкладзеных модуляў і імпарту/экспарту асобных сімвалаўсымбаляў.
 
Для кампілятараў ''Turbo Pascal'' радок ''рrogram'' неабавязковы.
Радок 159 ⟶ 158:
== Стандарты ==
 
У 1983 мовымова была стандартызаваная ў міжнародным стандарце ISO/IEC 7185, а таксама ў частцы мясцовых стандартаў, у тым ліку ў амэрыканскім ANSI/IEEE770X3.97-1983. У 1990 быў створаны стандарт разшыранагарасшыранага Паскалю (extended Pascal) як ISO/IEC 10206.
 
ISO 7185 быў створаны для праясьненьня мовы ВіртаЎірта, створанай у 1974, у такім выглядзе, якой яна была апісанаапісаная ў кіраўніцтве карыстальніка ій ўу Report [Jensen and Wirth], аднак з дабаўленьнем «Conformant Array Parameters» як узровень 1 стандарту, узровень 0 — Паскаль без Conformant Arrays.
 
На вялікіх кампутарах (мэйнфрэймах[[мэйнфрэйм]]ах і мінікампутарах), адкуль пайшоў Паскаль, гэтыя стандарты выкарыстоўвалі. На IBM-PC — не выкарыстоўвалі. На IBM-PC найбольш пашыранымі былі стандарты Borland Turbo Pascal і Delphi. Таму важна знаць, якім стандартам адпавядае канкрэтны кампілятар — арыгінальнай мовы Паскаль ці дыялекту Borland.
 
== Даступныя кампілятары ==
Ёсьць некалькі кампілятараў Паскаля, даступных для агульнага выкарыстаньня:
* [http://homepages.cwi.nl/~steven/pascal/ P4 compiler], аснова шматлікіх кампілятараў Паскаля, напісаных на Паскалі, у тым ліку [[UCSD p-System]].
* [[Free Pascal]] напісаны на Паскалі (таму можа скампіляваць сам сябе), і ягоягоная мэта — стварэньне зручнага ій магутнага кампілятара, які можа кампіляваць гатовыя праграмы ій ствараць новыя. Ен таксама вольна распаўсюджваецца па ўмовамўмовах GNU GPL. Ён дазваляе зьмешваць код Turbo Pascal і Delphi, а таксама падтрымлівае шмат платформплятформаў і апэрацыйных сыстэмсыстэмаў.
* [[Turbo Pascal]] быў асноўным кампілятарам Паскалю уў 80-х і на пачатку 90-х, які выкарыстоўвалі, таму што ў яго былі магутныя разшырэньнірасшырэньні ій вельмі малы час кампіляцыі. Зараз старыя версіівэрсіі Turbo Pascal (да 5.5) даступныдаступныя для загрузкі з сайта Borland (патрэбнапатрэбная рэгістрацыя).
* [http://www.chromesville.com Chrome] — гэта кампілятар Паскалю для новага пакаленьня мовы Object Pascal для [[Microsoft .NET|.NET]] і [[Плятформа распрацоўкі Mono|Mono]], створаны RemObjects Software.
* [http://www.gnu-pascal.org/ GNU Pascal Compiler] (GPC) — гэта кампілятар Паскалю з [[GNU Compiler Collection]] (GCC, Калекцыі кампілятараў GNU). Сам кампілятар напісаны на [[C (мова праграмаваньня)|Сі]], бібліятэка часу выкананьня — у асноўным на Паскалі. Вольна распаўсюджваецца згодна з умовамі [[GNU General Public License]], і запускаецца на шматлікіх платформахплятформах і апэрацыйных сыстэмах. Ён падтрымлівае як мову стандартаў ANSI/ISO, так і мову Borland/Turbo Pascal. Падтрымка Borland Delphi і іншых версійвэрсіяў мовы пакуль што вельмі малая.
* [http://www.borland.com/delphi/ Delphi] — гэта прадукт Borland з падтрымкай RAD (хуткага стварэньня прагрампраграаўм). Ён выкарыстоўвае [[Delphi (мова праграмаваньня)|мову праграмаваньня Delphi]], якая пайшла ад мовы 'Pascal', для стварэньня праграмаў для [[Windows]]. Апошняя вэрсыявэрсія таксама падтрымлівае кампіляцыю для плятформы [[Microsoft .NET|.NET]].
* [http://www.borland.com/kylix/ Kylix] — гэта найноўшая распрацоўка Borland сярод іхіхніх паскальных прадуктаў. Гэта пасьлядоўнік [[Delphi (асяродзьдзе распрацоўкі)|Delphi]] з падтрымкай апэрацыйнайапэрацыйнае сыстэмы [[Linux]] і палепшанай бібліятэкай аб’ектаў. Кампілятар і IDE (серадовішча разробкі) зараз даступныдаступныя для некамэрцыйнага выкарыстаньня. Зараз гэты праэкт закінуты.
* [http://www.visible-software.com/prod-dp.html Dr. Pascal] — гэта інтэрпрэтатар, які выконвае стандартны Паскаль. Варта адзначыць рэжым «бачнага выкананьня», у якім паказваецца выконваемая праграма і яеейныя зьменныя, іа развітуютаксама разьвітую праверку на памылкі ўпад час выкананьня. Выконвае праграмы, але не стварае асобных выконваемых дваічныхдвайковых файлаў. Працуе ў MS-DOS, у Windows у акневакне эмуляцыі DOS і на старых Macintosh.
* [http://www.vpascal.com/ Virtual Pascal] быў створаны Vitaly Miryanov у 1995 як кампілятар для OS/2 з падтрымкай сынтаксысу Borland Pascal. Потым яго камерцыйнакамэрцыйна развінуларазьвінула fPrint, дадала падтрымку Win32, і ў 2000 ён стаўстаўся freeware. Сёньня ён можа кампіляваць праграмы для Win32, OS/2 і Linux і большай часткай сумяшчальны з Borland Pascal і Delphi.
* [http://www.moorecad.com/ippas/ IP Pascal] быў арыгінальна Паскалем для Z80/CP/M. Потым ён быў перанесены на Intel 80386/PC. У IP Pascal ёсцьёсьць убудаваная бібліятэка для партаваньня. Напрыклад, стандартную праграму вываду тэксту на Паскалі 1970-х гадоў можна перакампіляваць, і яна будзе працаваць у акневакне, нават з дадатковымі графічнымі канструкцыямі. IP Pascal падтрымлівае ISO 7185 з часткай лягічных дапаўненьняў. Напрыклад, «padded right» радкі стандартнага Паскалю падтрымліваюцца ій інтэграваныінтэграваныя ў дынамічныя радкі. Статычныя масівы стандартнага Паскалю дапоўненыдапоўненыя дынамічнымі масівамі, якія цалкам сумяшчальныя зса статычнымі масівамі, і так далей.
* [http://www.winsoft.sk/pstudio.htm Pocket Studio] — гэта кампілятар/RAD мовы Object Pascal (Delphi?) для ARM/Palm з часткай уласных дапаўненьняўдадаткаў.
* [http://www.lazarus.freepascal.org Lazarus] — гэта кросплятформавая вэрсыявэрсія візуальнага RAD IDE. [[Lazarus (software)|Lazarus]] выкарыстоўвае кампілятар [[Free Pascal]].
 
Вельмі вялікі сьпіс можна знайсьці на сайце [http://pascaland.org Pascaland]. Гэта сайт на французкайфранцускай мове, аднак у асноўным гэта проста сьпіс кампілятараў, таму гэта ня так важка. Вы таксама можаце паглядзець на сайт [http://pascal-central.com Pascal Central], на якім зьмешчаная інфармацыя пра Паскаль для Mac, у тым ліку багатая калекцыя артыкулаў, і спасылкі на шмат кампілятараў і падручнікаў.
 
== Крытыка ў мінулым ==
Калі Паскаль быў вельмі папулярным (аднак ён быў яшчэ болей папулярным у 1980-х і на пачатку 1990-х, чым упад час напісаньня), раннія вэрсыівэрсіі Паскаля шырока крытыкаваліся ў тым, што іх ня можна «сур’ёзна» выкарыстоўваць, акрамя як для навучаньня. Браян Кэрыган, знакаміты папулярызатар мовы Сі, апісаў свае аргумэнты ў 1981 годзе ў рабоцепрацы «[http://www.lysator.liu.se/c/bwk-on-pascal.html Чаму Паскаль не з’яўляеццазьяўляецца маёй улюбленай мовай праграмаваньня]». ЗЗь другогаіншага боку, шмат вялікіх распрацовак 1980-х, такія як [[Apple Lisa]] і [[Apple Macintosh|Macintosh]], шмат у чым абапіраліся на Паскаль. У наступным дзесяцігодзьдзі пасьля гэтага Паскаль працягваў сваё разьвіцьцё, таму большасьць аргумэнтаў таго часу нельга выкарыстоўваць да ягоягогых сучасных рэалізацыйрэалізацыяў. Аднак большасьць гэтых дапаўненьняў несумяшчальныя паміж кампілятарамі, хоць у апошнім дзесяцігодзьдзі яны, здаецца, аформіліся ў дзьве групы: ISO ці Borland-падобныя.
 
Выкарыстоўваючы досьвед, атрыманы пры стварэньні Паскаля, [[НіклаўсНікляўс ВіртЎірт]] стварыў яшчэ дзьве мовы праграмаваньня, [[Modula-2]] і [[Oberon]], якія былі яшчэ болей разьвітыя, аднак ня мелі камэрцыйнага посьпеху Паскаля.
 
== Глядзіце таксама ==