Труды института системного программирования РАН
RUS  ENG    ЖУРНАЛЫ   ПЕРСОНАЛИИ   ОРГАНИЗАЦИИ   КОНФЕРЕНЦИИ   СЕМИНАРЫ   ВИДЕОТЕКА   ПАКЕТ AMSBIB  
Общая информация
Последний выпуск
Архив

Поиск публикаций
Поиск ссылок

RSS
Последний выпуск
Текущие выпуски
Архивные выпуски
Что такое RSS



Труды ИСП РАН:
Год:
Том:
Выпуск:
Страница:
Найти






Персональный вход:
Логин:
Пароль:
Запомнить пароль
Войти
Забыли пароль?
Регистрация


Труды института системного программирования РАН, 2015, том 27, выпуск 3, страницы 29–46
DOI: https://doi.org/10.15514/ISPRAS-2015-27(3)-2
(Mi tisp134)
 

Эта публикация цитируется в 1 научной статье (всего в 1 статье)

Pitfalls of C# generics and their solution using concepts
[Проблемы обобщений C# и способы их решения с помощью концептов]

Julia Belyakova, Stanislav Mikhalkovich

Institute for Mathematics, Mechanics and Computer Science, Southern Federal University
Список литературы:
Аннотация: Как было показано в предыдущих исследованиях, по сравнению с классами типов Haskell и концептами C++ такие промышленные объектно-ориентированные языки как C# и Java предоставляют намного менее выразительные механизмы обобщённого программирования на основе F-ограниченного полиморфизма. В этой статье подробно рассматриваются основные подводные камни обобщений C#. Особое внимание уделяется недостаткам рекурсивных ограничений (F-ограничений), неоднозначной семантике интерфейсов, отсутствию языковой поддержки для ограничений на несколько типов и ретроактивной реализации интерфейсов, а также проблемам паттерна проектирования «Концепт», который широкой применяется не только в C#, но также и в языках Java и Scala. Для решения проблем обобщений C# предлагается расширить язык концептами: концепты, как новая языковая конструкция, должны использоваться исключительно в роли ограничений на типовые параметры обобщённого кода, в то время как интерфейсы используются в роли типов. В отличие от базовых концептов C++, концепты C# могут содержать ограничения подтипирования и надтипирования, допускают синонимы концепт-требований и возможность автоматической генерации моделей. Основным отличием предлагаемого дизайна является поддержка множественных моделей. Эта последняя возможность не поддерживается ни в концептах C++, ни в классах типов Haskell. В заключение очерчены основные принципы реализации концептов путём трансляции кода в базовый C#. Наиболее важной чертой этой трансляции является возможность восстановить исходный код на расширенном языке из скомпилированного модуля.
Ключевые слова: generic programming; (C++) concepts; generics; C# language; concept pattern; recursive constraints; generic interfaces.
Реферативные базы данных:
Тип публикации: Статья
Язык публикации: английский
Образец цитирования: Julia Belyakova, Stanislav Mikhalkovich, “Pitfalls of C# generics and their solution using concepts”, Труды ИСП РАН, 27:3 (2015), 29–46
Цитирование в формате AMSBIB
\RBibitem{BelMik15}
\by Julia Belyakova, Stanislav Mikhalkovich
\paper Pitfalls of C\# generics and their solution using concepts
\jour Труды ИСП РАН
\yr 2015
\vol 27
\issue 3
\pages 29--46
\mathnet{http://mi.mathnet.ru/tisp134}
\crossref{https://doi.org/10.15514/ISPRAS-2015-27(3)-2}
\elib{https://elibrary.ru/item.asp?id=23832928}
Образцы ссылок на эту страницу:
  • https://www.mathnet.ru/rus/tisp134
  • https://www.mathnet.ru/rus/tisp/v27/i3/p29
  • Эта публикация цитируется в следующих 1 статьяx:
    Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Труды института системного программирования РАН
     
      Обратная связь:
     Пользовательское соглашение  Регистрация посетителей портала  Логотипы © Математический институт им. В. А. Стеклова РАН, 2025