Pascal. Мова і системи програмування Паскаль . Вчіться.ру

25.07.2015

Pascal. Мова і системи програмування Паскаль

(На основі статті Р. Богатирьова — Літопис мов: Паскаль)

Народження мови PASCAL.

Вважається, що ювілей Паскаля припав на листопад 2000 р. виповнилося 30 років з моменту першої офіційної публікації опису мови. Але тоді це був перший, ще недоступний широкій аудиторії, технічний звіт Швейцарського федерального технологічного інституту ETH (Eidgenoessische Technische Hochschule). На самому початку 1971 р. звіт був представлений в журналі Acta Informatica, так що час життя нової мови логічніше було б відраховувати саме з цього моменту.

Його автор, швейцарський професор Ніклаус Вірт, багато в чому став відомий саме завдяки появі Паскаля. Однак і наступні його проекти стали не менш знамениті і переконливо довели світові, що запорука успішного використання комп’ютерів — в гармонії математики, інженерії та програмування. І якщо грамотно підійти до справи, то можна створити мови, операційні системи і навіть комп’ютери, що перевершують промислові зразки, силами звичайних студентів!

Мова Паскаль практично з самого його народження протиставляють іншої мови — Сі. Це яскраво виражене ідейне протистояння увійшло в історію поряд з двома іншими: у 60-ті роки – Алгол-60 і Фортран, в 90-ті роки – Сі++ і Java. Ось що з цього приводу сказав Денніс Рітчі, автор Сі (1993): «Я стверджую, що Паскаль дуже близький мові Сі. Одні, можливо, цьому здивуються, інші — ні. Навіть цікаво, наскільки вони близькі один одному. Ці мови більше розходяться в деталях, але в основі своїй однакові. Якщо ви поглянете на використовувані типи даних, а також на операції над типами, то виявите дуже велику ступінь збігу. І це незважаючи на те, що наміри Вірта при створенні Паскаля дуже відрізнялися від наших в мові Сі. Він створював мову для навчання, а тому переслідував дидактичні цілі. І, як я помітив це по Паскалю і за його пізнішим мовам, Вірт був у владі свого прагнення обмежити виразні засоби як можна сильніше. »

Так, Паскаль, на відміну від Сі, не створювався як мова системного програмування. В ім’я простоти і ефективності на тому рівні розуміння програмування Вірт свідомо пішов на свідоме обмеження можливостей мови, насамперед у відношенні спілкування з зовнішнім світом (введення-виведення і системно-залежні засоби). І все ж думати, що Паскаль — мова виключно для викладання, було б невірно. Послухаємо на цей рахунок думка самого Вірта (1984): «Стверджувалося, що Паскаль був розроблений в якості мови для навчання. Хоча це твердження справедливо, але його використання при навчанні не було єдиною метою. Насправді я не вірю в успішність застосування під час навчання таких інструментів і методик, які можна використовувати при вирішенні практичних завдань. За сьогоднішніми мірками Паскаль володів явними недоліками при програмуванні великих систем, але 15 років тому він представляв собою розумний компроміс між тим, що було бажано, і тим, що було ефективно».

Поява ETH Pascal і P-коду.

Перший компілятор Паскаля (ETH Pascal) був написаний у 1970 р. Перше офіційне опис Паскаля з викладенням синтаксису і семантики було опубліковано Віртом в кінці 1970 р. Нова версія мови вийшла в світ у 1972 р. Тоді ж Вірт і його англійський колега Чарльз Ентоні Хоар (Anthony Charles Richard Hoare) випустили аксіоматичне опис Паскаля.

«Наш перший компілятор Паскаля був реалізований на сімействі комп’ютерів CDC-6000 і написаний на самому Паскалі. Ніякого PL6000 не знадобилося, і я розглядав це як суттєвий крок вперед», — згадує Вірт. Неіснуючий мова PL6000 Вірт згадав у зв’язку з тим, що кількома роками раніше для ефективної реалізації компілятора мови Algol-W на комп’ютері IBM/360 йому знадобилося розробити низькорівневий мова PL360. Тепер же в цьому необхідності не було.

Чому був обраний саме комп’ютер фірми Control Data Corporation? Відповідь проста: до того моменту в ETH активно використовувалися саме ці машини, а вибір мов на них був більш ніж скромним: асемблер або Фортран. Конкурувати з Фортраном в ефективності на цій платформі було непросто, адже набір команд CDC-6000 створювався з прицілом саме на реалізацію Фортрану.

