Re[8]: Слава COM!!!
От: Erop Россия  
Дата: 03.02.10 00:05
Оценка: +1
Здравствуйте, Vamp, Вы писали:

V>При том, что тот тоже мечтал о несбыточном.

Если ты не понял, то при чём тут несбыточное?

V>Декорирование имен не входит в стандарт. Хорошо это или плохо — я не знаю. Наверное, плохо, но по-другому не выходит, потому что стандарт такими вещами не занимается.

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

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

Через переходники.
Вот, например, к акве-какаве в МэкОС Х тоже никак, кроме как через ОбжективС не достучишься. И ничего, живут себе люди...
К .net тоже без управляемых заморок не подлезешь, а ничего, зовут, если надо и из неуправляемого кода...
GDI+, опять же...

E>>Ну COM под виндой, например, знаешь?

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

А ведь декорирование имён -- это намного менее чувствительное место в компиляторе, чем реализация виртуальности...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: Слава COM!!!
От: Cyberax Марс  
Дата: 03.02.10 00:21
Оценка: +1
Здравствуйте, Erop, Вы писали:

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

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

Более того, он даже кодифицирован: http://www.codesourcery.com/public/cxx-abi/abi.html#mangling

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

Есть стандартизованный D-BUS. Прямой аналог COM, в общем.
Sapienti sat!
Re[8]: Слава COM!!!
От: filkov СССР  
Дата: 03.02.10 00:40
Оценка: +1
Здравствуйте, Vamp, Вы писали:

V>КОМ к С++ никакого отношения не имеет. Так же как и к виртуальным функциям.


Странно.
А я как раз, было дело, руками лепил COM-интерфейс на C++.
И представлял он из себя ничто иное как C++ класс, у которого все методы — виртуальные.

Ну, как здесь, примерно, излагается:

It is no coincidence that the Win32 COM object layout matches closely the C++ object layout
The Win32 COM calling convention specifies the layout of the virtual method table (vtable) of an object

Санкционный Смотритель.
Re[10]: Слава COM!!!
От: Erop Россия  
Дата: 03.02.10 07:16
Оценка:
Здравствуйте, Cyberax, Вы писали:

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

C>Более того, он даже кодифицирован: http://www.codesourcery.com/public/cxx-abi/abi.html#mangling

Так я про то же! Проблема с манглином -- надуманная!
C>Есть стандартизованный D-BUS. Прямой аналог COM, в общем.
Угу
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: Слава COM!!!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 07:32
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

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

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

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

COM

BOOL b;
BSTR bstr;

HRESULT hr = pSomePtr->GetStuff(&b,&bstr);

if(SUCCEEDED(hr))
{
 ...
}



D-BUS

gboolean boolret;
  char *strret;
  
  error = NULL;
  if (!dbus_g_proxy_call (proxy, "GetStuff", &error,
              G_TYPE_INVALID,
                          G_TYPE_BOOLEAN, &boolret,
                          G_TYPE_STRING, &strret,
              G_TYPE_INVALID))
    {
      /* Handle error */
    }
  printf ("%s %s", boolret ? "TRUE" : "FALSE", strret);
  g_free (strret);


D-Bus это докомовский период
Re[7]: С vs C++
От: _d_m_  
Дата: 03.02.10 08:12
Оценка: -2
Здравствуйте, bazis1, Вы писали:

B>Здравствуйте, Ikemefula, Вы писали:


I>>Здравствуйте, труженик села, Вы писали:


PD>>>>>Если коротко — С — это высокоуровневый ассемблер. А С++ — это ЯВУ. Со всеми вытекающими.

I>>>>Это как бы ЯВУ, на самом дело недо-ЯВУ.
ТС>>>Совместимость с C делает его недо-ЯВУ.
B>Затрахали уже своими "моё ЯВУ кавайнее твоего". Свой круг прикладных задач решать позволяет?

Позволяет. Но некоторые языки позволяют делать это лучше.

B>Код более читабелен, по сравнению с альтернативами?


Код читабелен? Бу-га-га
На С++ код конечно читабелен. По сравнению с Брейнфаком. Но не более.

