Паскал (Pascal) е структурен език за програмиране, създаден през 1970 г. от проф. Никлаус Вирт (Niklaus Wirth) от Швейцарския национален технологичен институт. Основната му цел е била да служи като език за обучение, т.е. да бъде лесен за научаване и да учи на добър стил на програмиране. Езикът, кръстен в памет на френския математик Блез Паскал, се използва от широк кръг програмисти, като добива особена популярност при студентите и учителите заради простотата си.
В края на 80-те години на ХХ век е разработена обектно-ориентирана версия, наречена Object Pascal от фирмата Борланд (Borland), използвана по-късно в средата за разработване Delphi, която е продукт на същата фирма. Навлиза и свободната реализация Free Pascal и визуална среда Lazarus, които са многоплатформени както откъм хардуер Intel x86, AMD64, ARM, така и от към ОС – Windows, Mac OS, Linux, Android.
Паскал напълно неоснователно е смятан от някои програмисти (познаващи само на теория така наречения ANSI Pascal – първоначална реализация на езика) на C или С++ за език играчка, тъй като поставя „ограничения“ върху това, което може да се постигне (макар че такива на практика отсъстват в почти всички съвременни реализации на езика), както и обезопасяването, което намалява бързодействието. С обезопасяването при работа с низове и масиви в паскал се избягват типични за програмите на С грешки от използване на незаделена или чужда памет. Поради по-близката си реализация до работата на процесорните инструкции, паскалските низове се обработват многократно по-бързо. Когато е нужно бързодействие, тези проверки в паскал могат да бъдат изключвани, чрез командни ключове на по-известните компилатори.
Примерни програми Hello, world program HelloWorld(input,output); uses crt; begin Writeln('Hello, World!'); Writeln('press any key to exit...'); Readkey; end.
Самоизписваща се програма (quine) const a:string='const a:string=;begin insert(#39+a+#39,a,16);write(a) end.';begin insert(#39+a+#39,a,16);write(a) end.
Реализация Ранни паскал компилатори Първият паскал компилатор е проектиран в Цюрих за серия мейнфрейм компютър семейството на CDC 6000.
Никлаус Вирт съобщава, че първият опит да го приложи във Fortran през 1969 г. е бил неуспешен поради неадекватност Fortran да изразява сложни структури от данни. Вторият опит е бил формулиран в самия език паскал и е пуснат в експлоатация до средата на 1970 г.
Много паскал компилатори, тъй като са били по подобен начин със самостоятелен хостинг – самият компилатор е написан на паскал, и компилаторът обикновено е способен да се компилира, когато се добавят нови функции към езика, или когато компилаторът бъде пренесен до нова среда. Компилаторът GNU Pascal е едно забележително изключение, който се пише на C.
Първият успешен порт на CDC паскал компилатор на друг мейнфрейм е завършен от Welsh и Куин в Университета на кралицата в Белфаст (QUB) през 1972 г.
Целта е била серията ICL 1900. Това от своя страна е била компилатор на родителя на паскал компилатор за информационни компютърни системи (ICS) Multum миникомпютър.
Портът Multum е разработена – с оглед на използването на паскал като език за програмиране системите – от Findlay, Cupples, Cavouras и Дейвис, работещи в Министерството на изчислителна науки на университета в Глазгоу.
Смята се, че Multum Pascal, който е завършен през лятото на 1973 г., може да е първата 16-битова имплементация.
Напълно новият компилатор е завършен от Welsh и др. в QB през 1977. Той предлага диагностична функция начален език (включващи профилиране, проследяване и типово запознати форматирани депа), които се прилагат от Findlay и Watt в университета на Глазгоу.
Това изпълнение се пренася през 1980 г. на поредицата ICL 2900 от екип на базата в Southampton University и университета на Глазгоу.
Изпълнението Standard Pascal Model също се основава на този компилатор, като са били адаптирани, от Welsh и Hay в университета в Манчестър през 1984 г., за да се провери щателно за съответствие с BSI 6192 / ISO 7185 стандарт и да се генерира код за преносима абстрактна машина.
Първият паскал компилатор, написан в Северна Америка, е създаден в Университета на Илинойс в рамките Donald B. Gillies за PDP-11 и генерира чист машинен код.
Pascal-P система За да пропагандира езика бързо, компилатор „пренасяне комплект“ е създаден в Цюрих, който включва компилатор, който генерира код за „виртуална“ стек машина, т.е. код, който придава самата разумно ефективна интерпретация, заедно с преводач за този код – системата Pascal-P.
Компилаторите на P-системи са наречени Pascal-P1, Pascal-P2, Pascal-P3 и P4-Pascal. Pascal-P1 е първата версия и Pascal-P4 бил последният, който идва от Цюрих.
Pascal-P4 компилатор / интерпретатор може да се стартирате и компилира на системи, съвместими с оригиналния паскал. Въпреки това той приема само подмножество на езика паскал Pascal-P5, създаден извън групата Цюрих, приема пълния език паскал и включва ISO 7185 съвместимост.
Компилаторът, базиран на Pascal-P4, който е създаден родните бинарни файлове, е бил освободен за IBM System / 370 мейнфрейм компютър от Australian комисия за атомна енергия; той е наречен „AAEC Pascal Compiler“ по съкращението на името на Комисията.
В началото на 1980 Watcom Pascal е разработен само за IBM System 370.
Пример за образователни цели. През 1990 паскал все още работи на VAX терминали в GMU. Паскал книгите са продавани и учени да изпълняват изискването за програмиране.
Object Pascal, Turbo Pascal Apple Computer създават свой собствен Lisa Pascal за Lisa семинара през 1982 г. и пренасят този компилатор на Apple Macintosh и MPW през 1985 г. През 1985 г. Лари Теслър, в консултации с Никлаус Вирт, дефинира Object Pascal и тези разширения биват включени както в Lisa Pascal, така и в Mac Pascal компилатори.
През 1980 Андърс Хейлсберг написва Blue Label Pascal компилатора за Nascom-2. Нова имплементация на този компилатор за IBM компютъра се предлага на пазара под имената Compas Pascal и PolyPascal преди да е бил придобит от Borland. Преименуван е на Turbo Pascal. Той става изключително популярен, благодарение отчасти на агресивна ценова стратегия и отчасти на факта, че притежава един от първите на цял екран Интегрирани среди за развитие и бърза обработка (само за няколко секунди се компилира, свързва и пуска). Освен това той е написан и силно оптимизиран изцяло на асемблерен език, което го прави по-малък и по-бърз, отколкото голяма част от конкуренцията. През 1986 г. Андерс пренася Turbo Pascal на Macintosh и включва Object Pascal разширения на Apple в Turbo Pascal. След това тези разширения са добавени обратно в компютърната версия на Turbo Pascal за версия 5.5. В същото време Microsoft също имплементира Object Pascal компилатора. Turbo Pascal 5.5 има голямо влияние върху Pascal общността, която се съсредоточава главно върху IBM компютъра в края на 1980-те. Множество PC ентусиасти в търсене на по-структуриран заместител на BASIC използват този продукт. Той също започва да се приема от професионални разработчици. По същото време редица концепции са били внесени от C, за да използват паскал програмисти C-базирани APIs директно от Microsoft Windows. Тези разширения включват нулеви низове, указателна аритметика, функционални указатели, адрес на оператори и необезопасени typecasts.
Въпреки това по-късно Borland решава, че иска по-сложни обектно-ориентирани функции, и започва отначало в Delphi с помощта на Object Pascal проекта за стандарт, предлаган от Apple като основа. (Този проект на Apple все още не е официален стандарт). Delphi продуктът е пълна среда за разработка и пълен набор от предварително кодирана адаптивни обекти (повечето от тях са екранни джаджи за Windows), известен като „Visual Component Library“ (VCL). Основният език е Object Pascal. Основните допълнения в сравнение с по-старите разширения на ООП са указателно-базирани обектни модели, виртуални конструктори и деструктори и свойства. Няколко други компилатори също въвеждат този диалект.
Turbo Pascal и други производни с дялове или модулни концепти са модулни езици. Въпреки това той не предоставя вложена модулна концепция или квалифициран внос и износ на специфични символи.
Други разновидности Super Pascal е разновидност, която добавя нецифрови етикети, декларация за връщане и изрази като имена на типове.
Университетите на Уисконсин, Цюрих, Карлсруе и Вупертал разработват Pascal-НС и Pascal-XSC (EXtension for Scientific Computing) компилатори, насочени към програмиране на числени пресмятания. TMT Pascal първият Borland-съвместим компилатор за 32-битов MS-DOS защитен режим, OS/2 и Win32 операционни системи. Също езика TMT Pascal е първият, който позволява претоварване на функция и оператор. Pascal-SC е първоначално насочен към процесора Z80, но по-късно е пренаписан за DOS (x86) и 68000. Pascal-XSC многократно е пренасян на UNIX (Linux, SunOS, HP-UX, AIX) и Microsoft / IBM (MS- DOS с EMX, OS / 2, Windows) операционни системи. Той работи чрез генериране на междинен C изходен код, който след това се компилира до локален файл. Някои от езикови разширения на Pascal-SC са приети от GNU Pascal.
Pascal Sol е проектиран около 1983 г. от френски екип за имплементиране на Unix системи наречени Sol. Това е стандартен Pascal ниво-1 (с параметъризирани граници на масив), но определението позволява алтернативни ключови думи и предварително определени идентификатори на френски и езикът включва няколко разширения за облекчаване на система за програмиране (например еквивалентно на lseek). Екипът на Sol по-късно предприема проекта ChorusOS да изработи разпределени операционна система.
IP Pascal е имплементация на езика за програмиране Pascal, използвайки Micropolis DOS, но е преместен бързо на CP/M, работещ на Z80. Той е преместен в машинните типове 80386 през 1994 г. и днес съществува като Windows/XP и Linux приложения. През 2008 г. системата е доведена до едно ново ниво и в резултат на това езикът, наречен „Паскалин“ (калкулаторът на Паскал). Той включва обекти, namespace контроли, динамични масиви, заедно с много други разширения, и като цяло се характеризира със същата функционалност и защита на типовете, като C#. Тя е единствената такава имплементация, която е съвместима и с оригиналната Pascal имплементация, която е стандартизирана като ISO 7185.
Понятия в езика Pascal в оригиналния си вид е чисто процедурен език и включва традиционната гама от АЛГОЛ-подобни структури за контрол с ключови думи като if, then, else, while, for и така нататък. Въпреки това Pascal също има много съоръжения за структуриране на данни и други абстракции, които не са били включени в първоначалния Algol 60, като определения на типове (types), записи (record/structure), указатели (pointer), броители (enum), както и множества (set). Такива конструкции са отчасти наследени или вдъхновени от Simula 67, ALGOL 68, ALGOL W и предложения от CAR Hoare.
Hello, world Program HelloWorld(output); Begin Write('Hello, world!') {no ";" is required after the last statement of a block - adding one adds a „null statement“ to the program;} End.
Типове данни Тип данниТип данни, които променливата може да съхраниintegerinteger (whole) numbersrealfloating-point numbersbooleanthe value True or Falsechara single character from an ordered character setstringa group or „string“ of characters
type byte = 0..255; signed_byte = -128..127; string = packed array[1..255] of char;
Данни в диапазон var x : 1..10; y : 'a'..'z';
Данни от тип set var Set1 : set of 1..10; Set2 : set of 'a'..'z';
if i in [5..10] then ...
if (i > 4) and (i < 11) then ...
if i in [0..3, 7, 9, 12..15] then ...
Декларация на типове данни type x = integer; y = x; ...
type a = array[1..10] of integer; b = record x : integer; y : char end; c = file of a;
Указателни типове type pNode = ^Node; Node = record a : integer; b : char; c : pNode {extra semicolon not strictly required} end; var NodePtr : pNode; IntPtr : ^integer;
New(NodePtr); ... NodePtr^.a := 10;