Re[11]: Слава COM!!!
От: Cyberax Марс  
Дата: 03.02.10 12:43
Оценка: 4 (3) +1
Здравствуйте, Ikemefula, Вы писали:

C>>Есть стандартизованный D-BUS. Прямой аналог COM, в общем.+++

I>Ога, а ты COM то видел ? Сравни и не пори чушь
Мальчик, я COM не только видел, но и ещё с нуля писал OLE-контейнер.

COM:
hr = CoCreateInstance (pClsid,NULL,CLSCTX_LOCAL_SERVER,
         IID_IDispatch,
         (void FAR* FAR*)lpDispatch );

if (hr != S_OK)
 return (-1);

hr=lpDispatch->GetIDsOfNames(IID_NULL,&szStart, 1,LOCALE_SYSTEM_DEFAULT,&dispid);

if (hr != S_OK)
 return (-1);

    dispparams.rgvarg = &myargs[0];
    dispparams.rgvarg[0].vt = VT_I4;
    dispparams.rgvarg[0].iVal = 12345;
    dispparams.rgvarg[1].vt = VT_I4;
    dispparams.rgvarg[1].iVal = 67890;
    dispparams.cArgs = 2;
    dispparams.cNamedArgs = 0;

hr = lpDispatch->Invoke (dispid,IID_NULL,LOCALE_USER_DEFAULT,
DISPATCH_METHOD,&dispparams,NULL,NULL,NULL);


D-BUS
org::foo::bar::network *interface = 
    new org::foo::bar::network("org.foo.bar", "/network",
                            QDBusConnection::sessionBus(),
                            this);
interface->ping("kde.org");

или с более сложным примером: http://wiki.apertium.org/wiki/Compiling_a_C%2B%2B_D-Bus_program
//Имена, а не GUID'ы!
    static const char* TRANSLATE_SERVICE_NAME = "org.apertium.mode";
    static const char* TRANSLATE_OBJECT_PATH = "/";

    std::string mode;
    std::map< ::DBus::String, ::DBus::String> translate_options;
///....

    //Никаких CoCreateInstance - простые конструкторы!
    Translate translator(bus, TRANSLATE_OBJECT_PATH, TRANSLATE_SERVICE_NAME);
    //Да-да, мы передаём не жуткие SAFEARRAY и VARIANT, а самый обычный std::map
    std::cout << translator.translate(mode, translate_options, input.str())
              << std::endl;


I>D-Bus это докомовский период

Посткомовский. Там исправлены кретинизмы COMа.
Sapienti sat!
Re[8]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 12:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

I>>Парсить С++ код та еще задача. до сих пор нет нормального средства рефакторинга, которое было бы таким же доступным как и то что есть в решарпере.

CC>Assist вполне покрывает 100% моих задач. Что еще такого нужно для С++?

Я не сильно слежу за ассистом. он умеет ли он (2005я)



Без малого, я пользуюсь всем этим постоянно

Помнится, один наш общий знакомый вещал что "не пользуемся рефакторингом потому что архитектура идеальная "
Re[11]: Слава COM!!!
От: Cyberax Марс  
Дата: 03.02.10 12:46
Оценка:
Здравствуйте, Erop, Вы писали:

C>>Стандарт де-факто — это gcc. Он достаточно backward compatible и его эмулирует icc.

C>>Более того, он даже кодифицирован: http://www.codesourcery.com/public/cxx-abi/abi.html#mangling
E>Так я про то же! Проблема с манглином -- надуманная!
Тем не менее, он менялся несколько раз. Скажем, gcc 2.95 и gcc 3.3 — несовместимы. А ещё на него влияют разные настройки (скажем, использование исключений).

Причём далеко не только на gcc. Про то как разные настройки выравнивания или "Treat wchar_t as built-in type" на MSVC ломают бинарную совместимость напомнить?

Поэтому на С++ особо и нет бинарных интерфейсов.
Sapienti sat!
Re[10]: С vs C++
От: NikeByNike Россия  
Дата: 03.02.10 12:53
Оценка:
Здравствуйте, _d_m_, Вы писали:

NBN>>Например? Практики буквально на днях выясняли, что С++ таки самый лучший


