powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тема про АОП в cpp
25 сообщений из 38, страница 1 из 2
Тема про АОП в cpp
    #38113997
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, не пойму весь троллоло про АОП. Вот читаю статью про пхп и там цитата:

авторДумаю, каждому программисту знаком принцип единственной ответственности, ведь не зря он существует: соблюдая его, можно написать код лучше, он будет более понятным, его будет легче дорабатывать.

Но чем больше каждый из нас работает с кодом, тем больше приходит понимание того, что на существующем уровне языка — объектно-ориентированном — этого сделать невозможно. А мешает нам в соблюдении принципа единственной ответственности такой факт, как сквозная функциональность.


класть на пхп. книги и статьи по AsprctJ пишут идите как форель под нашу трелль.
Подскажите почему эти люди думают что АОП не влезает не в одну из языковых реализаций ООПа. "Сквозная функциональность" - думаю что легко реализуется через множественное наследование с резвым урезанием типов через rtti, или например через шаблоны метапрограммированием из mpl например, нет, может всё и гораздо прощще реализовать.
просто динамический и статический полиморфизм - хардкор, книги про шаблоны мне кажется уже лет десять как назад об этом писали.

На ваш взгляд АОП в С++ как выглядит?
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38114031
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
#include <iostream>
#include <string>

template<typename OutputPolicy, typename LanguagePolicy>
class HelloWorld: private OutputPolicy, private LanguagePolicy {
	using OutputPolicy::print;
	using LanguagePolicy::message;

public:
// Behaviour method
	void run() const {
// Two policy methods
		print(message());
	}
};

class OutputPolicyWriteToCout {
protected:
	template<typename MessageType>
	void print(MessageType const &message) const {
		std::cout << message << std::endl;
	}
};

class LanguagePolicyEnglish {
protected:
	std::string message() const {
		return "Hello, World!";
	}
};

class LanguagePolicyGerman {
protected:
	std::string message() const {
		return "Hallo Welt!";
	}
};

int main() {
	/* Example 1 */
	typedef HelloWorld<OutputPolicyWriteToCout, LanguagePolicyEnglish> HelloWorldEnglish;

	HelloWorldEnglish hello_world;
	hello_world.run(); // prints "Hello, World!"

	/* Example 2
	 * Does the same, but uses another language policy */
	typedef HelloWorld<OutputPolicyWriteToCout, LanguagePolicyGerman> HelloWorldGerman;

	HelloWorldGerman hello_world2;
	hello_world2.run(); // prints "Hallo Welt!"
}


Модератор: Отредактировано с форматом исходников

первая ссылка гугла , да и смысл описывать ве возможности шаблонов. И понятно что в контейнер фабрики тоже можно через шаблоны накидать указателей буста, .....но щас подумал, и что то засомневался.



без мазы, это всё лишнии движения, хотя ..получается вопрос теперь где писать код, вот)))
т.е. писать полюбому руками, и АОП тоже надо описывать, и вопрос где писать или что)).

я выбрал бы шаблоны, как то они адекватней что-ли)))
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38118906
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AOP = OOP + goto



:)
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38118907
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38118909
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,

latest release dates from 21.12.2005
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38119538
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________, официальный язык форума - русский. Исключение составляют пожалуй
квотирование англоязычной документации в тех случаях когда оно важно.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38120955
спп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше ооп ещё ничего не придумали и не придумают.
Разве что на типа проложной машины вывода - но это уже из другой оперы.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38122496
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё в кучу смешал.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38215762
laphroaig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот одна из реализаций АОП на чистом c++, на шаблонах, без rtti и макроподстановок: http://faslib.com
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38215934
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите почему эти люди думают что АОП не влезает не в одну из языковых реализаций ООПа.

Я не большой специалист, но на сколько я знаю, весь шум про АОП в мире в основном в районе Java и движения Spring.
И в основном проблемы в том, что в мире Java есть великолепная платформа, куча замечательного, полезного кода,
но дерьмовый, плохо развивающийся язык программирования. Поэтому люди пишут под Java-машину новые, более хорошия языки,
с той или иной парадигмой.

"Сквозная функциональность" - думаю что легко реализуется через множественное наследование с резвым урезанием типов через rtti, или например через шаблоны метапрограммированием из mpl например, нет, может всё и гораздо прощще реализовать.

Проблема в том, что в Java нет множественного наследования.

На ваш взгляд АОП в С++ как выглядит?

Как мелкогранулированные хорошо продуманные классы. Возможно, иногда с делегацией.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38215938
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше ооп ещё ничего не придумали и не придумают.

Ну, это спорное заявление.

Разве что на типа проложной машины вывода - но это уже из другой оперы.

Пролог я лично не люблю. Да и не выстрелил он толком, не занял свои ниши.
В силу плохо предсказуемой производительности.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38382319
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ап. Хорошая тема протухла.

Мне кажется АОП никто специально не строил. Это побочный эффект от рефлексии
и интроспекции. И неудивительно что АОП возник именно в Java. Там есть благоприятная
среда для манипуляций с уже созданным кодом (байткодом). Разумеется, повторить
подобное в С++ можно хотя и будет труднее. Тут трудности даже не в самом языке
а в отсутвии рантайма.

Кстати по ссылкам вики http://ru.wikipedia.org/wiki/Аспектно-ориентированное_программирование

можно найти ключевые слова AspectC++ e.t.c.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38397138
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

смотрел эту либу, ч т хз. мне кажется ..я даже уверен, своё написать ..время потребует не до большого. препроцессор, немного спирита... и готово)
конечно компил_тайм, но зато быстро. ран-тайм.. надо подумать.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38397208
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Аоп возник не в java.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38397943
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________...На ваш взгляд АОП в С++ как выглядит?

странно всё это...
си плас плас - язык.
Объектно Ориентированный подход - технология.
АОП - заявляется как технология ээээээээ вроде как (не буду коменнтировать, а то будет очень грубо)..

более того. ОО идёт перед выбором языка. эээээ как бы это бОльше чем просто язык. Т.е. ОО это не есть _только_ классы, шаблоны, виртуализация и т.п. вещи. Это есть _методология_ перехода от замысла (читай бизнес идеи, мысли, задачи) к коду. Вот именно это оно решает. а на чём ваять - дело вторичное, если не десятичное...

удачи вам
(круглый)
ЗЫ
не удержался :)
кмк АОП - идёт от не понимания ОО методологии. Либо попытка своего пиара и нахождения своей финансовой ниши (читай сбыта).
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38398354
TimeCoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv "Сквозная функциональность" - думаю что легко реализуется через множественное наследование с резвым урезанием типов через rtti, или например через шаблоны метапрограммированием из mpl например, нет, может всё и гораздо прощще реализовать.

Я вот что-то сообразить не могу, почему сквозную функциональность нельзя реализовать через синглетон? Ну например, логирование, просто вызываем где надо Logger::instance().warning("а-та-та");
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38398760
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimeCoder,

А как Вы вызываете где надо??? :)
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38398842
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0,

Да хоть процерудно пишите. Хрен редьки не слащще.
Вы в курсе, как например в Яве работает АспектДж?? Имею в виду чисто технически. Топик вобщем-то как раз об этом, что в Ява есть предпосылки накрутить побольше сахара использую нутря виртуальной машины.

И совсем просто описывать вещи типа:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import ...
public aspect TraceAspect {
        private Logger logger = Logger.getLogger(TraceAspect.class);
        
        pointcut inDomainType()
                                         : within(ajia.domain..*);
        pointcut inControllerType()
                                         : within(ajia.web..*);
        pointcut inRepositoryType()
                                         : within(ajia.repository..*);
        pointcut inTracedType()
                                         : inDomainType() || inControllerType() || inRepositoryType();
        pointcut traced()
                                         : (execution(* *(..)) || execution(new(..))) && inTracedType();
                                       
        ... advice to traced() ...
}




т.е. топик как в С++ сделать.. возможно танцы с бубном РТТИ+меташаблоны, но это хардкод, кто использовал АОП в С++, поделитесь историей успеха, плиз))


кто пишет что ООП наше всё, а АОП от лукавого, ...расскажите нам, если Вы так хорошо прорубаете в АОП, что считаете его лишним.. расскажите нам, как задачи решаемые через АОП ..могут быть решены без него, и главное, в чем профит неиспользования АОП??
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38398862
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,

На мой взгляд АОП - хак. ООП норм, но жизнь слишком коротка что бы писать на С++ (шутка)
АОП удобен:

Код: java
1.
Dynamic crosscutting in AspectJ modifies the behavior of the modules and consists of both pointcut and advice constructs. The advice constructs provide a way to express actions at before, after, or around the desired join points. With context-collecting pointcuts, advice can support static typing that is natural to a Java programmer. The reflection support in AspectJ provides access to the join point’s static and dynamic information through a small number of interfaces. You can use this context to tailor the advice based on the actual values (method parameters or return value) being used at runtime. Alternatively, you can use this information in tracing aspects to gain more insight into the system’s inner workings. The dynamic and static information together can produce an enriched log output with a simple tracing aspect. Although dynamic crosscutting forms a major part of support for crosscutting functionality, elegant solutions need to modify the static structure of the system.




И полноценная реализация возможна за счет доп.уровней абстракции и на них, какой-нить ДСЛ и накручивать логику на интерпретаторы, но вот что бы так близко как в Ява - нет.

Или я ошибаюсь?
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38399313
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,

Например, при помощи шаблона проектирования Декоратор можно попытаться реализовать функционал before и after .
kT_________но вот что бы так близко как в Ява - нет. +100500 100500
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38399469
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimeCoderMasterZiv "Сквозная функциональность" - думаю что легко реализуется через множественное наследование с резвым урезанием типов через rtti, или например через шаблоны метапрограммированием из mpl например, нет, может всё и гораздо прощще реализовать.

Я вот что-то сообразить не могу, почему сквозную функциональность нельзя реализовать через синглетон? Ну например, логирование, просто вызываем где надо Logger::instance().warning("а-та-та");

Там проблема не в том, чтобы сделать, а в том, чтобы, например, лолирование какой-то функции добавлялось без изменения кода этой самой функции и её вызывающих .

Проблема инжекции кода главное.

В некоторых языках это просто, в java пишут специальные компиляторы, а в С++ вот -- никак, тоже компилятор надо писать специальный, наверное. С++ и так суперсложный, а ещё и это ... Не думаю, что оно того стоит.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38400224
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________На ваш взгляд АОП в С++ как выглядит?

АОП в С++ выглядит так же, как и во всех других языках: есть основной код, не замусоренный второстепенными действиями, и есть дополнительный код, выполняющий что-то второстепенное (например, логирование), который внедряется в основной через аспекты.

А вот реализуется АОП в С++, да и в любом другом языке, чисто по своему. В С++ можно только на этапе компиляции внедрять второстепенный код в основной, и затем компилировать полученное компилятором.

А в таких языках, как C#/Java можно применять и этот способ (внедрение одних исходников в другие до компиляции), и изменение байт-кода (IL-кода) после компиляции, ведь в нём сохранена метаинформация, значит можно получить доступ к любому нужному куску, и третий способ: перехват вызовов методов/свойств в рантайме (опять же благодаря наличию метаинформации).
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38400289
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivа в С++ вот -- никак, тоже компилятор надо писать специальный, наверное.

Всё уже написано. У MSVC есть /Gh, у GCC - -finstrument-functions.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38400442
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________...ООП наше всё, а АОП от лукавого, ...АОП, что считаете его лишним..как задачи решаемые через АОП ..могут быть решены без него, и главное, в чем профит неиспользования АОП??

Вы как то бурно среагировали. Подозреваю, что Вы видите только этот идол идеал. предлагаю немного по другому:

вот чисто из опыта...
Объектно Ориентированный подход - это собственно методология перехода от замысла к реализации. Т.е. замысла в бизнесе(а не программиста). Посмотрите внимательно на любой бизнес(читай задачу) в жизни. _ВЕЗДЕ_ идёт речь о неких сущностях и их взаимодействиях. Ну например - кошка пъёт молоко, надо понять как быстро ей доливать если - магазин в соседней деревне, с учётом пробок. Самолёт летает на перехват с частотой раз в год, какой ресурс его турбины при условии брака в изготовлении его лопаток. Завод изготавливает теплообменники - когда будет брак, если загрузка его линии 100 теплообменников в сутки, а дорн сделан из стали марки... и т.п...

вот теперь присмотритесь. к ЛЮБОЙ задаче. вот ОО говорит следующее - выявить сущности. т.е. берём кошку(про неё же речь идёт в бизнесе!!!) = замечательная сущность. имеет глаголы, ходить, пить... и покатило... заметьте такую вещь - с точки зрения бизнеса кошка НИКОГДА НЕ ПРЕВРАТИТЬСЯ в МАМОНТА!!! ну никогда!!! или это уже ДРУГОЙ бизнес!!! понимаете о чём речь или нет? Т.е. написанный в дальнейшем код СТАТИЧЕН!!! т.е. это ОДИН ИЗ плюсов этого подхода. скажем так - то что на поверхности... Ышо один плюс - Вы общаетесь на языке заказчика. Т.е. если он говорит завтра - ой, блин я забыл что кошка может быть серой, белой или чёрной. скажите - Вам много труда будет дополнить Вашу программерскую сущность "кошка" свойством цвет кошки? я так думаю апсолютно легко... через год заказчик вам говорит - тут вот у нас кошка заболела, мы ей пришили пятую ногу. и надо учесть давление всех лап кошки на поверхность, с учётом новой пятой... легко вам будет модифицировать ваш код в рамках ОО? Ответ очевиден...

это я вот понимаю...

а вот теперь расскажите мне доходчиво всё то же самое про
АОП = Аспе́ктно-ориенти́рованное программи́рование

(заметьте ПРОГРАММИРОВАНИЕ!!! даже НЕ технология!!! сразу на опережение ООП - расшифровывается как Проектирование!!!).

я серьёзно, и с удовольствием хочу услышать ваше мнение, об АОП если это на таком-же уровне как и ОО методология! на полном серъёзе!!! Для себя уже давно хочу найти альтернативу ОО. пока (лично для меня) это передовое (как технология перехода от задумки к исполнению)...


слушаю Вас
(круглый)
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38410575
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Современные методологии разработки уже давно ушли вперёд от ООП.
Это не значит что ООП мёртв. Просто runtime стал настолько сложен
что просто применяя ООП трудно объяснить все явления и процессы
которые в нём происходят. Скорее нужно брать ООП+нечто.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тема про АОП в cpp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]