B>Производительность не меньше? Какие тогда проблемы юзать язык в тех задачах, где от него есть польза, забив, труъ ли это ЯВУ? Или надо шашечки, а не ехать?


Ехать. Но с комфортом.
Re[5]: С vs C++
От: _d_m_  
Дата: 03.02.10 08:18
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>С++ — это ЯВУ, согласен. Жаль только, что уже давно появились мега-ЯВУ, гипер-ЯВУ, супер-ЯВУ и, конечно же, пупер-ЯВУ. Со всеми вытекающими...


PD>На которых пишут не программисты (как на С++), а всякие супер- и пупер-программисты


Ага, я был программистом, а потом левел ап и я стал супер-программистом
Re[11]: Слава COM!!!
От: Erop Россия  
Дата: 03.02.10 10:16
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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

1) Ты бы уж тогда всё на С писал...

I>COM


I>
I>BOOL b;
I>BSTR bstr;

I>HRESULT hr = pSomePtr->GetStuff(&b,&bstr);

I>if(SUCCEEDED(hr))
I>{
I> ...
I>}
I>



Но вернёмся к нашему С++
Вот этот вот самый COM'овский вызов pSomePtr->GetStuff и эксплуатирует совместимость формата виртуальных таблиц между разными средами разработки
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: Слава COM!!!
От: LuciferSaratov Россия  
Дата: 03.02.10 10:24
Оценка:
Здравствуйте, Erop, Вы писали:

E>Вот, например, к акве-какаве в МэкОС Х тоже никак, кроме как через ОбжективС не достучишься.


Если я правильно помню, все же можно — вроде, там есть некая библиотека, позволяющая C-коду взаимодействовать с Objective-C объектами.
Re[8]: С vs C++
От: NikeByNike Россия  
Дата: 03.02.10 10:50
Оценка:
Здравствуйте, _d_m_, Вы писали:

B>>Затрахали уже своими "моё ЯВУ кавайнее твоего". Свой круг прикладных задач решать позволяет?


___>Позволяет. Но некоторые языки позволяют делать это лучше.


Например? Практики буквально на днях выясняли, что С++ таки самый лучший
Нужно разобрать угил.
Re[9]: С vs C++
От: _d_m_  
Дата: 03.02.10 11:31
Оценка:
Здравствуйте, NikeByNike, Вы писали:

NBN>Здравствуйте, _d_m_, Вы писали:


B>>>Затрахали уже своими "моё ЯВУ кавайнее твоего". Свой круг прикладных задач решать позволяет?


___>>Позволяет. Но некоторые языки позволяют делать это лучше.


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


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

Примеров масса: С#, Nemerle, Lisp и многое. Если заведут старую пластинку про какой-нибудь драйвер, то уж лучше С.
Re[5]: С vs C++
От: March_rabbit  
Дата: 03.02.10 11:32
Оценка: +2
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>>Если коротко — С — это высокоуровневый ассемблер. А С++ — это ЯВУ. Со всеми вытекающими.


KV>>С++ — это ЯВУ, согласен. Жаль только, что уже давно появились мега-ЯВУ, гипер-ЯВУ, супер-ЯВУ и, конечно же, пупер-ЯВУ. Со всеми вытекающими...


I>Какой же он ЯВУ если в нем нет абстрагирования от вопросов связаных например с памятью а многие инструменты просто не работают ?

как-бы некоторый уровень абстрагирования есть. Если не изобретать ядерного реактора, то с распределением памяти не сталкиваешься.
А про инструменты: таки, может, дело в инструментописателях?
Re[9]: С vs C++
От: March_rabbit  
Дата: 03.02.10 11:36
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, dr.Chaos, Вы писали:


I>>>А я как ни загляну в многофплатформенный код , мне сразу дурно становится от препроцессорных директив.


DC>>У нас их крайне мало. Несмотря на то, что сначала это были xlc 5 и VC98.


I>А я не про ваш код говорю, а про тот, который мне довелось видеть.

неплохая причина ругать язык
ты давно иномарки ругал за то, что ими управляют водятлы?
Re[10]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 11:46
Оценка: :)
Здравствуйте, March_rabbit, Вы писали:

