Компонентный Паскаль

Поделись знанием:
Перейти к: навигация, поиск
Component Pascal
Класс языка:

императивный, структурный, модульный,компонентный, объектный

Появился в:

2001[1]

Автор:

Oberon Microsystems

Система типов:

сильная, статическая

Испытал влияние:

Цепочка наследования: ПаскальМодулаМодула-2ОберонОберон-2

Компонентный Паскальязык программирования c парадигмой компонентно-ориентированного программирования. Создан на основе языка Оберон-2 компанией Oberon microsystems, Inc. Является прямым наследником языка Паскаль[2].





Синтаксис языка

Основные уточнения Компонентного Паскаля по сравнению с Обероном-2 касаются следующего:

  1. Главная идея уточнений по сравнению с Обероном-2 была в том, чтобы дать проектировщику компонентного каркаса (т.е. интерфейсов модулей, определяющих абстрактные классы для конкретной проблемной области) более полный контроль над её проектируемыми свойствами в плане безопасности[3]. Введены специальные атрибуты для типов (ABSTRACT, EXTENSIBLE, LIMITED)[1] и методов (ABSTRACT, EMPTY, EXTENSIBLE)[1], позволяя автору программной компоненты (группы модулей) осуществлять контроль в плане того, разрешать или нет модулям-клиентам расширять предлагаемые им типы.
  2. Модернизирована несколько устаревшая система основных типов Оберона: теперь набор основных типов Компонентного Паскаля является надмножеством[4] для основных типов языка Java. Основные «рабочие» типы INTEGER, REAL и CHAR соответствуют 32-, 64- (т. н. двойная точность) и 16-(Unicode)-битовым переменным, что позволяет уменьшить разнообразие основных типов, реально используемых в большинстве случаев; использование других типов (LONGINT, SHORTREAL, SHORTCHAR и т. д.) ограничивается специальными приложениями.
  3. Добавлены базовые средства для работы с цепочками литер (неявный тип String), что вместе со стандартным модулем Strings в системе программирования BlackBox делает Компонентный Паскаль более удобным, чем Паскаль или Оберон, для работы со строками. Цепочки литер представляются массивами литер (ARRAY OF CHAR или ARRAY OF SHORTCHAR), причем значением считается последовательность литер до первого вхождения специальной литеры-ограничителя 0X. Цепочки литер можно сравнивать (подразумевается лексикографическое сравнение) и складывать (конкатенация). Конструкция a := b$ позволяет скопировать в массив литер a цепочку, хранящуюся в массиве литер b (включая литеру-ограничитель 0X), даже если присваивание a := b запрещено (например, из-за разной длины массивов a и b).

Полное описание синтаксиса языка в расширенной форме Бэкуса-Наура приведено на страницах Сообщения о языке Компонентный Паскаль[1]. Оно содержит 34 грамматических выражения, что лишь на одно больше чем для Oberon-2.

Реализации компиляторов для Компонентного Паскаля

BlackBox Component Builder

Система программирования BlackBox Component Builder (производитель Oberon microsystems) работает под ОС Microsoft Windows и Mac OS, доступны также экспериментальные сборки для linux. Включает среду разработки, компилятор (exe и dll), среду поддержки выполнения (виртуальную машину), профилировщик, и набор готовых компонентов для возможности обращаться к интерфейсам ОС (WinApi, WinOle, COM), средства работы с базами данных, поддержку коммуникационных протоколов TCP/IP и т. д. Включает компонентный каркас для создания диалоговых систем, интерактивной графики, а также составных документов. Версия под Microsoft Windows поддерживает механизм OLE. Компилятор и каркас «шлифуются» с 1993 года, при этом развитие идет, в основном, через добавление новых компонентов в стиле Оберона и Компонентного паскаля. Недостатком является отсутствие подробного «щадящего» описания каркаса, хотя в дистрибуции имеется большой набор нетривиальных примеров программ и выпущено несколько учебников посвященных работе в BlackBox (см. раздел. Литература). Начиная с версии 1.6 BlackBox полностью поддерживает юникод.

В России разработкой, русификацией и улучшением среды BlackBox занимается сообщество программистов OberonCore[5], развивая проект Oberon2005[6][7] и[8]. В рамках работы сообщества переведен полностью пакет документации и разработаны русифицированые сборки среды[9], поддерживается BlackBox Freenix[10] — не использующая wine сборка BlaxkBox для юникс-подобных систем, позволяющая создавать GUI-приложения, работающие поверх Gtk.

Gardens Point Component Pascal

