Re[30]: Java vs C# vs C++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.10.15 20:08
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

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


EP>>>>>Как раз таки проблема в языках, об этом и речь. Высокоуровневый C++ быстрый отнюдь не только потому что для него оптимизаторы лучше, а во многом потому что в самом языке есть бесплатные, или практически бесплатные абстракции и высокоуровневые инструменты.

S>>>> В C# еще больше. Посмотри на тот же Code First и Linq. Я без слез не могу смотреть на код С++ которые через COM вызывают 1С работая с Idispatch.

PM>>>Не в первый раз наблюдаю, что при сравнении С++ с другими, более поздними языками, люди активно не использующие С++ приводят примеры кода 10-15 летней давности (MFC, COM). Причем уже в то время в Visual C++ была средства для нормальной работы с COM (ATL, #import, позже _com_ptr_t) которые позволяли писать код без многоэтажных if(SUCCEEDED()) AddRef/Release.

S>> С голым Idispatch без библиотеки типов? В C# для этого есть dynamic.

EP>Опиши конкретный use-case.

http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=614821&threadtype=0&print=1&partt614821=1
EP>Если нужно вызвать метод с произвольным именем (method) и произвольным количеством аргументов (a1, a2, ...), без всякого предварительного описания — то можно например вот так:
EP>
EP>Dynamic x = ...;

EP>x.call("method", a1, a2, ...);
EP>// or
EP>x("method", a1, a2, ...);
EP>// or
EP>x > "method"_(a1, a2, ...);
EP>
А если заранее описать список возможных имён методов, то можно и так:

EP>
EP>x.method(a1, a2, ...)
EP>


Но согласись все равно убожество. Читать такой код неудобно.
На C# Сделать прокси легко. Вот например как обернуть в Idispatch любой объект .Net
http://infostart.ru/public/238584/

Есть DynamicObject, expandoobject все очень красиво

Кстати про инлайн
http://stackoverflow.com/questions/23374815/creating-inline-functions-and-macros
http://aakinshin.net/ru/blog/dotnet/inlining-and-starg/
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.