DC>>>У нас их крайне мало. Несмотря на то, что сначала это были xlc 5 и VC98.


I>>А я не про ваш код говорю, а про тот, который мне довелось видеть.

M_>неплохая причина ругать язык

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

Это только один из примеров.
Re[6]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 11:52
Оценка:
Здравствуйте, March_rabbit, Вы писали:

I>>Какой же он ЯВУ если в нем нет абстрагирования от вопросов связаных например с памятью а многие инструменты просто не работают ?

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

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

отсюда неудивительно наблюдать винигрет недо-библотек и мега-монстров

M_>А про инструменты: таки, может, дело в инструментописателях?


Один ты умный, да.

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

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

В C# например пошли именно этим путем — облегчили работу людям которые пишут средства разработки.
Re[12]: Слава COM!!!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.02.10 11:55
Оценка:
Здравствуйте, Erop, Вы писали:

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

E>1) Ты бы уж тогда всё на С писал...

Вот тебе COM на C

HRESULT hr = pSomePtr->GetStuff(pSomePtr->lpVtbl,&b,&bstr);


всего то this явно передаешь. Можешь хоть COM сервер на C писать, никаких проблем.

E>Но вернёмся к нашему С++

E>Вот этот вот самый COM'овский вызов pSomePtr->GetStuff и эксплуатирует совместимость формата виртуальных таблиц между разными средами разработки

не между средами, а между компиляторами.
Re[11]: С vs C++
От: CreatorCray  
Дата: 03.02.10 11:57
Оценка: 1 (1) +2 :)
Здравствуйте, Ikemefula, Вы писали:

DC>>>>У нас их крайне мало. Несмотря на то, что сначала это были xlc 5 и VC98.

I>>>А я не про ваш код говорю, а про тот, который мне довелось видеть.
M_>>неплохая причина ругать язык

I>Нормальная, если язык позволяет кидать-ловить исключения как попало, значит их и будут кидать как попало.

I>Это только один из примеров.

Человек тоже может справить нужду в любом месте. Но есть те, кто пользуется уборной, а есть "говнокодеры"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: С vs C++
От: CreatorCray  
Дата: 03.02.10 11:57
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Какой же он ЯВУ если в нем нет абстрагирования от вопросов связаных например с памятью а многие инструменты просто не работают ?

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

I>Для начала надо на раз выучить и использовать RAII. Сам язык дает слишком большой простор.

Ну дык и мощное оружие в руки дают только подготовленным людям.

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

Assist вполне покрывает 100% моих задач. Что еще такого нужно для С++?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: С vs C++
От: March_rabbit  
Дата: 03.02.10 12:00
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Vamp, Вы писали:


V>>Чем тебе STL-то не угодил? Где в нем опасность?

E>Очень легко написать очень неэффективный код. Предполагает очень умного и знающего пограммиста.
E>Собственно я отвечал на сообщение, где наличие STL упоминадось как недостаток С++.
E>Можно разработать менее кудрявый фреймворк, который будет не таким легко расширяемым и универсальным, но, зато, и не будет провоцировать написание неэффективного кода по незнанию...
кухонным ножом можно влегкую порезать палец
паяльником можно.... хм... шрам на руке, оказывается, зажил. Надо же. как сейчас помню ощущения.
недавно на кухне с грохотом упала люстра, сломался пластиковый замок. Повезло, что под ней никого не оказалось....
....

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

CC>Здравствуйте, Ikemefula, Вы писали:


DC>>>>>У нас их крайне мало. Несмотря на то, что сначала это были xlc 5 и VC98.

I>>>>А я не про ваш код говорю, а про тот, который мне довелось видеть.
M_>>>неплохая причина ругать язык

I>>Нормальная, если язык позволяет кидать-ловить исключения как попало, значит их и будут кидать как попало.

I>>Это только один из примеров.

CC>Человек тоже может справить нужду в любом месте. Но есть те, кто пользуется уборной, а есть "говнокодеры"


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

А можно сделать по уму — переложить решение проблемы на компилятор. что и сделано в нормальных языках.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.