Написання компілятора в 1969 р. Вірт доручив одному своєму студенту (Е. Мармье). В той момент Мармье володів лише Фортраном і писав компілятор на цій мові з наступною його трансляцією в Паскаль. Потім компілятор Паскаля повинен був піддатися процесу розкрутки (переписаний на самому Паскалі). Як зазначає Вірт, вибір Фортрану був серйозною помилкою. Він не міг адекватно виражати складні структури даних компілятора, що все більше заплутувала програму.

Друга спроба створити компілятор почалася з того, що він відразу формулювалось на самому Паскалі (згідно з описом 1970 р.). Синтаксичний аналіз нового однопрохідного компілятора здійснювався методом рекурсивного спуску. Тепер в команду розробників увійшли У. Амман, Е. Мармье і Р. Шілд. Після того як компілятор був написаний ще не існуючому мовою, Щит був відправлений до себе додому на два тижні, де весь цей час він вручну транслював програму під допоміжний низькорівневий мова, доступний на CDC-6000. Отже, у середині 1970 р. компілятор ETH Pascal був готовий.

Він був цікавий не тільки тим, що став однією з перших реалізацій мов високого рівня на самому собі, приблизно на два роки випередивши компілятор Сі. У ході робіт над ним у 1973 р. була придумана абстрактна Pascal-машина (P-машина), виконуюча спеціальний P-код. Щоб вирішити проблему перенесення компілятор Паскаля на різні платформи, Вірт вирішив скористатися випробуваними часом » методами інтерпретації. З найбільш відомих рішень, що передували P-коду, можна назвати реалізацію мови Snobol-4 (Р. Грисуолд, 1967), де в якості коду абстрактної машини використовувалася мова SIL (System Implementation Language).

Як відомо, введення віртуальної (абстрактної) машини Java підносили її розробниками з Sun Labs чи не фундаментальне відкриття в практиці мов програмування. Один з учнів Вірта, Міхаель Франц, зауважив з цього приводу наступне: «Переносимість Java заснована на наявності віртуальної машини, що дозволяє легко імітувати велике число архітектур. Ідея віртуальної машини була дуже популярна вже більше двадцяти років тому, хоча згодом про неї забули. Тоді мова йшла про Pascal-P — створеної в ETH реалізації Паскаля, яка зіграла вирішальну роль у поширенні цієї мови. Цікаво, що віртуальні машини Паскаля і Java вельми схожі з архітектури: в обох використовуються однобайтові інструкції без адрес (операнди поміщаються в стек)».

Ідеї P-коду знайшли застосування не тільки в платформах Java і .NET, не тільки в інших мовах і машинах баз даних, але і в реалізації апаратних засобів. Наприклад, для безпосереднього виконання P-коду в Western Digital в 1979 р. був розроблений спеціальний набір WD9000 P-Engine. В Стенфордському університеті в 1980 р. був створений експериментальний процесор POMP. З’явилася в 1978 р. комерційна реалізація Паскаля — UCSD Pascal стала ще більш відомою, і багато хто забув, де вперше виникли P-код і P-машина. Ось що говорить про це Вірт: «Після того як стало відомо про існування Паскаля, кілька людей попросили нас допомогти в його реалізації на різних машинах, підкреслюючи, що вони мають намір використовувати його для навчання і що швидкодія для них не має першорядного значення. Після цього ми вирішили створити версію компілятора, яка генерувала б код для машини нашої власної конструкції. Пізніше цей код став відомий як P-код. Pascal-P виявився винятково вдалим мовою для розповсюдження серед великої кількості користувачів. І якщо б у нас вистачило мудрості передбачити масштаби такого розвитку подій, то ми доклали більше зусиль і старанності при розробці та документуванні P-коду».

Для зручності використання в ETH створили P-інструментарій, до якого увійшли компілятор в P-код і його інтерпретатор, причому все це у вигляді вихідних текстів. Одним із отримали такий набір став Університет Каліфорнії в Сан-Дієго.

Третя спроба реалізації в ETH компілятор Паскаля, який став згодом відомим під назвою P2, була зроблена учнем Вірта Урсом Амманом; у 1974 р. вона завершилася успіхом. Завдяки високій якості Р2 одержав широке поширення в університетах і компаніях.

