SoftCraft
разноликое программирование

Top.Mail.Ru

Особенности языка процедурно-параметрического программирования


[Возврат на основную страницу раздела]


© 2011 г.
Легалов Александр Иванович,
Солоха Арсений Федорович

Статья первоначально опубликована в журнале "Вестник НГУ" и имеет следующие выходные данные:
Легалов А.И., Солоха А.Ф. Особенности языка процедурно-параметрического программирования. / Вестник новосибирского государственного университета. Серия: Информационные технологии. Том 9, № 3. - 2011. - С. 15-22.

Полностью материал доступен в формате pdf (~200 кб)

Преамбула

Эволюционная разработка больших программ связана не только с методами их проектирования. Большую роль при этом играет использование соответствующих языков программирования. Доминирующий в настоящее время объектно-ориентированный (ОО) подход обеспечивает частичную инструментальную поддержку безболезненному расширению кода за счет использования механизмов наследования и виртуализации. Вместе с тем, при сложных взаимодействиях между классами эволюционное расширение программы только за счет ОО программирования становится затруднительным. Приходиться использовать дополнительные алгоритмические приемы и динамическое связывание объектов, что, например, нашло широкое отражение в образцах (паттернах) проектирования [1]. Часто только ОО парадигмы бывает недостаточно для расширения программы, поэтому приходится переходить к мультипарадигменному стилю [2], базирующемуся на сочетании различных подходов. Необходимость использования сочетания парадигм и подходов во многом обуславливается также существованием задач, при решении которых применяется множественный полиморфизм, то есть мультиметоды. И хотя в данной ситуации возможно чистое объектно-ориентированное эволюционное решение, опирающееся на диспетчеризацию [3], более эффективными являются мультипарадигменные варианты [3, 4, 5].

Вместе с тем следует отметить отсутствие в настоящее время языковых средств, обеспечивающих эффективную поддержку мультиметодов, что не позволяет использовать их напрямую. Одной из широко известных реализаций является включение мультиметодов в язык CLOS [6]. Однако предложенные решения обладают невысокой производительностью. Другим подходом, изначально ориентированным на эффективную поддержку мультиметодов, является процедурно-параметрическая (ПП) парадигма программирования [7], обеспечивающая инструментальную поддержку эволюционной разработки программ в рамках процедурного стиля. Для его исследования разработан язык программирования O2M [8]. В последующих работах были представлены результаты, расширяющие возможности парадигмы за счет использования обобщенных записей [9] и подключаемых модулей [10].

Появление новых конструкций привело к ряду новых возможностей, расширяющих процедурное программирование, которые были включены в язык процедурно-параметрического программирования Alien. Как и O2M, новый язык использует синтаксис, аналогичный синтаксису языка программирования Оберон-2 [11]. Однако если О2М разрабатывался как расширение Оберона-2, то Alien является языком, ориентированным на поддержку только процедурного подхода. Это обусловлено тем, что предлагаемые ПП понятия полностью дублируют, а зачастую и перекрывают имеющиеся в Обероне-2 расширяемые типы данных и процедуры, связанные с типом, обеспечивающие объектно-ориентированное программирование. Использование обобщающих процедур в сочетании с обобщенными записями обеспечивает поддержку множественного полиморфизма и включает в себя одиночный полиморфизм, используемый в ОО подходе в качестве частного случая. Кроме того, для исследования возможностей ПП подхода и новых методов модульной организации целесообразным являлось создание языка, ориентированного только на эту парадигму.

Основные разделы

  1. Введение
  2. Обобщенные записи
  3. Базовые операции над обобщенными записями
  4. Использование обобщающих параметрических процедур
  5. Дополнительные возможности обобщенных записей
  6. Подключаемые модули
  7. Заключение

Литература

  1. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. / Пер. с англ. - СПб: Питер, 2001. - 368 с.
  2. Коплиен Дж. Мультипарадигменное проектирование для C++. Библиотека программиста. - СПб.: Питер, 2005. - 235 с.
  3. Легалов, А. И. ООП, мультиметоды и пирамидальная эволюция. / А. И. Легалов // Открытые системы. – 2002. – № 3. – С. 41-45.
  4. Легалов, А. И. Мультиметоды и парадигмы. / А. И. Легалов // Открытые системы. – 2002. – № 5. – С. 33-37.
  5. Мейерс, С. Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов: Пер. с англ. / С. Мейерс – М.: ДМК Пресс, 2000. – 304 с.
  6. DeMichiel Linda G., Gabriel Richard P. The Common Lisp Object System: An Overview. – Электронная версия документа размещена по адресу: http://www.dreamsongs.com/NewFiles/ECOOP.pdf
  7. Легалов А.И. Процедурно-параметрическая парадигма программирования. Возможна ли альтернатива объектно-ориентированному стилю? – Красноярск: 2000. Деп. рук. № 622-В00 Деп. в ВИНИТИ 13.03.2000. - 43 с.
  8. Легалов А.И., Швец Д.А. язык программирования О2М. – Электронная версия документа размещена по адресу: http://www.softcraft.ru/ppp/o2m/o2mref.shtml
  9. Легалов, И. А. Применение обобщенных записей в процедурно-параметрическом языке программирования. / И. А. Легалов // Научный вестник НГТУ. – 2007. – № 3 (28). – С. 25-38.
  10. Легалов А.И., Бовкун А.Я., Легалов И.А. Расширение модульной структуры программы за счет подключаемых модулей. / Доклады АН ВШ РФ, № 1 (14). – 2010. – С. 114-125.
  11. Свердлов С.З. Языки программирования и методы трансляции: Учебное пособие. – СПб.: Питер, 2007. - 638 с.


[Возврат на основную страницу раздела]