Літопис
мов Паскаль h2>
Паскаль ... Хто
з програмістів не знає про таке мовою? Його тріумф припав на 80-ті роки --
час революції в індустрії персональних комп'ютерів і період розквіту структурного
програмування. Він став свого роду точкою відліку початку нової ери мов.
Сьогодні майбутнє Паскаля представляється невизначеним, але, незважаючи на всі
злами долі, він продовжує служити вірою і правдою своїм шанувальникам. p>
Народження
Паскаля h2>
Формально
ювілей Паскаля припав на листопад 2000 р., коли виповнилося 30 років з моменту
першої офіційної публікації опису мови. Але то був недоступний широкій
аудиторії технічний звіт Швейцарського федерального технологічного
інституту ETH (Eidgenoessische Technische Hochschule). На самому початку 1971 р.
звіт було передруковано в першому номері журналу Acta Informatica. Так що
народження нової мови можна відраховувати і з цього моменту. p>
Його автор,
швейцарський професор Ніклаус Вірт, багато в чому став відомий саме завдяки
появи Паскаля. Але й наступні його проекти переконливо довели світові, що
ключ до таємниць комп'ютерів - в гармонії математики, інженерії та
програмування. І якщо грамотно підійти до справи, то можна реалізувати мови,
операційні системи і навіть створити чудові комп'ютери, що перевершують
промислові зразки, силами звичайних студентів! p>
Паскаль нерідко
протиставляють іншій мові - Сі. Але те, що говорив у присутності Вірта по
цього приводу Денніс Рітчі, автор Сі (1993): «Я стверджую, що Паскаль дуже
близький мові Сі. Одні, можливо, цьому будуть здивовані, інші - ні ... Навіть
цікаво, наскільки вони близькі один одному. Ці мови більше розходяться в
деталях, але в основі своїй однакові. Якщо ви поглянете на використовувані типи
даних, а також на операції над типами, то побачите дуже великий ступінь
збіги ... І це незважаючи на те, що наміри Вірта при створенні Паскаля
дуже відрізнялися від наших в мові Сі. Він створював мова для навчання, а тому
переслідував дидактичні цілі. І, як я помітив це по Паскалю і за його більше
пізнім мовам, Вірт був у владі свого прагнення обмежити виразні
кошти як можна сильніше ...» p>
Так, Паскаль, в
відміну від Сі, не створювався як мова системного програмування. В ім'я
простоти та ефективності на тому рівні розуміння програмування Вірт
свідомо пішов на явне обмеження можливостей мови, перш за все в
стосовно спілкування з зовнішнім світом (ввід-висновок і системно-залежні засоби). І
все ж думати, що Паскаль - мова виключно для викладання, було б
невірно. Послухаємо з цього приводу думка самого Вірта (1984): «Стверджувалося, що
Паскаль був розроблений в якості мови для навчання. Хоча це твердження
справедливо, але його використання при навчанні не було єдиною метою.
Насправді я не вірю в успішність застосування під час навчання таких
інструментів і методик, які не можна використовувати при вирішенні будь-то
практичних завдань. За сьогоднішніми мірками Паскаль мав явними недоліками
при програмуванні великих систем, але 15 років тому він був
розумний компроміс між тим, що було бажано, і тим, що було
ефективно ». p>
Протистояння Сі і Паскаля h2>
Мови Паскаль і
Сі багато в чому визначили шляхи розвитку програмування в кінці XX століття. Їх
протистояння нагадало романтичну епоху 60-х років, коли прихильники
Фортрану і Алгол-60 також опинилися по різні боки барикад. P>
При всьому
повазі до таких масштабних мов, як Кобол, ПЛ/1 і Алгол-68,
панував у 70-і роки, настільки явно виражену боротьбу людей і ідей нам
вдалося спостерігати лише в 80-е (Паскаль і Сі) і в самому кінці 90-х років - Сі + +
і Java. p>
Можна назвати
як мінімум три десятки мов, які зіграли помітну роль у розвитку
програмування, але все ж таки саме ці три пари - Алгол-60 і Фортран, Паскаль і
Сі, Java і Сі + + - стали найяскравішими, найбільш помітними на комп'ютерному
небосхилі. p>
Це, звичайно,
суто суб'єктивні відчуття, але в певні моменти еволюції можна було
спостерігати чи не беззастережне панування тієї чи іншої мови, що тут же
відбивалося на вимогах промисловості, на складанні навчальних планів у вузах
і університетах. У 70-і роки на піку популярності серед універсальних мов
був Фортран, в 80-ті - Паскаль, в 90-ті роки - Сі + +. На щастя, мови програмування,
на відміну від небесних світил не вмирають, а продовжують своє життя, розчиняючись
через роки і десятиліття в нових собі подібних зірках. p>
Творці
мов намагалися робити їх меншою мірою схожими на середовище спілкування між
людиною і комп'ютером і більшою - на впорядкований набір знаків і символів.
Першим тримати курс на традиційну й усталену математичну символіку
запропонував Х. Рутісхаузер (1952), що став родоначальником ідеї мов
програмування та одним з авторів мови Алгол-60. Широке розповсюдження і
застосування його ідеї отримали лише в 1957 р., після того, як корпорація IBM
опублікувала опис мови Фортран і реалізувала для нього компілятор,
транслював програми в машинний код. По суті, з цього моменту і почалася
епоха мов програмування. p>
Якщо поглянути
на історію мов з точки зору географії їх створення, то неважко зробити
висновок, що два нині найвідоміші гілки генеалогічного древа - Паскаль і
Сі, що дали життя багатьом своїм нащадкам, є яскравими виразниками відповідно
європейської та американської шкіл. При цьому в Старому Світі архітектори мов
активно використовують напрацювання американських дослідницьких центрів і
лабораторій, а представники Нового Світу намагаються збагачуватися ідеями
європейських фахівців (Швейцарія, Норвегія, Англія, Данія). Європейська
школа частіше ратує за чистоту і компактність своїх мов програмування,
тоді як заокеанська не в силах уникнути сумбурного включення новомодних
рішень. Ну майже як у житті: чистота і консерватизм французької мови проти
нестримних запозичень англійської в його американському діалекті. p>
ETH Pascal b> і b> P- b> код b> p>
Перший
компілятор Паскаля (ETH Pascal) був написаний в 1970 р. Перше офіційне
опис Паскаля з викладенням синтаксису та семантики було опубліковано Віртом в
Наприкінці 1970 р. Нова версія мови вийшла в світ у 1972 р. Тоді ж Вірт і його
англійська колега Чарльз Ентоні Хоар (Charles Anthony Richard Hoare) випустили
аксіоматичне опис Паскаля. p>
«Наш перший
компілятор Паскаля був реалізований на сімействі комп'ютерів CDC-6000 і написаний
на самому Паскалі. Ніякого PL6000 не треба було, і я розглядав це як
суттєвий крок вперед », - згадує Вірт. Неіснуючий мова PL6000 Вірт
згадав у зв'язку з тим, що кількома роками раніше для ефективної
реалізації компілятора мови Algol-W на комп'ютері IBM/360 йому знадобилося
розробити низькорівневий мова PL360. Тепер же в цьому необхідності не було. P>
Чому був
обрано саме комп'ютер фірми Control Data Corporation? Відповідь проста: на той
моменту в ETH активно використовувалися саме ці машини, а вибір мов на них
був більш ніж скромним: асемблер або Фортран. Конкурувати з Фортраном в
ефективності на цій платформі було непросто, адже набір команд CDC-6000
створювався з прицілом саме на реалізацію Фортрану. p>
Написання
компілятора в 1969 р. Вірт доручив одному свого студента (Е. Мармит). У той
момент Мармит володів лише Фортраном і писав компілятор цією мовою з
наступною його трансляцією в Паскаль. Потім компілятор Паскаля повинен був
піддатися процесу розкрутки (переписаний на самому Паскалі). Як відзначає
Вірт, вибір Фортрану був серйозною помилкою. Він не міг адекватно виражати
складні структури даних компілятора, що все більше заплутувало програму. p>
Друга спроба
створити компілятор почалася з того, що він одразу формулювався на самому
Паскалі (у відповідності з описом 1970 р.). Синтаксичний аналіз нового
однопрохідного компілятора здійснювався методом рекурсивного узвозу. Тепер у
команду розробників увійшли У. Амман, Е. Мармит і Р. Шілд. Після того як
компілятор був написаний на ще не існуючому мовою, Шілд був відправлений до себе
додому на два тижні, де весь цей час він вручну транслював програму під
допоміжний низькорівневий мову, доступний на CDC-6000. Отже, у середині 1970
м. компілятор ETH Pascal був готовий. p>
Він був
цікавий не тільки тим, що став однією з перших реалізацій мов високого
рівня на самому собі, приблизно на два роки випередивши компілятор Сі. У ході робіт
над ним в 1973 р. була придумана абстрактна Pascal-машина (P-машина),
виконуюча спеціальний P-код. Щоб вирішити проблему перенесення компілятора
Паскаля на різні платформи, Вірт вирішив скористатися випробувані часом
методами інтерпретації. З найбільш відомих рішень, що передували P-коду,
можна назвати реалізацію мови Snobol-4 (Р. Грісуолд, 1967), де в якості
коду абстрактної машини використовувався мова SIL (System Implementation
Language). P>
Як відомо,
запровадження віртуальної (абстрактної) машини Java підносилося її розробниками
з Sun Labs чи як не фундаментальне відкриття в практиці мов
програмування. Один з учнів Вірта, Міхаель Франц, зазначив із цього
приводу наступне: «Переносимість Java заснована на наявності віртуальної машини,
що дозволяє легко імітувати велике число архітектур. Ідея віртуальної машини
була дуже популярна вже понад двадцять років тому, хоча згодом про неї
забули. Тоді мова йшла про Pascal-P - створеної в ETH реалізації Паскаля, яка
відіграла вирішальну роль у поширенні цієї мови. Цікаво, що віртуальні
машини для Паскаля і Java досить схожі з архітектури: в обох використовуються
однобайтові інструкції без адрес (операнди поміщаються в стек )». p>
Ідеї P-коду
знайшли застосування не тільки в платформах Java і NET, не тільки в інших мовах і
машинах баз даних, але і в реалізації апаратних засобів. Наприклад, для
безпосереднього виконання P-коду в Western Digital в 1979 р. був розроблений
спеціальний набір WD9000 P-Engine. У Стенфордському університеті в 1980 р. був
створений експериментальний процесор POMP. , Що з'явилася в 1978 р. комерційна
реалізація Паскаля - UCSD Pascal стала ще більш відомою, і багато хто забув,
де ж вперше виникли P-код і P-машина. Ось що говорить про це Вірт: «Після
того, як стало відомо про існування Паскаля, кілька людей попросили
нас допомогти в його реалізації на різних машинах, підкреслюючи, що вони мають намір
використовувати його для навчання і що швидкодія для них не має
першорядного значення. Після цього ми вирішили створити версію компілятора,
яка б генерувала код для машини нашої власної конструкції. Пізніше
цей код став відомий як P-код ... Pascal-P виявився виключно вдалим
мовою для розповсюдження серед великої кількості користувачів. І якщо б у нас
вистачило мудрості передбачити масштаби такого розвитку подій, то ми доклали
б більше зусиль і старанності при розробці та документуванні P-коду ». p>
Для зручності
використання в ETH створили P-інструментарій, до якого увійшли компілятор в
P-код і його інтерпретатор, причому все це у вигляді вихідних текстів. Одним з
отримали такий набір став Університет Каліфорнії в Сан-Дієго. p>
Третя спроба
реалізації в ETH компілятора Паскаля, який згодом став відомим під
назвою P2, була зроблена учнем Вірта Урсом Амманом; в 1974 р. вона
завершилася успіхом. Завдяки високій якості Р2 отримав широке
поширення в університетах та компаніях. p>
UCSD Pascal
і початок комерційного розповсюдження h2>
У 1975 р.
професор Кеннет Боулес, що працював в Університеті Каліфорнії в Сан-Дієго
(University of California at San Diego - UCSD), отримав з Цюріха
P-інструментарій, який разом з компілятором P2 і був покладений в основу UCSD
Pascal. В Інституті вивчення інформації каліфорнійського університету Боулес
разом з Стефеном Франкліном і Альфредом Борко зайнялися створенням системи
програмування та операційної системи на базі Паскаля для мікрокомп'ютерних
архітектур. У UCSD Pascal були внесені зміни як на рівні мови (в плані
розширення і використання низькорівневих вставок коду, в тому числі і P-коду),
так і на рівні P-машини. Вона була перероблена. Для ефективності використання
Паскаля на різних комп'ютерах була включена додаткова можливість
генерування машинного коду для потрібної архітектури відразу після отримання
P-коду. Досить значним удосконаленням мови в UCSD Pascal стало
введення unit-блоків, необхідних для підтримки роздільної компіляції.
Згодом вони були успадковані у мові Turbo Pascal. P>
Цікаво, що
взята ця ідея була з специфікацій мови Ада, які до того моменту підходили
до свого завершення. У той же час сам Вірт з мови Mesa запозичив куди
більш досконалу конструкцію, ввів її в модулі-2 і назвав «модулем» (module).
Власне, вона і дала назву новому мови Вірта Modula-2 (MODUlar LAnguage). P>
За три роки
команда Боулеса розробила закінчену систему, до якої увійшли текстовий
редактор, файлова система, а також відладчик. У порівнянні з тим режимом
роботи, до якого вже звикли користувачі великих машин (введення програм і
даних з перфострiчок і перфокарт, а також спрощений термінальний введення-виведення),
це був величезний крок вперед. З'явився прообраз того, що сьогодні називають
IDE-середовищем (інтегрованої середовищем розробки). UCSD Pascal стала
прародителькою системи Turbo Pascal, яка досягла небувалої популярності. p>
Що стосується
UCSD Pascal, то ця реалізація для Паскаля означала серйозний прорив: завдяки
Боулесу сфера застосування мови значно розширилася, що, у свою чергу,
дало помітний імпульс розвитку мікрокомп'ютерної революції. p>
Розробкою
UCSD Pascal, що зуміла стати закінченим комерційним продуктом,
зацікавилися багато компаній. Причому їх увагу привернула і перспективна
P-машина, на яку UCSD продав чимало ліцензій. Як один з прикладів
можна навести процесор ITS, створений у Nippon Electric (1980) та
призначений для виконання P-коду UCSD Pascal. Але і зараз, в епоху Java,
інтерес до UCSD-реалізації не охолов. Так, зокрема, англійська компанія Cabot
International продає нові версії P-машини за ліцензією UCSD. Це пропонується
в якості альтернативи для Java в області ТБ-приставок і побутової електроніки
(інтерактивне цифрове ТБ). p>
Turbo Pascal h2>
Величезну роль у
масовому поширенні Паскаля зіграла компанія Borland International. На
основі ідей UCSD Pascal вона зуміла створити знамениту Turbo-середовище розробки.
Це був значний крок вперед у полегшення процесу програмування.
Зручність візуальних засобів у поєднанні з тісною інтеграцією інструментарію
стали для сотень тисяч програмістів у нагоді. p>
Правда, мова в
виконанні Borland тепер вже віддалено нагадує те, що колись носив ім'я
Паскаль. Безжальні закони ринку розчавили оригінал і народили на світ
Turbo-Borland-Object Pascal. У результаті не мова стала визначати реалізацію, а
навпаки. Як тільки все було повернуто з ніг на голову, як тільки делікатні
питання зміни мови виявилися долею вузького кола осіб усередині однієї
компанії, стало зрозуміло, що розраховувати на підтримку промисловість не
переносимого на інші платформи мови просто безглуздо. І це в той час,
коли давним-давно існували нові мови Вірта - Модула-2 і Оберон-2. p>
Що стосується
Модуль-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. p>
А що ж Turbo
Pascal? Мова видозмінювався чи не з кожною версією середовища розробки! У
версії 3.0 з'явилася вбудована графіка, у версії 4.0 - модулі, у версії 5.5 --
засоби об'єктно-орієнтованого програмування. Починаючи з версії 7.0 Turbo
Pascal був перейменований в Borland Pascal, а з появою Delphi - в Object
Pascal. P>
Відносно
мови Turbo Pascal Ніклаус Вірт висловлюється досить дипломатично (1993): «Фактичний
стандарт для Паскаля був визначений компанією Borland просто тому, що ними був
створений компілятор, який поширювався широко і дешево. Borland розширювала
Паскаль протягом ряду років, і деякі з цих нововведень були не настільки
добре інтегровані в мову, як мені б того хотілося. Я був менш
компр?? ссним щодо власних розширень і тому дав новому проекту
інше ім'я (йдеться про мову Модула-2. - Прим. ред.) Наприклад, те, що Borland
назвала UNIT, ми називали MODULE. Однак UNIT - це вставки у вигляді вихідного
тексту, тоді як MODULE є окремою одиницею компіляції, яка
допускає повний контроль типів і компонування на етапі завантаження ». На питання про
те, яку б оцінку Вірт поставив Модулі-2, якщо виходити з того, що Фортран
заслужив «2», а Паскаль - «5», він відповів: «6». (У школах Швейцарії це
найвищий бал.) p>
У тіні марки
Borland виявилося ім'я автора Turbo Pascal данця Андерса Хейльсберга. У 1983
м. Borland викупила ліцензію на компілятор Хейльсберга і прийняла автора на
роботу. У листопаді того ж року на ринку з'явився Turbo Pascal 1.0 для CP/M і
комп'ютерів 8086. Історія зберегла навіть дані про компактності тієї реалізації:
розмір виконуваного. COM-файлу компілятора становив 33 Кбайт, а всі файли
займали 130 Кбайт. У січні 1989 р. Microsoft випустила Quick Pascal,
позиціювалися як конкурент Borland Pascal. Але він протримався недовго.
Microsoft з Borland поділили ринок, розклавши гілки Сі і Паскаля ще далі один
від одного. p>
Що стосується
Хейльсберга, то він 13 років пропрацював в компанії і став керівником проекту
Delphi. У жовтні 1996 р. Андерса Хейльсберга за 3 млн. дол придбала
корпорація Microsoft, і тепер він провідний архітектор мов. NET, а також автор
мови C #. (При розробці C #, за словами Хейльсберга, розглядалися Сі + +,
Java, Модула-2, Smalltalk.) P>
Його колишня
компанія, повернувши собі ім'я Borland після кількох років роботи під вивіскою
Inprise, тепер робить активні кроки щодо зміцнення позицій свого
Паскаля в бурхливо розвивається ОС Linux. Забезпечуючи простоту міграції програм,
створених для Windows на Visual Basic і Object Pascal, в середу Linux під єдиним
інструментарієм Kylix, Borland Software має намір завдати серйозного удару по,
здавалося, непорушним позиціях Microsoft. p>
Особливості
Паскаля і його наступники h2>
Мова Паскаль
був не просто ревізією Algol-W. Він створювався Віртом під впливом ідей
Чарльза Ентоні Хоар, викладених згодом у роботі «Нотатки про
структуризації даних »(Hoare CAR Notes on Data Structuring Academic Press,
1972). Вклад англійського вченого в розробку мови був настільки значний, що
його сміливо можна назвати хрещеним батьком Паскаля. p>
Від мови
Паскаль прийнято відраховувати епоху структурного програмування. А все почалося
з того, що відомий голландський фахівець Едсгер Дейкстра опублікував статтю
«Структурне програмування» (Dijkstra EW
Structured Programming// NATO Science Committee, 1969). У ній він запропонував обмежити логіку
управління програми всього трьома формами: проходженням (sequence), розгалуження (selection)
і циклом (iteration). З цього випливало, що в мовах Алгол і ПЛ/1 оператор
безумовного переходу (goto) був вже просто не потрібен. Вірт, правда, не
ризикнув вилучити його з Паскаля. Але головне було в іншому: структурний
програмування задавало спадний принцип розробки (покрокова
декомпозиція), передбачала структурування логіки і даних, за рахунок
простоти і математичної основи підвищувало надійність ПЗ. Все це органічно
вписувалося у можливості лаконічного Паскаля. p>
«Майже всі в
програмному забезпеченні може бути реалізовано, продано і навіть використано,
якщо виявити достатню наполегливість ... Але існує одна якість, яка
не можна купити таким чином, - це надійність. Ціна надійності - це гонитва за
крайней простотою. Це ціна, яку дуже багатому важче за все заплатити »--
так Ентоні Хоар визначив для себе головний критерій, що став домінантою і для
Вірта. P>
Зважений
підхід, простота і лаконічність - ось запорука надійності. Вірт зазначає:
«Підтримка мови максимально простим і регулярним завжди було пріоритетом у
моїй роботі: опис Паскаля займало близько 50 сторінок, Модулі-2 - близько 40, а
Оберона - і зовсім 16. І я розглядаю цю тенденцію як прогресивну.
Справжня цінність мов програмування залежить від якості та практичності їх
абстракцій>. p>
Характеризуючи
задум своєї мови, Вірт пише: «Головною інновацією Паскаля було введення
варіативності структур і типів даних подібно до того, як Алгол ввів
варіативність керуючих структур. Алгол пропонував тільки три базові типу
даних: цілі та дійсні числа, значення істинності, масиви; Паскаль ввів
додаткові базові типи і дав можливість визначати нові базові типи
(перерахування, діапазони), а також нові види структурування: запис,
безліч, файл (послідовність), частина яких була представлена в Кобол.
Найбільш важливою стала, звичайно, рекурсивного структурних описів і випливає
з неї можливість здійснювати комбінування і вкладення структур>. p>
А що ж
говорили противники мови? З усіх критичних робіт з Паскалю, мабуть,
найбільшу популярність здобула стаття Брайана Керніган «Чому Паскаль НЕ
є моїм улюбленим мовою програмування ». У 1981 р. вона з'явилася на світ
у вигляді препринти AT & T Bell Laboratories. Оскільки ряд авторитетних журналів
відмовилися її публікувати, вона стала розходитися «нелегальними» шляхами. У широкому друці, їй довелося вийти лише в 1984 р. у збірнику
«Comparing and Assessing Programming Languages» (Prentice-Hall, 1984). P>
Як відомо,
Керніган разом з Рітчі готував докладний опис мови Сі, а тому його
думка особливо цікаво. Почалося все з того, що Керніган вирішив адаптувати
вихідні тексти своєї книги «Software Tools» з Сі для Паскаля. До роботи над
прикладами з книги, як пише Керніган, він розпочав навесні 1980 р. і завершив
її лише в січні 1981 р. p>
Серед
достоїнств мови Керніган відзначив наступні: механізм рекурсії, тип
«Перерахування», тип «запис», булеві змінні. Із серйозних недоліків він
виділив відсутність підтримки масивів з відкритими кордонами, незручність роботи
з рядками, відсутність статичних змінних (по відношенню до процедур і
функцій), нагальну потребу в роздільної компіляції, обмежені
засоби введення-виведення. p>
Керніган пише:
«Паскаль може бути чудовою мовою для навчання новачків тому, як писати
програми ... Він виразно вплинув на проектування нових мов,
з яких Ада, мабуть, є найбільш важливим. Але в своєму стандартному вигляді
(як нинішнього, так і пропонованому) Паскаль не підходить для написання реальних
програм ». p>
Багато
конкретні претензії зроблені по суті. Однак, як видно, Керніган
трохи лукавив, говорячи про недоліки Паскаля і замовчуючи про роботи Вірта,
спрямованих на їх усунення. Але ж до весни 1980 Вірт і його колеги не
тільки вже завершили роботи з комп'ютера Ліліт і мови Модула-2, а й
опублікували їх результати. До того ж в 1977 р. у відомому журналі Software --
Practice & Experience вийшла стаття Хоар, Уелша і Снірінгера з аналізом
проблем Паскаля. p>
Прорахунки при
створення Паскаля були усунуті в наступних мовах швейцарської школи (Вірта і
його колег). Всі вони чітко слідували основним тенденціям розвитку технології
програмування. Програмування структурний (Паскаль), модульне (Модула-2),
об'єктно-орієнтоване (Оберон-2), компонентний (Component Pascal) - все це
значні кроки в індустрії ПЗ. p>
«Наша кінцева
мета, - пише Вірт, - розширюване програмування (extensible programming).
Під цим я розумію можливість конструювання таких ієрархій модулів, коли
кожен модуль додає нову функціональність в систему. Розширюване
програмування на увазі, що додавання модуля можливе без
необхідності вносити будь-які зміни в існуючі модулі - не повинно
при необхідності навіть їх переконфігурувати. Нові модулі не лише додають
нові процедури, але, що більш важливо, додають також нові (розширені) типи
даних. Ми продемонстрували практичність і економічність цього підходу при
проектуванні Oberon System ». p>
Паскаль
живий?! h2>
Говорячи про
відсторонено і упереджене ставлення людей до «чужих» мовам, Вірт зазначає:
«Багато хто належать до стилів і мов програмування, як до релігійних
конфесій: якщо ви належите до однієї з них, то не можете належати до
інший. Але це хибна аналогія, і вона свідомо підтримується з причин
комерційного порядку ». p>
Справді,
протистояння двох таборів - Сі і Паскаля - всі ці роки навмисно заохочувався.
Між ними методично зводили високу стіну, а потім почали знищувати
поодинці. В особі UNIX мова Сі знайшов собі надійний захист від занадто
агресивних модерністів-реформаторів. У Паскаля ж такого «панцира» не
виявилося. Він продовжує свій шлях багато в чому завдяки відданості своїх
шанувальників, яка часом просто вражає. p>
* * * h2>
На закінчення
надамо слово опоненту Ніклаус Вірта - Денніса Рітчі: «Паскаль - дуже
елегантний мову. Він як і раніше живий. Він породив чимало своїх послідовників і
справив великий вплив на проектування мов ». p>
ПРО АВТОРА: h2>
Руслан
Богатирьов - керівник «Студії програмних технологій 1024» при видавництві
«Відкриті системи». E-mail: [email protected]
. p>
З біографії
Н. Вірта h2>
Професор
Ніклаус Вірт (Niklaus K. Wirth), автор мови Паскаль, закінчив Швейцарський
федеральний технологічний інститут ETH (Eidgenoessische Technische
Hochschule) в рідному Цюріху (1958). У Лавальском університеті у Квебеку
(Канада) він отримав ступінь магістра (1960). У 1963 р. в Університеті
Каліфорнії в Берклі (США) Вірт під керівництвом професора Гаррі ХАСК
реалізував розширення Алгол-60 (мова Euler) і захистив дисертацію. У 1963-1967
рр.. Вірт викладав у Стенфордському університеті (США). В цей же час він був
запрошений в міжнародну експертну групу IFIP Working Group 2.1, що займалася
проектуванням мови Алгол-68. p>
У 1967 р. Вірт
повернувся на батьківщину і став доцентом Університету Цюріха. У 1968 р. він перейшов у
ETH, де зайнявся розробкою мови Паскаль. У 1970 р. було завершено перший
компілятор Паскаля. У період 1978-1981 рр.. Вірт очолював проект, в результаті
якого була розроблена мова Модула-2, орієнтований на нього 16-розрядний
персональний комп'ютер Ліліт (Lilith) і ОС Medos. Всі ПЗ, включаючи системне,
було повністю реалізовано на Модулі-2. У 1984 р. Ніклаус Вірт за великий внесок
в розвиток мов програмування і за створення персонального комп'ютера Ліліт
був удостоєний премії Алана Тьюринга - найпрестижнішої і почесною в комп'ютерному
світі, яка за своїм значенням стоїть в одному ряду з Нобелівською премією. p>
У період
1986-1989 рр.. Вірт вів проект зі створення нової мови Oberon, що розширюється
об'єктно-орієнтованої ОС Oberon і 32-розрядної робочої станції Ceres. Багато
ідеї того проекту були покладені співробітниками Sun Labs в основу мови і
технології Java. p>
З 1990 р. Вірт
керував Інститутом комп'ютерних систем при ETH. У 1999 р. він пішов на
заслужений відпочинок і став почесним професором рідного ETH. p>
Найбільш важливі
реалізації Паскаля p>
Система p>
Рік p>
Керівник p>
Географія p>
Організація p>
ETH Pascal p>
1970 p>
Ніклаус Вірт p>
Європа p>
ETH p>
UCSD
Pascal p>
1978 p>
Кеннет Боулес p>
Америка p>
UCSD p>
Turbo
Pascal p>
1983 p>
Андерс Хейльсберг p>
Америка p>
Borland Int. p>
Стандарти
Паскаля h2>
У 1977 р. під
час конференції з Паскалю в Саутгемптоні Е. Еддіман попросив надати допомогу
у формуванні комітету з стандартизації при Британському інституті стандартів
BSI (British Standards Institute). У 1978 р. для обговорення розширення Паскаля
на конференції в Сан-Дієго, що проходила під керівництвом Кеннета Боулеса,
зустрілися представники промислових кіл. З цього і почалася стандартизація
мови. p>
У 1982 р.
Міжнародна організація по стандартизації (ISO) випустила стандарт ISO
7185:1983. В цей же час вийшов американський стандарт ANSI/IEEE 770X3.97: 1983.
Прийнято виділяти три принципово різних стандарту: Unextended Pascal (оригінал),
Extended Pascal (розширений) і Object-Oriented Extensions to Pascal
(об'єктно-орієнтований). У 1989 р. стандарт ISO 7185:1983 був
підкориговано, після чого потреба в самостійному ANSI-стандарті відпала
і він був замінений посиланням на ISO 7185:1990. Одним з головних відмінностей Extended
Pascal стало введення модульності, необхідної для роздільного компіляції.
Extended Pascal закріплений в міжнародному стандарті ISO/IEC 10206 (1991) і
американському ANSI/IEEE 770X3.160: 1989. У 1993 р. об'єктно-орієнтовані
розширення по відношенню до Extended Pascal були сформульовані в технічному
звіті ANSI/X3-TR-13: 1994. p>
Що стосується
найпоширенішою реалізації мови - Turbo Pascal, а також Object Pascal
(Delphi), то жодному з цих стандартів вони не відповідають. У свою чергу,
вони неявно самі ставлять угоди, якою намагаються слідувати деякі
реалізації. p>
Список
літератури h2>
Руслан
Богатирьов. Літопис мов Паскаль p>
Для підготовки
даної роботи були використані матеріали з сайту http://www.pascal.dax.ru/
p>