Початок комерційного розповсюдження. UCSD Pascal. Turbo Pascal.

У 1975 р. професор Кеннет Боулес, який працював в Університеті Каліфорнії в Сан-Дієго (University of California at San Diego — UCSD), отримав з Цюріха P-інструментарій, який разом з компілятором P2 і був покладений в основу UCSD Pascal. В Інституті вивчення інформації каліфорнійського університету Боулес разом зі Стефеном Франкліном і Альфредом Борком зайнялися створенням системи програмування і операційної системи на базі Паскаля для мікрокомп’ютерних архітектур. В UCSD Pascal були внесені зміни як на рівні мови (в плані розширення і використання низькорівневих вставок коду, в тому числі і P-коду), так і на рівні P-машини. Вона була перероблена. Для ефективності використання Паскаля на різних комп’ютерах була включена додаткова можливість генерування машинного коду для потрібної архітектури відразу після отримання P-коду. Досить значним удосконаленням мови в UCSD Pascal стало введення unit-блоків, необхідних для підтримки роздільної компіляції. Згодом вони були успадковані в мові Turbo Pascal.

Цікаво, що взята ця ідея була специфікацій мови Ада, які до того моменту підходили до свого завершення. У той же час сам Вірт з мови Mesa запозичив куди більш досконалу конструкцію, ввів її в Модулу-2 і назвав «модулем» (module). Власне, вона і дала назву новому мови Вірта Modula-2 (MODUlar LAnguage).

За три роки команда Боулеса розробила закінчену систему, в яку увійшли текстовий редактор, файлова система, а також відладчик. Порівняно з тим режимом роботи, до якого вже звикли користувачі великих машин (введення програм і даних з перфострічки і перфокарт, а також спрощений термінальний введення-виведення), це був величезний крок вперед. З’явився прообраз того, що сьогодні називають IDE-середовищем (інтегрованою середовищем розробки). UCSD Pascal стала прародителькою системи Turbo Pascal, досягла небувалої популярності.

Що стосується UCSD Pascal, то ця реалізація Паскаля означала серйозний прорив: завдяки Боулесу сфера застосування мови значно розширилася, що, в свою чергу, дало помітний імпульс розвитку микрокомпьютерной революції.

Розробкою UCSD Pascal, зуміла стати закінченим комерційним продуктом, зацікавилися багато компаній. Причому їх увагу привернула і перспективна P-машина, на яку UCSD продав чимало ліцензій. В якості одного з прикладів можна навести процесор ITS, створений в Nippon Electric (1980) і призначений для виконання P-коду UCSD Pascal. Але і зараз, в епоху Java, інтерес до UCSD-реалізації не охолов. Так, зокрема, англійська компанія Cabot International продає нові версії P-машини по ліцензії UCSD. Це пропонується в якості альтернативи для Java в області ТБ-приставок і побутової електроніки (інтерактивне цифрове ТБ).

Величезну роль у масовому поширенні Паскаля зіграла компанія Borland International. На основі ідей UCSD Pascal вона зуміла створити знамениту Turbo-середовище розробки. Це був значний крок вперед у полегшенні процесу програмування. Зручність візуальних засобів у поєднанні з тісною інтеграцією інструментарію стали для сотень тисяч програмістів великою підмогою.

Правда, мова у виконанні Borland тепер вже віддалено нагадує те, що колись носило ім’я Паскаль. Безжальні закони ринку розчавили оригінал і народили на світ Turbo-Borland-Object Pascal. В результаті мова не став визначати реалізацію, а навпаки. Як тільки все було повернуто з ніг на голову, як тільки делікатні питання зміни мови виявилися долею вузького кола осіб усередині однієї компанії, стало зрозуміло, що розраховувати на підтримку промисловістю не переноситься на інші платформи мови просто безглуздо. І це в той час, коли давним-давно існували нові мови Вірта — Модула-2 і Оберон-2.

Що стосується Модулы-2, домоглася затвердження свого ISO стандарту, то компілятор для цієї мови (Turbo Modula-2) не тільки був створений в компанії Borland (для CP/M), що дуже ретельно приховується, але і надійшов у продаж (в Північній Америці та Європі). Однак керівництво компанії (Філіп Кан) відмовилося породжувати власного конкурента вкрай успішному Turbo Pascal. Обурений віце-президент Borland Нільс Йенсен (один із засновників компанії) разом зі своєю командою розробників в 1987 р. пішов з Borland, викупив права на Turbo Modula-2 і створив компанію JPI (Jensen & Partners International). В Англії нею під маркою TopSpeed була випущена одна з кращих лінійок компіляторів для процесорів сімейства x86: Assembler, Modula-2, Pascal, C/C++, Ada.