Gardens Point Component Pascal[11][12][13] — ещё один компилятор для языка Компонентный Паскаль, выполненный в австралийском Квинслендском Технологический Университете[14] (место работы сооснователя Oberon microsystems Клеменса Шиперского до его перехода в Microsoft Research). Имеющиеся ограничения: нет указателей на функции и нет доступа к не-локальным переменным во вложенных процедурах[15]. Компилятор gpcp Квинслендского Технологического Университета имеет версию как для среды .NET, так и для виртуальной Java-машины (JVM)[16]. Компилятор написан на Компонентном Паскале[15]. Здесь же, Компонентный Паскаль был интегрирован в Visual Studio[17] и в межплатформенную среду разработки Eclipse[17].

Напишите отзыв о статье "Компонентный Паскаль"

Примечания

  1. 1 2 3 4 [www.oberon.ch/pdf/CP-Lang.pdf Сообщение о языке Компонентный Паскаль]
  2. Цепочка наследования: ПаскальМодулаМодула-2ОберонОберон-2 → Компонентный Паскаль
  3. Ткачёв Ф.В. [oberon2005.oberoncore.ru/paper/pas_hst.pdf Краткая история Паскаля] // МИР ПК. Диск. 2005. С. 2–5.
  4. [oberon2005.oberoncore.ru/paper/p_o2cp.pdf The Evolution of Oberon-2 to Component Pascal (Технический отчет Oberon Microsystems) (2001), раздел "Specified Domains of Types"]
  5. [oberoncore.ru OberonCore]
  6. [oberon2005.oberoncore.ru/ Oberon2005]
  7. [ria-sibir.ru/viewnews/10171.html Россия, имеющая блестящие достижения научных школ математики, физики и инженерного дела, ныне остается едва ли не единственным оазисом неремесленного программирования] / РИА «Сибирь», 2005-09-30 13:58:00
  8. [www.inr.ac.ru/~info21/ Информатика-21]
  9. [www.oberoncore.ru/wiki/blackbox BlackBox Component Builder]
  10. [oberoncore.ru/projects/bb-freenix BlackBox Freenix]
  11. Gough K.J. Stacking them up: a comparison of virtual machines // Proceedings 6th Australasian Computer Systems Architecture Conference. ACSAC 2001. IEEE Comput. Soc. P. 55-61.
  12. Gough K.J. Parameter passing for the Java virtual machine // Proceedings 23rd Australasian Computer Science Conference. ACSC 2000 (Cat. No.PR00518). IEEE Comput. Soc. P. 81-87.
  13. Gough J. Virtual Machines, Managed Code and Component Technology // 2005 Australian Software Engineering Conference. Ieee. P. 5-12.
  14. [plas.fit.qut.edu.au/gpcp/NET.aspx Component Pascal on .NET]
  15. 1 2 [plas2003.fit.qut.edu.au/gpcp/files/TheNGWSruntime.doc John Gough, Queensland University of Technology.The .NET Runtime as a Compiler Target]
  16. [plas.fit.qut.edu.au/gpcp/Downloads.aspx Download Gardens Point Component Pascal]
  17. 1 2 [plas.fit.qut.edu.au/gpcp/IDE.aspx Component Pascal for IDEs]

Литература

  • [www.inr.ac.ru/~info21/cpascal/cp_report_1.4_rus.htm Компания Oberon microsystems. «Сообщение о языке Компонентный Паскаль»], перевод Ф. В. Ткачева
  • Никлаус Вирт. Алгоритмы и структуры данных. Новая версия для Оберона. — ДМК Пресс, 2010. — 272 с. — 1000 экз., [www.inr.ac.ru/~blackbox/rsrc/ADru.zip примеры к книге] (для BlackBox Component Builder), [www.inr.ac.ru/~info21/ADen/AD2012.pdf английский оригинал]
  • Никлаус Вирт. Построение компиляторов. — ДМК Пресс, 2010. — 192 с. — 1000 экз., [oberoncore.ru/library/compiler_construction примеры и дополнительные материалы к книге плюс обновлённый английский оригинал на сайте Oberon Core]
  • Виталий Потопахин. Современное программирование с нуля!. — ДМК Пресс, 2011. — 240 с. — 1000 экз. — ISBN 978-5-94074-665-2.
  • Виталий Потопахин. Современный самоучитель по алгоритмам. — ДМК Пресс, 2012. — 320 с. — 500 экз. — ISBN 978-5-94074-804-5. (старое издание Виталий Потопахин. Искусство алгоритмизации. — ДМК Пресс, 2011. — 320 с. — 1000 экз. — ISBN 978-5-94074-621-8.)