___>Пруфлинк. Или нотариально заверенные скриншоты.


___>Примеров масса: С#, Nemerle, Lisp и многое. Если заведут старую пластинку про какой-нибудь драйвер, то уж лучше С.


Нравятся мне религиознутые теоретики Ну попробуй с помощью шарпа напиши что-нибудь кроссплатформенное и не сферическое
Во, например, из последнего:
http://www.rsdn.ru/forum/pda/3671612.flat.aspx
Автор: sh1ng
Дата: 18.01.10
Нужно разобрать угил.
Re[7]: С vs C++
От: Eugeny__ Украина  
Дата: 03.02.10 13:04
Оценка:
Здравствуйте, Ikemefula, Вы писали:


I>современный язык должен как можно сильнее облегчать задачу рефакторнга, анализа кода, генерации и тд.


I>В C# например пошли именно этим путем — облегчили работу людям которые пишут средства разработки.


Нуу, они пошли проторенной дорожкой за жабой в этом смысле, если быть точным .
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[9]: Слава COM!!!
От: Vamp Россия  
Дата: 03.02.10 13:11
Оценка:
E>Если ты не понял, то при чём тут несбыточное?
Объяснись тогда.

E>Да и пусть себе не входит. Вот если в Линуксе появится С++ API, в котором будет заданы правила декорирования, то все компиляторы под линукс легко смогут приделать опцию "придерживаться этих правил"...

В Линуксе "вдруг" ничего появиться не может. Линукс — это только ядро, а ядро правила декорирования не устанавливает.

V>>Во-во. Как бы ты взаимодействовал с этим кодом из С? Который декорировать не умеет никак?

E>Через переходники.
И прощай легаси драйверы и программы. Нафиг такое счастье.

E>Ну вот COM под виндой -- это пример того, как взяли в системе, да и стандаритизировали, фактически, то, как таблица виртуальных функций должна выглядеть. И ничего, всё у них получилось. Все компиллеры С++ под винду это дело поддержали...

КОМ в винде реализован на С. И его интерфейс — сишный. С++ тут вообще не при чем, точно такой же КОМ можно реализовать и в Линуксе.
Да здравствует мыло душистое и веревка пушистая.
Re[9]: Слава COM!!!
От: Vamp Россия  
Дата: 03.02.10 13:13
Оценка:
F>А я как раз, было дело, руками лепил COM-интерфейс на C++.
F>И представлял он из себя ничто иное как C++ класс, у которого все методы — виртуальные.

Ты не понял, что ты сделал. КОМ — это сишный интерфейс, и реализован он на С.
Да здравствует мыло душистое и веревка пушистая.
Re[9]: С vs C++
От: CreatorCray  
Дата: 03.02.10 13:14
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Парсить С++ код та еще задача. до сих пор нет нормального средства рефакторинга, которое было бы таким же доступным как и то что есть в решарпере.

CC>>Assist вполне покрывает 100% моих задач. Что еще такого нужно для С++?

I>Я не сильно слежу за ассистом. он умеет ли он (2005я)

Не могу представить когда в C++ может понадобиться аналог пункта "Convert"

I>Помнится, один наш общий знакомый вещал что "не пользуемся рефакторингом потому что архитектура идеальная "

Я пользуюсь refactor rename, create implementation, create declaration, extract method
Вроде как всё.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[13]: С vs C++
От: CreatorCray  
Дата: 03.02.10 13:14
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Если хочешь что бы аналогия была полной, надо взять и создать в С++ сообществе инструмент с функциями МВД

Дык есть! Нагадил мимо буфера — бдыщ! Всё в продукте вторичном.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[12]: Слава COM!!!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 13:48
Оценка: -1 :)
Здравствуйте, Cyberax, Вы писали:

I>>Ога, а ты COM то видел ? Сравни и не пори чушь

C>Мальчик, я COM не только видел, но и ещё с нуля писал OLE-контейнер.

А по коду тобою показаному это не заметно. Это даже не смешно — самописный OLE-контейнер.
Чего ты хочешь показать на примере изобретения велосипеда ?