А що ж Turbo Pascal? Мова видозмінювався чи не в кожній версії середовища розробки! У версії 3.0 з’явилася вбудована графіка, у версії 4.0 — модулі, у версії 5.5 — засоби об’єктно-орієнтованого програмування. Починаючи з версії 7.0, Turbo Pascal був перейменований в Borland Pascal, а з появою Delphi — в Object Pascal.

щодо мови Turbo Pascal Ніклаус Вірт висловлюється досить дипломатично (1993): «Фактичний стандарт для Паскаля був визначений компанією Borland просто тому, що ними було створено компілятор, який поширювався широко і дешево. Borland розширювала Паскаль протягом ряду років, і деякі з цих нововведень були не настільки добре інтегровані в мову, як мені б того хотілося. Я був менш компромісним щодо власних розширень і тому дав новим проектом інше ім’я (йдеться про мову Модула-2). Наприклад, те, що Borland назвала UNIT, ми називали MODULE. Однак UNIT — це вставки у вигляді вихідного тексту, тоді як MODULE є окремою одиницею компіляції, яка допускає повний контроль типів і компонування на етапі завантаження». На питання про те, яку б оцінку Вірт поставив Модулі-2, якщо виходити з того, що Фортран заслужив «2», а Паскаль — «5», він відповів: «6». (У школах Швейцарії це найвищий бал.)

В тіні марки Borland виявилося ім’я автора Turbo Pascal данця Андерса Хейльсберга. У 1983 р. Borland викупила ліцензію на компілятор Хейльсберга і прийняла автора на роботу. У листопаді того ж року на ринку з’явився Turbo Pascal 1.0 для CP/M і комп’ютерів 8086. Історія зберегла навіть дані про компактності тій реалізації: розмір виконуваного .COM-файлу компілятора становив 33 Кбайт, а всі файли займали 130 Кбайт. В січні 1989 р. Microsoft випустила Quick Pascal, позиційований як конкурент Borland Pascal. Але він протримався недовго. Microsoft, Borland поділили ринок, розвівши гілки Сі та Паскаля ще далі один від одного.

Що стосується Хейльсберга, то він 13 років пропрацював в компанії і став керівником проекту Delphi. У жовтні 1996 р. Андерса Хейльсберга за 3 млн. дол. придбала корпорація Microsoft, і тепер він провідний архітектор мов .NET, а також автор мови C#. (При розробці C#, за словами Хейльсберга, розглядалися Сі++, Java, Модула-2, Smalltalk.)

Його колишня компанія, повернувши собі ім’я Borland після декількох років роботи під вивіскою Inprise, робить тепер активні кроки щодо зміцнення позицій свого Паскаля в бурхливо розвивається ОС Linux. Забезпечуючи простоту міграції програм, створених для Windows на Visual Basic і Object Pascal, в середовище Linux під єдиним інструментарієм Kylix, Borland Software має намір нанести серйозний удар по, здавалося, непорушним позиціях Microsoft.

Особливості мови Pascal і його наступники.

Мова Паскаль створювався Віртом під впливом ідей Карла Ентоні Хоара, опублікованих згодом у роботі «Нотатки структуризації даних» (Hoare C. A. R. Notes on Data Structuring Academic Press, 1972). Внесок англійського вченого у розробку мови був настільки значний, що його сміливо можна назвати хрещеним батьком Паскаля.