Ссылки

  • [www.oberon.ch/ Oberon microsystems, Inc.]
  • Component Pascal в каталоге ссылок Open Directory Project (dmoz).  (англ.)

Отрывок, характеризующий Компонентный Паскаль

– Всё это бредни, – остановил его опять князь Андрей, – поговорим лучше о деле. Был ты в конной гвардии?…
– Нет, не был, но вот что мне пришло в голову, и я хотел вам сказать. Теперь война против Наполеона. Ежели б это была война за свободу, я бы понял, я бы первый поступил в военную службу; но помогать Англии и Австрии против величайшего человека в мире… это нехорошо…
Князь Андрей только пожал плечами на детские речи Пьера. Он сделал вид, что на такие глупости нельзя отвечать; но действительно на этот наивный вопрос трудно было ответить что нибудь другое, чем то, что ответил князь Андрей.
– Ежели бы все воевали только по своим убеждениям, войны бы не было, – сказал он.
– Это то и было бы прекрасно, – сказал Пьер.
Князь Андрей усмехнулся.
– Очень может быть, что это было бы прекрасно, но этого никогда не будет…
– Ну, для чего вы идете на войну? – спросил Пьер.
– Для чего? я не знаю. Так надо. Кроме того я иду… – Oн остановился. – Я иду потому, что эта жизнь, которую я веду здесь, эта жизнь – не по мне!


В соседней комнате зашумело женское платье. Как будто очнувшись, князь Андрей встряхнулся, и лицо его приняло то же выражение, какое оно имело в гостиной Анны Павловны. Пьер спустил ноги с дивана. Вошла княгиня. Она была уже в другом, домашнем, но столь же элегантном и свежем платье. Князь Андрей встал, учтиво подвигая ей кресло.
– Отчего, я часто думаю, – заговорила она, как всегда, по французски, поспешно и хлопотливо усаживаясь в кресло, – отчего Анет не вышла замуж? Как вы все глупы, messurs, что на ней не женились. Вы меня извините, но вы ничего не понимаете в женщинах толку. Какой вы спорщик, мсье Пьер.
– Я и с мужем вашим всё спорю; не понимаю, зачем он хочет итти на войну, – сказал Пьер, без всякого стеснения (столь обыкновенного в отношениях молодого мужчины к молодой женщине) обращаясь к княгине.
Княгиня встрепенулась. Видимо, слова Пьера затронули ее за живое.
– Ах, вот я то же говорю! – сказала она. – Я не понимаю, решительно не понимаю, отчего мужчины не могут жить без войны? Отчего мы, женщины, ничего не хотим, ничего нам не нужно? Ну, вот вы будьте судьею. Я ему всё говорю: здесь он адъютант у дяди, самое блестящее положение. Все его так знают, так ценят. На днях у Апраксиных я слышала, как одна дама спрашивает: «c'est ca le fameux prince Andre?» Ma parole d'honneur! [Это знаменитый князь Андрей? Честное слово!] – Она засмеялась. – Он так везде принят. Он очень легко может быть и флигель адъютантом. Вы знаете, государь очень милостиво говорил с ним. Мы с Анет говорили, это очень легко было бы устроить. Как вы думаете?
Пьер посмотрел на князя Андрея и, заметив, что разговор этот не нравился его другу, ничего не отвечал.
– Когда вы едете? – спросил он.
– Ah! ne me parlez pas de ce depart, ne m'en parlez pas. Je ne veux pas en entendre parler, [Ах, не говорите мне про этот отъезд! Я не хочу про него слышать,] – заговорила княгиня таким капризно игривым тоном, каким она говорила с Ипполитом в гостиной, и который так, очевидно, не шел к семейному кружку, где Пьер был как бы членом. – Сегодня, когда я подумала, что надо прервать все эти дорогие отношения… И потом, ты знаешь, Andre? – Она значительно мигнула мужу. – J'ai peur, j'ai peur! [Мне страшно, мне страшно!] – прошептала она, содрогаясь спиною.
Муж посмотрел на нее с таким видом, как будто он был удивлен, заметив, что кто то еще, кроме его и Пьера, находился в комнате; и он с холодною учтивостью вопросительно обратился к жене:
– Чего ты боишься, Лиза? Я не могу понять, – сказал он.
– Вот как все мужчины эгоисты; все, все эгоисты! Сам из за своих прихотей, Бог знает зачем, бросает меня, запирает в деревню одну.
– С отцом и сестрой, не забудь, – тихо сказал князь Андрей.
– Всё равно одна, без моих друзей… И хочет, чтобы я не боялась.
Тон ее уже был ворчливый, губка поднялась, придавая лицу не радостное, а зверское, беличье выраженье. Она замолчала, как будто находя неприличным говорить при Пьере про свою беременность, тогда как в этом и состояла сущность дела.
– Всё таки я не понял, de quoi vous avez peur, [Чего ты боишься,] – медлительно проговорил князь Андрей, не спуская глаз с жены.
Княгиня покраснела и отчаянно взмахнула руками.
– Non, Andre, je dis que vous avez tellement, tellement change… [Нет, Андрей, я говорю: ты так, так переменился…]
– Твой доктор велит тебе раньше ложиться, – сказал князь Андрей. – Ты бы шла спать.
Княгиня ничего не сказала, и вдруг короткая с усиками губка задрожала; князь Андрей, встав и пожав плечами, прошел по комнате.
Пьер удивленно и наивно смотрел через очки то на него, то на княгиню и зашевелился, как будто он тоже хотел встать, но опять раздумывал.
– Что мне за дело, что тут мсье Пьер, – вдруг сказала маленькая княгиня, и хорошенькое лицо ее вдруг распустилось в слезливую гримасу. – Я тебе давно хотела сказать, Andre: за что ты ко мне так переменился? Что я тебе сделала? Ты едешь в армию, ты меня не жалеешь. За что?
– Lise! – только сказал князь Андрей; но в этом слове были и просьба, и угроза, и, главное, уверение в том, что она сама раскается в своих словах; но она торопливо продолжала:
– Ты обращаешься со мной, как с больною или с ребенком. Я всё вижу. Разве ты такой был полгода назад?
– Lise, я прошу вас перестать, – сказал князь Андрей еще выразительнее.
Пьер, всё более и более приходивший в волнение во время этого разговора, встал и подошел к княгине. Он, казалось, не мог переносить вида слез и сам готов был заплакать.
– Успокойтесь, княгиня. Вам это так кажется, потому что я вас уверяю, я сам испытал… отчего… потому что… Нет, извините, чужой тут лишний… Нет, успокойтесь… Прощайте…
Князь Андрей остановил его за руку.
– Нет, постой, Пьер. Княгиня так добра, что не захочет лишить меня удовольствия провести с тобою вечер.
– Нет, он только о себе думает, – проговорила княгиня, не удерживая сердитых слез.
– Lise, – сказал сухо князь Андрей, поднимая тон на ту степень, которая показывает, что терпение истощено.
Вдруг сердитое беличье выражение красивого личика княгини заменилось привлекательным и возбуждающим сострадание выражением страха; она исподлобья взглянула своими прекрасными глазками на мужа, и на лице ее показалось то робкое и признающееся выражение, какое бывает у собаки, быстро, но слабо помахивающей опущенным хвостом.
– Mon Dieu, mon Dieu! [Боже мой, Боже мой!] – проговорила княгиня и, подобрав одною рукой складку платья, подошла к мужу и поцеловала его в лоб.
– Bonsoir, Lise, [Доброй ночи, Лиза,] – сказал князь Андрей, вставая и учтиво, как у посторонней, целуя руку.


