Pascal
Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі.
Pascal (Паска́ль) — мова праграмавання агульнага прызначэння, створаная Ніклаусам Віртам у 1970 годзе як мова структурнага праграмавання.
Pascal заснаваны на мове праграмавання Algol і названы ў гонар матэматыка і філосафа Блеза Паскаля. Вірт таксама стварыў мовы праграмавання Modula-2 і Oberon, падобныя на Pascal, аднак з дадатковымі сродкамі для аб'ектна-арыентаванага праграмавання.
Спачатку Pascal быў гіпатэтычнай мовай для навучэння студэнтаў структурнаму праграмаванню, і шмат студэнтаў вучыліся па ім. Варыянты Pascal выкарыстоўваюцца дагэтуль як у асвеце, так і ў праграмаванні.
Вялікая частка арыгінальная аперацыйнай сістэмы Macintosh была напісана на Pascal. Папулярная друкарская сістэма TeX напісана на мове пад назвай WEB, пры стварэнні якой Дональд Кнут шмат чаго узяў з Pascal.
Зьмест |
[рэдагаваць] Мова
Усе праграмы на Pascal пачынаюцца з ключавога слова program
, неабавязковага спіска унутраных дэскрыптараў файла і блоку кода, які знаходзіцца паміж словамі begin
і end
. Розніцы паміж вялікімі і маленькімі літарамі ў Pascal няма[1]. Кропка з коскай раздзяляе выразы, а кропка заканчвае праграму (ці модуль).
program HelloWorld(Input, Output); begin WriteLn('Hello, World!'); end.
Pascal, у сваёй арыгінальнай форме, — выключна працэдурная мова праграмавання са звыклымі для гэтага тыпа моў канструкцыямі if
, while
, for
і падобнымі.
Pascal — гэта структурная мова праграмавання, а гэта значыць, што ўвесь код разбіты на стандартныя выразы, лепей за ўсё без канструкцый безумоўнага пераходу (goto
).
while a <> b do begin WriteLn('Waiting'); end; if a > b then begin WriteLn('Condition met'); end else begin WriteLn('Condition false'); end; for i := 1 to 10 do WriteLn('Iteration: ', i:1); repeat a := a + 1; until a = 10;
У Pascal праграмы разбіваюцца на працэдуры і функцыі.
program Mine(Output); procedure print(var i: integer); function next(i: integer): integer; begin next := i + 1; end; begin WriteLn('The total is: ', i); i := next(i); end; begin i := 1; while i <= 10 do print(i); end.
Працэдуры і функцыі могуць быць укладзенымі да любой ступені, і канструкцыя program
— найвышэйшы блок.
У кожнага блока ёсць свае аб'яўлення метак goto
, канстант, тыпаў, зменных і іншых працэдур і функцый, якія маюць ісці ў такім парадку, як тут пералічана.
У Pascal ёсць наступныя тыпы дадзеных: цэлы лік, сімвал і лагічная зменная (простыя тыпы), а таксама новы тып, уведзены ў Pascal — пералічальны тып[2].
program Myprog; var a: integer; b: char; c: boolean; d: (one, two, three, four, five);
Можна стварыць «дыяпазон» любога з пералічаных тыпаў.
var x: 1..10; y: 'a'..'z'; z: two..four;
Можна ствараць новыя тыпы на аснове іншых за дапамогай аб'яўлення тыпаў[3]:
program MyOtherProg; type x = integer; y = x; ...
Болей складаныя тыпы можна стварыць за дапамогай простых тыпаў:
type a = array [1..10] of integer; b = record a: integer; b: char; end; c = file of a;
Радкі у класічным Pascal — гэта масівы сімвалаў[4].
[рэдагаваць] Заўвагі
- ↑ У адрозненне ад яго нашчадка – мовы Oberon, дзе ключавыя словы абавязаныя пісацца вялікімі літарамі
- ↑ Дарэчы, у сваіх пазнейшых працах Вірт прызнае, што гэты тып з'яўляецца лішкавым і вынімае яго з мовы Oberon, прапануючы карыстацца замест яго звычайнымі канстантамі
- ↑ У пашырэнні мовы ад кампаніі Borland – Object Pascal (Delphi) – уведзены спецыяльны сінтаксіс для абвешчання тыпу, несумяшчальнага з тым, ад якога ён атрыманы:
type TSpecInteger = type integer;
- ↑ У пашырэнні ад Borland (пачынаючы з Turbo Pascal) уведзены спецыяльны тып –
string
, які падтрымлівае большасць аперацый над радкамі сімвалаў, у тым ліку складанне двух радкоў запісамS:=S1+S2;
. Пазней гэты тып быў пашыраны для таго, каб падтрымліваць любую колькасць сімвалаў (спачатку да 255 – Turbo Pascal 4.0, потым да 232 − 1 сімвалаў – Object Pascal/Delphi 4.0).
[рэдагаваць] Hello World
program HelloWorld(input, output); begin WriteLn('Hello, World!'); end.
[рэдагаваць] Рэалізацыі
Першы кампілятар Pascal быў створаны ў Цюрыхе для сямейства кампутараў CDC 6000 і ён быў гатовы ў 1970 годзе.
Першы паўночнаамерыканскі кампілятар Pascal быў напісаны ў Універсітэце Ілінойса для PDP-11 і ствараў машынны код.
Для хуткага распаўсюджання мовы ў Цюрыхе быў створаны «набор інструментаў для партавання кампілятара», які ўключаў кампілятар у код для віртуальнай машыны і праграму, якая выконвала гэты код. Гэты набор стаў называцца P-сістэмай. Хаця з яго дапамогай планавалася стварэнне кампілятараў у машынны код, як мінімум адна сістэма выкарыстоўвала яго для стварэння інтэрпрэтуемай сістэмы — UCSD p-System.
IP Pascal быў рэалізацыяй Pascal для Micropolis DOS, аднак ён хутка быў перанесены на CP/M для Z80.
У пачатку 1980-х гадоў UCSD Pascal быў перанесены на камп'ютэры Apple II і Apple III як структурная мова праграмавання, бо ў той час з гэтымі камп'ютэрамі пастаўляўся інтэрпрэтатар мовы BASIC.
У пачатку 1980-х гадоў Anders Hejlsberg напісаў кампілятар Blue Label Pascal для Nascom-2. Пазней ён уладкаваўся на працу ў кампанію Borland і перапісаў свой кампілятар для IBM PC, і гэту версію назваў Turbo Pascal. Гэты новы кампілятар каштаваў 49,95$, што было намнога меней за цану на кампілятар Blue Label Pascal.
Танны кампілятар Borland меў вялікі ўплыў на карыстальнікаў Pascal, якія ў канцы 1980-х гадоў карысталіся ў асноўным IBM PC. Шматлікія аматары праграмавання на PC, якія раней шукалі структурную замену для мовы праграмавання BASIC, пачалі карыстацца гэтым прадуктам. Turbo Pascal быў даступны толькі для адной архітэктуры, таму ён кампіляваў код напрамую ў машынныя коды працэсара Intel 8088, што дазваляла выконваць праграмы на Pascal хутчэй, чым праграмы на інтэрпрэтуемых мовах праграмавання.
Super Pascal быў версіяй, якая дабавіла не лічбавыя меткі, аператар return і выразы як імёны тыпаў.
У 1990-х гадах кампілятары, на якіх можна скампіляваць код для розных сістэм, сталі выкарыстоўвацца часцей, у тым ліку і Pascal, які дазваляў кампіляцыю ў машынны код і ў той жа час лёгка пераносіўся на новае апаратнае забеспячэнне.
У версіі Turbo Pascal 5.5 Borland дабавіла ў Pascal аб'ектна-арыентаванае праграмаванне.
Аднак потым у Borland вырашылі, што патрэбен Pascal з лепей прадуманай рэалізацыяй ААП, і пачалі распрацоўку Delphi, які выкарыстоўваў ідэі Object Pascal, прапанаваныя Apple як аснову. (Гэтыя ідэі Apple дагэтуль не сталі фармальным стандартам.) Borland таксама называў сваю рэалізацыю Object Pascal у першых версіях Delphi, аднак змяніў назву на «мова праграмавання Delphi» у далейшым. Асноўнае дапаўненне ў параўнанні з папярэднімі версіямі — reference-based аб'ектная мадэль, віртуальныя канструктары і дэструктары і ўласцівасці. Есці некалькі кампілятараў, аснаваных на гэтым дыялекце.
Turbo Pascal і іншыя рэалізацыі з канцэпцыяй модуляў (units ці module) — гэта модульныя мовы. Turbo Pascal скапіяваў гэтая канцэпцыі ці з стандарту пашыранага Pascal, ці з яго паслядоўніка Modula-2. Аднак у ім адсутнічае падтрымка канцэпцыі ўкладзеных модуляў і імпарту/экспарту асобных сімвалаў.
Для кампілятараў Turbo Pascal радок рrogram неабавязковы.
[рэдагаваць] Стандарты
У 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.
[рэдагаваць] Publicly available compilers
Есць некалькі кампілятараў Паскаля, даступныя для агульнага выкарыстання:
- P4 compiler, аснова шматлікіх кампілятараў Паскаля, напісаных на паскале, у тым ліку UCSD p-System.
- Free Pascal напісаны на Паскале (таму можа скампіляваць сам сябе), і яго мэта – стварэнне зручнага і магутнага кампілятара, які можа кампіляваць гатовыя праграмы і ствараць новыя. Ен таксама вольна распаўсюджваецца па ўмовам GNU GPL. Ён дазваляе змешваць код Turbo Pascal і Delphi, а таксама падтрымлівае шмат платформ і аперацыйных сістэм
- Turbo Pascal быў асноўным кампілятарам Паскалю у 80-х і на пачатку 90-х, які выкарыстоўвалі, таму што ў яго былі магутныя разшырэння і вельмі малы час кампіляцыі. Зараз старыя версіі Turbo Pascal (да 5.5) даступны для загрузкі з сайта Borland (патрэбна рэгістрація).
- Chrome – гэта кампілятар Паскалю для новага пакалення мовы Object Pascal для .NET і Mono, створаны RemObjects Software.
- GNU Pascal Compiler (GPC) — гэта кампілятар Паскалю з GNU Compiler Collection (GCC, Калекцыі кампілятараў GNU). Сам кампілятар напісаны на C, бібліятэка часу выканання — у асноўным на Паскалі. Вольна распаўсюджваецца згодна з умовамі GNU General Public License, і запускаецца на шматлікіх платформах і аперацыйных сістэмах. Ен падтрымлівае як мову стандартаў ANSI/ISO, так і мову Borland/Turbo Pascal. Падтрымка Borland Delphi і іншых версій мовы пакуль што вельмі малая.
- Delphi – гэта прадукт Borland з падтрымкай RAD (Хуткага створання праграм). Ён выкарыстовуе мову праграмавання Delphi, якая пайшла ад мовы 'Pascal', для стварэння праграм для Windows. Апошняя версія таксама падтрымлівае кампіляцыю для платформы .NET.
- Kylix – гэта навейшая разробка Borland сярод іх паскальных прадуктаў. Гэта паслядоўнік Delphi з падтрымкай аперацыйнай сыстэмы Linux і палепшанай бібліятэкай аб'ектаў. Кампілятар і IDE (серадовішча разробкі) зараз даступны для некамерцыйнага выкарыстання. Кампілятар (але не бібліятэку і не IDE) плануецца хутка пераўтварыць у Open Source.
- Dr. Pascal – гэта інтэрпрэтатар, які выконвае стандартны паскаль. Варта адзначыць рэжым "бачнага выканання", у якім паказваецца выконваемая праграма і яе зменныя, і развітую праверка на памылкі ў час выканання. Выконвае праграмы, але не стварае асобных выконваемых дваічных файлаў. Працуе ў MS-DOS, у Window у акне эмуляцыі DOS і на старых Macintosh.
- Virtual Pascal быў створаны Vitaly Miryanov у 1995 як кампілятар для OS/2 з падтрымкай сінтакса Borland Pascal. Потым яго камерцыйна развінула fPrint, дадала падтрымку Win32 і ў 2000 ён стаў freeware. Сёння ён можа кампіляваць праграмы для Win32, OS/2 і Linux і большай часткай сумясцімы з Borland Pascal і Delphi.
- IP Pascal быў арыгінальна Паскалем для Z80/CP/M. Потым ён быў перанесены на Intel 80386/PC. У IP Pascal ёсць устроеная бібліятэка для партавання. Напрыклад, стандартную праграму вываду тэксту на Паскалі 1970-х гадоў можна перакампіляваць і яна будзе працаваць у акне, нават з дадатковымі графічнымі канструкцыямі. IP Pascal падтрымлівае ISO 7185 з часткай лагічных дапоўненняў. Напрыклад, "padded right" строкі стандртнага паскалю падтрымліваюцца і інтэграваны ў дынамічныя строкі. Статычныя масівы стандартнага паскалю дапоўнены дынамічнымі масівамі, якія поўнасцю сумясцімыя з статычнымі масівамі і так далей.
- Pocket Studio – гэта кампілятар/RAD мовы Object Pascal (Delphi?) для ARM/Palm з часткай уласных дапоўненняў.
- Lazarus – гэта кросплатформеная версія Візуальнага RAD IDE. Lazarus выкарыстоўвуе кампілятар Free Pascal.
Вельмі вялікі спіс можна знайці на сайце Pascaland. Гэта сайт на французкай мове, аднак у асноўным гэта проста спіс кампілятараў, таму гэта не так важліва. Вы таксама можаце паглядзель на сайт Pascal Central, на якім змешчана інфармацыя пра Паскаль для Mac, у тым ліку багатая калекцыя артыкулаў, і спасылкі на шмат кампілятараў і падручнікаў.
[рэдагаваць] Крытыка ў мінулым
Калі Паскаль быў вельмі папулярным (аднак ён быў яшчэ болей папулярным у 1980-х і на пачатку 1990-х, чым у час напісання), раннія версіі Паскаля шырока крытыкаваліся у тым, што іх не можна "сур'ёзна" выкарыстоўваць акрамя як для наўчання. Брайан Керіган, знакаміты папулярызатар мовы C, апісаў сваі аргументы ў 1981 годзе ў яго рабоце «Чаму Паскаль не з'яўляецца маёй улюбленай мовай праграмавання». З другога боку, шмат вялікіх разробак 1980-х, такія як Apple Lisa і Macintosh, шмат у чам апіраліся на Паскаль. У дзесяцігоддзя пасля гэтага Паскаль прадоўжваў сваё развіццё, таму большасць аргументаў таго часу нельга выкарыстоўваць да яго сучасных рэалізацый. Аднак большасць гэтых дапаўненняў не сумясцімы паміж кампілятарамі, хоць у апошнім дзесяцігоддзі яны, здаецца, аформіліся у дзве групы: ISO ці Borland-падобныя.
Выкарыстоўвуючы досвет, атрыманы пры стварэнні Паскаля, Вірт, Ніклаус стварыў яшчэ дзве мовы праграмавання, Modula-2 і Oberon, якія былі яшчэ болей развітыя, аднак не мелі камерцыйнага поспеху Паскаля.
[рэдагаваць] Дальнейшае чытанне
- Kathleen Jansen and Niklaus Wirth: PASCAL - User Manual and Report. Springer-Verlag, 1974, 1985, 1991, ISBN 0-387-97649-3 and ISBN 0-540-97649-3 [1]
- Niklaus Wirth: The Programming Language Pascal. Acta Informatica, 1, (Jun 1971) 35-63
- N. Wirth, M. Broy, ed, and E. Denert, ed: Pascal and its Successors in Software Pioneers: Contributions to Software Engineering. Springer-Verlag, 2002, ISBN 3-540-43081-4
- also in N. Wirth, and A. I. Wasserman, ed: Programming Language Design. IEEE Computer Society Press, 1980
- ISO/IEC 10206: Extended Pascal. [2]
- ISO/IEC 7185: Programming Languages - PASCAL. [3]
- Brian W. Kernighan, Why Pascal is Not My Favorite Programming Language
- Bill Catambay, The Pascal Programming Language
- How To Code: Pascal