Від мови Паскаль прийнято відраховувати епоху структурного програмування. А все почалося з того, що відомий голландський фахівець Эдсгер Дейкстра опублікував статтю «Структурне програмування» (Dijkstra E. W. Structured Programming // NATO Science Committee, 1969). У ній він запропонував обмежити логіку управління програми всього трьома формами: слідуванням (sequence), розгалуженням (selection) і циклом (iteration). З цього випливало, що в мовах Алгол і ПЛ/1 оператор безумовного переходу (goto) був вже просто не потрібен. Вірт, правда, не ризикнув вилучити його з Паскаля. Але головне було в іншому: структурне програмування задавало спадний принцип розробки (покрокова декомпозиція), передбачала структурування логіки і даних, за рахунок простоти і математичної основи підвищувало надійність. Все це органічно вписувалося в можливості лаконічного Паскаля.

«Майже всі в програмному забезпеченні може бути реалізовано, продано і навіть використано, якщо проявити достатню наполегливість. Але існує одна якість, яке не можна купити таким чином, — це надійність. Ціна надійності — це гонитва за крайньою простотою. Це ціна, яку дуже багатому важче за все заплатити» — так Ентоні Хоар визначив для себе головний критерій, який став домінантою і для Вірта.

Зважений підхід, простота і лаконічність — ось запорука надійності. Вірт зазначає: «Підтримка мови максимально простим і регулярним завжди було пріоритетом у моїй роботі: опис Паскаля займало близько 50 сторінок, Модулы-2 — близько 40, а Оберона — і зовсім 16. І я розглядаю цю тенденцію як прогресивну. Істинна цінність мов програмування залежить від якості та практичності їх абстракцій».

Характеризуючи задум своєї мови, Вірт пише: «Головною інновацією Паскаля було введення варіативності структур і типів даних подібно до того, як Алгол ввів варіативність керуючих структур. Алгол пропонував тільки три базових типи даних: цілі і речові числа, значення істинності, масиви; Паскаль ввів додаткові базові типи і дав можливість визначати нові базові типи (перерахування, діапазони), а також нові види структурування: запис, безліч, файл (послідовність), частина яких була представлена в Коболе. Найбільш важливою стала, звичайно, рекурсивность структурних описів і витікаючий з неї можливість здійснювати комбінування і вкладення структур».

Рекурсія – це такий спосіб організації обчислювального процесу, при якому процедура або функція в ході виконання складових операторів звертається сама до себе. Сам механізм дії рекурсії досить простий і математично вивірений: щоб стверджувати правильність роботи рекурсивної програми, потрібно довести лише два пункти. По-перше, закінчує програма роботу – для цього зазвичай перевіряють, що з кожним рекурсивным викликом значення якогось параметра зменшується, і це не може тривати нескінченно. По-друге, чи працює вона правильно, якщо закінчує роботу – для цього достатньо перевірити, що програма, що містить рекурсивний виклик, працює правильно, припускаючи, що викликається нею однойменна програма працює правильно (насправді, в цьому випадку в ланцюжку рекурсивно викликаються програм всі програми працюють правильно). Класичним прикладом рекурсивного спуску є програма обчислення факторіала (наведена в книзі Шеня «Програмування: теореми і задачі»):

procedure factorial (n: integer; var fact: integer);

begin

if n=1 then

begin fact:=1; end

else begin factorial (n-1, fact); fact:= fact*n; end;

end;

Обмовляючись, потрібно зауважити, що обчислення факторіала не є справді наочним прикладом використання всіх переваг рекурсії, оскільки хоча програма в даному випадку і виглядає витонченіше і компактніше ітераційної, але при виконанні зазвичай повільніше і залишає небезпека аварійного завершення при переповнення стека.

Додатковою особливістю рекурсії в Паскалі є можливість здійснювати непрямий виклик. У цьому випадку блок (підпрограма) звертається до себе опосередковано, шляхом виклику іншого блоку, в якому міститься звернення до першого. Щоправда, тут уже організація програми в цілому буде складніше, оскільки, слідуючи правилу, що кожен ідентифікатор перед вживанням повинен бути описаний, необхідно вводити спеціальне випереджальний опис (ця проблема нагадує питання про те, що з’явилося раніше: курка чи яйце).

Розглядаючи інші зазначені Віртом особливості Паскаля, як мови структурного програмування, зазначимо тип «запис». Запис – це структура даних, що складається з фіксованого числа компонентів, званих полями запису. На відміну від масиву, поля запису можуть бути різного типу. Щоб можна було посилатися на той чи інший компонент записи, поля іменуються. Цікаво, що самі компоненти записи можуть бути описані типу «запис» — це робить запис схожою на дерево розгалужень, а звернення до якого-небудь його компоненту стає схожа вказівкою шляху до файлу. Крім того, в типі «запис» може бути вказана варіантна частина, що задається ключовими словами case…of». У стандартному Паскалі в якості ключа вибору необхідно вказати деяку змінну порядкового типу, причому у виконуваній частині програми можна присвоювати значення цієї змінної і таким чином впливати на вибір полів.

З інших нововведень в області структурування даних можна було б відзначити множини, але вони вже не так чудові, оскільки моделюють математичні безлічі.

Набагато цікавіше дізнатися, що ж говорили з приводу Паскаля противники цієї мови? З усіх критичних робіт по Паскалю, мабуть, найбільшу популярність отримала стаття Брайана Кернигана «Чому Паскаль не є моїм улюбленим мовою програмування». У 1981 р. вона з’явилася на світ у вигляді препринти AT&T Bell Laboratories. Оскільки ряд авторитетних журналів відмовилися її публікувати, вона стала розходитися «нелегальними» шляхами. В широкій пресі їй довелося вийти лише в 1984 р. у збірнику «Comparing and Assessing Programming Languages» (Prentice-Hall, 1984).

Як відомо, Керниган разом з Рітчі готував докладний опис мови Сі, а тому його думка особливо цікаво. Почалося все з того, що Керниган вирішив адаптувати вихідні тексти своєї книги «Software Tools» з Сі для Паскаля. До роботи над прикладами з книги, як пише Керниган, він приступив навесні 1980 р. і завершив її лише в січні 1981 р.

Серед переваг мови Керниган відзначив наступні: розглянуті вище механізм рекурсії і тип «запис», тип «перерахування», булеві змінні. Із серйозних недоліків він виділив відсутність підтримки масивів з відкритими кордонами, незручність роботи з рядками, відсутність статичних змінних (по відношенню до процедур і функцій), нагальну потребу в роздільної компіляції, обмежені засоби вводу-виводу.

Керниган пише: «Паскаль може бути чудовим мовою для навчання новачків того, як писати програми. Він безумовно вплинув вплив на проектування нових мов, з яких Пекла, мабуть, є найбільш важливим. Але в своєму стандартному вигляді (як нинішньому, так і пропонованому) Паскаль підходить для написання реальних програм».

Багато конкретні претензії зроблені по суті. Дійсно, масиви з «плаваючими» кордонами є однією з головних проблем мови Паскаль. Звичайно, у багатьох випадках цієї проблеми не видно, оскільки «зайва» (не використовується) частину масиву нікому не заважає, але коли вимагається точність розміру масиву (наприклад, при використанні його в якості аргументу функції або процедури), то тоді доводиться використовувати спеціальні прийоми, які зводяться до роботи з вказівниками і використання адресної арифметики (що дуже схоже на Assembler’вську роботу з осередками пам’яті). Ця ж проблема стосується і строкових змінних, які, по суті, є символьними масивами.

Однак, повертаючись до висловлювань Кернигана, зауважимо, що останній трохи лукавив, говорячи про недоліки Паскаля і замовчуючи про роботах Вірта, спрямованих на їх усунення. А адже до весни 1980 р. Вірт і його колеги не тільки вже завершили роботи з мови Модула-2 і орієнтованого на нього комп’ютера Ліліт (Lilith), але й опублікували їх результати. До того ж у 1977 р. у відомому журналі Software — Practice & Experience вийшла стаття Хоара, Велша і Снирингера з аналізом проблем Паскаля.

Прорахунки при створенні Паскаля були усунені в наступних мовах швейцарської школи (Вірта і його колег). Всі вони чітко дотримувалися основних тенденцій розвитку технології програмування. Програмування структурний (Паскаль), модульне (Модула-2), об’єктно-орієнтоване (Оберон-2), компонентне (Component Pascal) — все це значні кроки в індустрії.

«Наша кінцева мета, — пише Вірт, — розширюване програмування (extensible programming). Під цим я розумію можливість конструювання таких ієрархій модулів, коли кожен модуль додає нову функціональність в систему. Відкрите програмування має на увазі, що додавання модуля можливо без необхідності вносити які-небудь зміни в існуючі модулі — не повинно бути необхідності навіть їх перекомпілювати. Нові модулі не тільки додають нові процедури, але, що більш важливо, додають також нові (додаткові) типи даних. Ми продемонстрували практичність і економічність цього підходу при проектуванні Oberon System».

Короткий опис статті: мови програмування, Історія створення та розвитку мови Паскаль. pascal,паскаль,історія створення,мова програмування,лекції,курсова робота,лабораторна робота,приклади програм,навчальний посібник

Джерело: Pascal. Мова і системи програмування Паскаль | Вчіться.ру

Також ви можете прочитати