Информация об изменениях

Сообщение Re[29]: Java vs C# vs C++ от 03.10.2015 14:09

Изменено 03.10.2015 14:19 Evgeny.Panasyuk

Здравствуйте, 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.

Опиши конкретный use-case.
Если нужно вызвать метод с произвольным именем (method) и произвольным количеством аргументов (a1, a2, ...), без всякого предварительного описания — то можно например вот так:
Dynamic x = ...;

x.call("method", a1, a2, ...);
// or
x > "method"_(a1, a2, ...);
А если заранее описать список возможных имён методов, то можно и так:
x.method(a1, a2, ...)
Re[29]: Java vs C# vs C++
Здравствуйте, 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.

Опиши конкретный use-case.
Если нужно вызвать метод с произвольным именем (method) и произвольным количеством аргументов (a1, a2, ...), без всякого предварительного описания — то можно например вот так:
Dynamic x = ...;

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