Ты сравнил бегемота с табуреткой. В своем примере на D-bus ты показал, что есть биндинги.
А слабо было показать биндинги для COM или твой огромный опыт написания велосипеда не включает это ?

Показать D-bus-аналог того кода, что ты привел для COM, вероятно помешала скромность
Ну да ладно, я давно в курсе что ты очень скромный.

вот тот же пример, что я показал ранее, с биндингами для ком

IServerPtr ptr;

ptr.CreateInstance(clsid);

_bstr_t bstr = ptr->GetStuff(s);


— при том появилоь это более 12 лет назад

>>D-Bus это докомовский период

C>Посткомовский. Там исправлены кретинизмы COMа.

Посткомовский он только по дате рождения

ну и для начала надо научиться сравнивать сравниваемое, а не бегемота с табурткой.
т.е. биндинги с биндингами, отсутствие оных с отсутствием
Re[8]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 13:54
Оценка:
Здравствуйте, Eugeny__, Вы писали:

I>>современный язык должен как можно сильнее облегчать задачу рефакторнга, анализа кода, генерации и тд.


I>>В C# например пошли именно этим путем — облегчили работу людям которые пишут средства разработки.


E__>Нуу, они пошли проторенной дорожкой за жабой в этом смысле, если быть точным .


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

кроме того, в .net много средтв которые теснят именно нативный C++ а не джаву.
Re[10]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 13:58
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

I>>>>Парсить С++ код та еще задача. до сих пор нет нормального средства рефакторинга, которое было бы таким же доступным как и то что есть в решарпере.

CC>>>Assist вполне покрывает 100% моих задач. Что еще такого нужно для С++?

I>>Я не сильно слежу за ассистом. он умеет ли он (2005я)

CC>Не могу представить когда в C++ может понадобиться аналог пункта "Convert"

Ну так в с++ нет такого понятия как интерфейсы, проперти, индексеры, эвенты и тд.
Есть сущности аналогчные перечисленым, но на уровне инструментов они не поддерживаются, этот код ты лопатишь руками.

А что ассист то поддерживает из приведеного списка ?

I>>Помнится, один наш общий знакомый вещал что "не пользуемся рефакторингом потому что архитектура идеальная "

CC>Я пользуюсь refactor rename, create implementation, create declaration, extract method
CC>Вроде как всё.

этого мягко говоря мало.
Re[14]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 13:59
Оценка:
Здравствуйте, CreatorCray, Вы писали:

I>>Если хочешь что бы аналогия была полной, надо взять и создать в С++ сообществе инструмент с функциями МВД

CC>Дык есть! Нагадил мимо буфера — бдыщ! Всё в продукте вторичном.

Нету. Для полной аналогии говнокодер уличенный кем либо в сообществе С++ников должен понести административную или уголовную ответственность.
Re[13]: Слава COM!!!
От: Cyberax Марс  
Дата: 03.02.10 14:01
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>>>Ога, а ты COM то видел ? Сравни и не пори чушь

C>>Мальчик, я COM не только видел, но и ещё с нуля писал OLE-контейнер.
I>А по коду тобою показаному это не заметно. Это даже не смешно — самописный OLE-контейнер.
I>Чего ты хочешь показать на примере изобретения велосипеда ?
Нет, так как существующие контейнеры были недостаточны.

I>Ты сравнил бегемота с табуреткой. В своем примере на D-bus ты показал, что есть биндинги.

I>А слабо было показать биндинги для COM или твой огромный опыт написания велосипеда не включает это ?
Я лично всегда использую Comet:
    comet::bstr_t appID("SD");
    comet::bstr_t appName("StaffDirector Application");
    comet::bstr_t ticket;

    comet::QBXMLRPLib::IRequestProcessor2Ptr rqPtr(comet::QBXMLRPLib::RequestProcessor::create());
    rqPtr ->OpenConnection(appID, appName);
    // begin session
    ticket = rqPtr ->BeginSession(argv[1], comet::QBXMLRPLib::qbFileOpenDoNotCare);


I>Показать D-bus-аналог того кода, что ты привел для COM, вероятно помешала скромность

I>Ну да ладно, я давно в курсе что ты очень скромный.
То есть? Что именно нужно показать?

I>