Друзья молчали. Ни тот, ни другой не начинал говорить. Пьер поглядывал на князя Андрея, князь Андрей потирал себе лоб своею маленькою рукой.
– Пойдем ужинать, – сказал он со вздохом, вставая и направляясь к двери.
Они вошли в изящно, заново, богато отделанную столовую. Всё, от салфеток до серебра, фаянса и хрусталя, носило на себе тот особенный отпечаток новизны, который бывает в хозяйстве молодых супругов. В середине ужина князь Андрей облокотился и, как человек, давно имеющий что нибудь на сердце и вдруг решающийся высказаться, с выражением нервного раздражения, в каком Пьер никогда еще не видал своего приятеля, начал говорить:
– Никогда, никогда не женись, мой друг; вот тебе мой совет: не женись до тех пор, пока ты не скажешь себе, что ты сделал всё, что мог, и до тех пор, пока ты не перестанешь любить ту женщину, какую ты выбрал, пока ты не увидишь ее ясно; а то ты ошибешься жестоко и непоправимо. Женись стариком, никуда негодным… А то пропадет всё, что в тебе есть хорошего и высокого. Всё истратится по мелочам. Да, да, да! Не смотри на меня с таким удивлением. Ежели ты ждешь от себя чего нибудь впереди, то на каждом шагу ты будешь чувствовать, что для тебя всё кончено, всё закрыто, кроме гостиной, где ты будешь стоять на одной доске с придворным лакеем и идиотом… Да что!…
Он энергически махнул рукой.
Пьер снял очки, отчего лицо его изменилось, еще более выказывая доброту, и удивленно глядел на друга.