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