I>IServerPtr ptr;
I>ptr.CreateInstance(clsid);
I>_bstr_t bstr = ptr->GetStuff(s);

I>- при том появилоь это более 12 лет назад
А теперь попробуй передать в метод карту. Как будешь её представлять? В виде двумерного SAFEARRAY (для которого в ATL нет нормальных байндингов)? А что будем делать с асинхронными вызовами (AKA посылка сообщений)? Напомнить какой это геморрой в COM?

А как насчёт out-of-proc серверов, напомнить кретинизм с их активацией, маршаллингом, ROT и прочими радостями?

>>>D-Bus это докомовский период

C>>Посткомовский. Там исправлены кретинизмы COMа.
I>Посткомовский он только по дате рождения
Нет, ещё и по удобсвту использования. Но тебе не понять, у тебя мозг вынул и выбросил сертефицированный представитель Microsoft.

В общем, твой тезис о том, что в Линуксе нет COM — банально неверен.
Sapienti sat!
Re[14]: Слава COM!!!
От: Vamp Россия  
Дата: 03.02.10 14:03
Оценка: :)
Вопрос имею.
А разве D-BUS — это не просто шина сообщений?
Да здравствует мыло душистое и веревка пушистая.
Re[15]: Слава COM!!!
От: Cyberax Марс  
Дата: 03.02.10 14:06
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Вопрос имею.

V>А разве D-BUS — это не просто шина сообщений?
Ну так и COM — это просто формат на таблицу методов
Sapienti sat!
Re[7]: С vs C++
От: _wqwa США  
Дата: 03.02.10 14:07
Оценка: +1
Здравствуйте, denisko, Вы писали:


I>>Objective-C тоже совместим с С, но при этом он настоящий ЯВУ.


D>Вы еще дрочите на мак? Тогда мы идем к Вам. Ты на нем хоть что нибудь писал, интересно?

Ну я писал, и тоже так считаю. Какие Ваши аргументы?
Кто здесь?!
Re[11]: С vs C++
От: CreatorCray  
Дата: 03.02.10 14:10
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Я не сильно слежу за ассистом. он умеет ли он (2005я)

CC>>Не могу представить когда в C++ может понадобиться аналог пункта "Convert"

I>Ну так в с++ нет такого понятия как интерфейсы, проперти, индексеры, эвенты и тд.

I>Есть сущности аналогчные перечисленым, но на уровне инструментов они не поддерживаются, этот код ты лопатишь руками.
Лопатишь это как то громко сказано. В языке всей этой ботвы нет. Этот функционал обеспечивается библиотеками.

I>этого мягко говоря мало.

Для шарпа мало. Для С++ — достаточно.
Там в ассисте еще много всякой бороды есть, типа encapsulate field, change visibility, change signature (во, еще этой иногда пользуюсь), create from usage и т.п.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[16]: Слава COM!!!
От: Vamp Россия  
Дата: 03.02.10 14:12
Оценка: -1 :)
C>Ну так и COM — это просто формат на таблицу методов
Ну все таки, технологии существенно разные. КОМ — это реализация объектно-ориентированной модели средствами С (что бы там не говорил Егор выше, которому с какого-то перепоя показалось, что КОМ — это С++).
Вызов по COM — это реальный вызов метода, in-proc или out-proc. В результате имеет счетчик ссылок и прочее.

Вызов по D-BUS — это передача сообщения по миддлеваре. В теории, ничего не измениться, если вместо D-BUS мы поставим тибку, например.
Я прав?
Да здравствует мыло душистое и веревка пушистая.
Re[11]: Слава COM!!!
От: elmal  
Дата: 03.02.10 14:21
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>D-Bus это докомовский период

А тебе не кажется, что независимо от простейшего Hello DBUS и Hello COM, все эти вызовы прекрасно оборачиваются в одном методе, интерфейс которого можно подобрать так, что с ним будет достаточно удобно работать. И что вызо функции через COM, что через DBUS — в реальном коде все будет занимать одну простую строчку. Вернее скорее всего 2, одна — получение интерфейса, и вторая — вызов метода этого интерфейса. Или же планируется, что всем эти будут пользоваться индусы, которым платят за количество строчек кода?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.