![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Аспектно-ориентированное программирование (АОП) - это прадигма, выделяющая в самостоятельные сущности элементы сквозной функциональности. Викепедия относит сюда, например, логирование, которое требуется реализовать сразу во всём проекте. Посоветуйте литературу. Особенно интересует встраивание аспектно-ориентированной подсистемы логирования в проект, весь остальной текст которого писан в объектно-ориентированной парадигме.
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
Была неплохая вроде бы книжка, не Сафонов, вспомню - напишу.
В общем случае встроить АОП в традиционный язык можно лишь с привлечением инструментальных средств (типа AspectJ). В С++ часть АОП может быть эмулирована шаблонами (неплохой близкий к теме пример - boost::operators), добавляя требуемый код (aka mixins) в конструкторы и прочие методы. |
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) ТарасАтавин - 7.10.2013, 13:14 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
введите в свой язык mixins и будет щастье. впрочем, если язык достаточно развит, что бы выразить на нем какую-то идиому, зачем эту идиому прямо в язык вводить?
а вот сделать хорошо, т.е. удобно программисту, это задача непростая. только тема эта не про С++ |
|||
|
||||
| ТарасАтавин |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Добавлено через 2 минуты и 19 секунд
-------------------- Не так всё плохо, как оно есть на самом деле. |
||||
|
|||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
зачем тогда эти разговоры о новом языке? в третий раз навожу на мысль: mixin как наиболее простое и общее понятие в русле АОП |
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Кажется понял. Примеси позволяют по разу реализовать каждый из операторов: <, <=, ==, >=, > и != сразу для всех классов, а в каждом классе один раз реализовать оператор "как относятся", возвращающий один из трёх результатов: левый меньше правого, операнды равны и левый больше правого? То есть идея в том, что если некоторые методы и операторы можно вывести из других, то выводимые методы и операторы можно реализовать один раз сразу для всех классов, имеющих в своих интерфейсах те методы и операторы, из которых они выводятся? Этого достаточно для поддержки аспектно-ориентированного программирования?
Добавлено @ 17:08 Ну вообще то аспекты - это не всё и не ради них он задуман. В "науке и жизни" когда то публиковались статьи о языке "рапира", где значение пишется слева, а куда надо присвоить справа и авторы умудрялись считать, что так проще. У меня будут одновременно левое и правое присваивание, при этом их будет легко различить и запомнить. А ещё будут отдельные от ввода-вывода операторы сдвига. Можно будет явно указать, требуется ли логический, арифметический, или циклический сдвиг. А кроме того сдвигаемый аргумент может быть с любой стороны. Плюс экзотические циклы в количестве даже не 4-х, а 7-ми видов. А аспектно-ориентированное программирование - это так, желательный довесок ко всему остальному. Плюс комбинированная двоично-троичная логика. Это сообщение отредактировал(а) ТарасАтавин - 7.10.2013, 17:16 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
вы серьезно думаете, что это должно быть на уровне языка? кажется нет. операторы тут вообще не причем (точнее - второстепенное), единственная тут связь с обсуждаемым предметом - контракт, в котором говорится какая функция должна быть в классе, куда примешивается. Вот пример на php, надеюсь понятный http://ideone.com/nYzpa3 |
||||
|
|||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
А Вы в серьёз считаете, что тип ternary logical, в котором (!true)!=(false) следует написать на языке, в который из логических типов встроен только boolean?
Добавлено @ 17:58 А что такое контракт? Это сообщение отредактировал(а) ТарасАтавин - 7.10.2013, 18:00 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
контракт есть договор, соглашение. например использование любых свойств параметра шаблона в C++ есть контракт (если в шаблон подставить нечто, не имеющее этих свойств, не скомпилица)
Добавлено через 1 минуту и 52 секунды а по первому - я и на bool не настаиваю, весчь избыточная (в языке, различающем типы сдвигов |
|||
|
||||
| ТарасАтавин |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Не понятно.
Это сообщение отредактировал(а) ТарасАтавин - 7.10.2013, 19:29 -------------------- Не так всё плохо, как оно есть на самом деле. |
||||||
|
|||||||
| ТарасАтавин |
|
||||||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
А ещё
Добавлено через 5 минут и 12 секунд Не вижу ни смыла описывать такое поведение на каком либо языке, кроме языка реализации транслятора, ни возможности описать его на каком либо языке, кроме языка реализации транслятора. Вообще не вижу ни смыла описывать такое поведение, как часть самой программы, где оно будет наблюдаться, ни возможности описать такое поведение, как часть самой программы, где оно будет наблюдаться. Если же, например, c++ выступает в ипостаси языка реализации транслятора, то вот здесь то как раз не вижу, что может помешать эмулировать троичную логику. -------------------- Не так всё плохо, как оно есть на самом деле. |
||||||||||||||||||||||
|
|||||||||||||||||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
вот, нашел книжку
http://www.ozon.ru/context/detail/id/2896278/ и для общего развития http://www.ozon.ru/context/detail/id/5542451/ |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |