powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тема про АОП в cpp
13 сообщений из 38, страница 2 из 2
Тема про АОП в cpp
    #38412044
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСовременные методологии разработки уже давно ушли вперёд от ООП...runtime стал настолько сложен
...применяя ООП трудно объяснить все явления и процессы которые в нём происходят...

Вы вдумайтесь в то что говорите. :)
Объектно Ориентированный подход идёт от задачи(читай жизни). Т.е. перефразируя Вас получаем:

"современные методологии разработки уже давно ушли вперёд от задач...рантайм стал настолько сложен,... что применяя подход от задачи трудно объяснить все явления и процессы которые в нём происходят"

поздравляю, это пёрл!!!
и попутно встаёт вопрос - может ну его нахрен так программировать, в отрыве от жизни то??? :)

(круглый)
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38412053
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встаёт другой вопрос. Обязательно - ли на любое программирование натягивать ООП ?
Я имею в виду Сишное ООП.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38412074
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...Обязательно - ли на любое программирование натягивать ООП ...Сишное ООП.

имхо - нет конечно же. первое что говорит нам ОО - идти от задачи. Т.е. все мы грамотные люди понимаем, что есть искуственные рамки, либо искуственные образования, где ОО мягко говоря будет поперёк. Например тот же БизТок от мелкомягких если взять. Или скажем я бы ставил под вопрос целесообразность ОО в пых-пыхе, гда на генерацию хэтэмээля не будет благотворно влиять глубокая вложенность объектов (но есть и другие аспекты - организация проекта в целом, распараллеливание разработки и т.п.). Т.е. надо считать плюсы и минусы целесообразности применения в конкретных случаях.

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

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

А численные расчеты при моделировании физических явлений тоже слабо относятся к жизни?

kolobok0Объектно Ориентированный подход идёт от задачи(читай жизни)

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

Пошаговое описание даётся в книге AspectC++ Programming Guide, которая, к сожалению ещё не написана (с)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
"int C::%(…)"
Сопоставимо любому методу класса C, который возвращает значение типа int
"%List"
Сопоставимо любой структуре, классу, объединению или перечислению, чьё имя 
заканчивается на "List"
"% printf ( const char*, ... )"
Сопоставимо функции printf (в глобальной области видимости), первый параметр 
которой имеет тип const char* и возвращающей значение любого типа
"const %& …::%(…)"
Сопоставимо всем функциям, которые возвращают ссылку на константный объект



Вполне достойное начало, через несколько минут % перестает резать глаза. match expressions выбирают сущности с учётом их области видимости, типа и имени.


Код: plaintext
1.
2.
3.
4.
5.
"%List" && !derived ("Queue" ) 
Описывает набор классов с именами, заканчивающимися на “List”, и не наследуемых от 
класса Queue
call ( "void draw ( )" ) && within ( "Shape" )
Описывает набор вызовов функции draw, находящихся внутри методов класса Shape



Дальше идут возможности обьявлять чисто виртуальные поинткуты, переопределяемые в произвольных аспектах.

Прошу прощения за сумбур, но порядок аналогичен документации.
Адвайсы - ничего собенного.

Код: plaintext
1.
2.
3.
4.
5.
pointcut new_user (const char* name) =
 execution ("void login (…)") && args (name);
 advice new_user (name) : before (const char* name) {
 cout << "User " << name << " is logging in." << endl;
 }


И полность..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
aspect Counter {
 static int m_count;
 Counting () : m_count (0) {}
 pointcut counted () = "Circle" || "Polygon";
 advice counted () : class Helper {
 Helper () { Counter::m_count++; }
 } m_counter;
 advice execution ("% main (…)") : after () {
 cout << "Final count: " << m_count << " objects" << endl;
 }
 };



если, не обращать на характерные для С++ символы пространства имен и потоков, то не отличаются от АспектДж.

Если Вы добрались до этого момента, значит Вы в теме, каментов становится меньше, кода больше.

Код: plaintext
1.
2.
3.
4.
5.
6.
aspect Counter {
 static int m_count;
 Counter () : m_count (0) { }
 pointcut virtual counted () = 0;
 …
 };


Код: plaintext
1.
2.
aspect MyCounter : public Counter {
 pointcut counted () = derived ("Shape");



Вспомогательная функция printvalue отвечает за форматированный вывод
аргументов, передаваемых в вызове функции.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
aspect Trace {
 pointcut virtual methods () = 0;
 
 advice execution (methods () ) : around {
 cout << "before " << JoinPoint::signature () << "(";
 for (unsigned i = 0; i < JoinPoint::args (); i++)
 printvalue (tjp->arg (i), JoinPoint::argtype (i));
 cout << ")" << endl;
 tjp->proceed ();
 cout << "after" << endl;
 }
 };





Чуть чуть о типах:
base (pointcut) N→Nc,f
derived (pointcut) N→Nc,f



Про потоки
Код: plaintext
1.
2.
3.
4.
class Bus {
 void out (unsigned char);
 unsigned char in ();
 };




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
aspect BusIntSync {
 pointcut critical () = execution ("% Bus::%(…)");
 advice critical () && !cflow (execution ("% os::int_handler ()")) :
 around () {
 os::disable_ints ();
 tjp->proceed ();
 os::enable_ints ();
 }
 };



cflow () условие времени выполнения advice. если управление потоком не пришло из дескриптора прерывания os::int_handler ()



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
aspect Logger {
 pointcut calls () = 
 call ("void transmit ()") && within ("Transmitter");
 
 advice calls () : around () {
 cout << "transmitting …" << flush;
 tjp->proceed ();
 cout << "finished." << endl;
 }
 };


Этот аспект вставляет код, регистрации всех вызовов transmit, которые
содержат методы класса Transmitter.




А вот, как думаете, что происходит здесь??
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
aspect Debug {
 pointcut fct () = "% MemPool::dealloc (void*)";
 pointcut exec () = execution (fct ());
 pointcut calls () = call (fct ());
 
 advice exec () && args (ptr) : before (void *ptr) {
 assert (ptr && "argument is NULL");
 }
 advice calls () : before () {
 assert (tjp->target () && "’this’ is NULL");
 }
 };



+конструкторы, деструкторы, шаблоны типов, зис, как по мне ..всё что нужно есть. И более чем интуитивно понятно, если до этого прочитать например: АспектДжи ин акнш.

ac++ препроцессор, код открыт.
После компилить как обычно ;)

Работает как:
Whole ProgramTransformation
Single Translation Unit
Weaving in Library Code

куча ключей для запуска + регекспы, но можно и так: ac++ -c main.cc -p.
Проверил, правда поставилась через:apt-get install aspectc++
Не понял что для маков и соляры, думаю исходники можно собрать всегда.
Модератор: Отредактировано
и ещё
ac++ does not yet support the latest language features introduced with the C++
11 standard. These features, such as lambda functions or move constructors,
will result in syntax errors reported by the parser. The translation process will be
aborted. C++ 11 support is planned to be introduced with version 2.0 of ac++
думаю если Вы дочитали и до этого места, то на англ. Вам будет понятней.

используется в ACE/TAO, COMET и FeatureC++ (Aspectual Mixin Layers (трэш по хожу, кто работал?))





Если кому-то интересно, но непонятно, рекомендую книгу про жабьи_аспекты.. там развернуто.

Если кому-то интересно узнать как долго компилится, как выглядят ошибки... кароче мясо, обязательно напишу.

4th Oct 2013 - AspectC++ Release 1.2
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38419593
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________, Хм... как-то всё у тебя сложно. Не формат форума. Скорее блог или статья.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38419594
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что бы холивар был пожирнее, те кто негативно настроен к АОП могут предложить свои реализации маленьких примеров указанных выше :)
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38419600
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ознакомился с http://faslib.com/ для ровного счета. Без комментариев (=
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38419609
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник




Ага, аннотаций для С++ не предвидеться, но как мне кажется ОРМ на аспект++ можно исполнить. (для ещё более жирного холивара)
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38428286
irokosovskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините за спам. Не видел своё сообщение. Думаю поможет этот код для работы со строкой.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
char * substr(const char *src, int from, int size) 
{
    char * c_TmpStr = new char[size + 1];
    int j = 0;
    for (int i = from; i < from + size; i++)
        c_TmpStr[j++] = src[i];
    c_TmpStr[size] = 0;
    return c_TmpStr;
}
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38460081
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38461026
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,
И зачем ты это up? У тебя остались вопросы? Ну так задай их.
...
Рейтинг: 0 / 0
Тема про АОП в cpp
    #38461029
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю закрыть. Раз никому АОП в не нужен.
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тема про АОП в cpp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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