Сообщение Re[43]: Nemerle через 5 лет - выстрелит или скончается? от 06.10.2014 12:40
Изменено 06.10.2014 12:42 Evgeny.Panasyuk
Здравствуйте, VladD2, Вы писали:
VD>С другой стороны выделение памяти в хипе тоже в разы быстрее.
В вопросах производительности не имеет особого смысла рассматривать выделение памяти отдельно от освобождения.
Но да, есть случаи, как уже выше сказал alex_public, где стандартный аллокатор управляемых языков будет быстрее стандартных new/delete C++
VD>В итоге преимущество становится иллюзорным и слихвой покрывается существенно больше безопасностью кода и простотой программирования.
VD>У плюсов и сей действительно есть некоторые преимущества в области оптимизации, но чем за это приходится платить? Надежность, временем необходимым на доведение кода до качественного состояния, сложностью в дизайне и т.п. В среднем же, если не заниматься вылизыванием каждой строчки кода, то оставание дотнета не превысит и двух раз. Реальный средний гандикап измеряется процентами. Ну, а там где нужно вылизать есть ансэйф и даже С/С++.
Вот только нужно не забывать, что C++ это не только преимущества в скорости, но ещё и в гибкости.
На C# — шаг влево, шаг вправо и упираешься в забор
Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
Вот например, на Python можно сделать так:
Аналог на C++:
На C# будет облом.
И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней

Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
VD>С другой стороны выделение памяти в хипе тоже в разы быстрее.
В вопросах производительности не имеет особого смысла рассматривать выделение памяти отдельно от освобождения.
Но да, есть случаи, как уже выше сказал alex_public, где стандартный аллокатор управляемых языков будет быстрее стандартных new/delete C++
VD>В итоге преимущество становится иллюзорным и слихвой покрывается существенно больше безопасностью кода и простотой программирования.
VD>У плюсов и сей действительно есть некоторые преимущества в области оптимизации, но чем за это приходится платить? Надежность, временем необходимым на доведение кода до качественного состояния, сложностью в дизайне и т.п. В среднем же, если не заниматься вылизыванием каждой строчки кода, то оставание дотнета не превысит и двух раз. Реальный средний гандикап измеряется процентами. Ну, а там где нужно вылизать есть ансэйф и даже С/С++.
Вот только нужно не забывать, что C++ это не только преимущества в скорости, но ещё и в гибкости.
На C# — шаг влево, шаг вправо и упираешься в забор
Автор: Evgeny.Panasyuk
Дата: 03.11.13
, в результате код получается более многословный.Дата: 03.11.13
Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
Вот например, на Python можно сделать так:
def add(x, y):
return x + y
def sub(x, y):
return x - y
def apply(f, *args):
return f(*args)
print(apply(apply, apply, apply, add, 1, 2))
print(apply(apply, apply, sub, 11, 2))Аналог на C++:
auto add = [](auto x, auto y)
{
return x + y;
};
auto sub = [](auto x, auto y)
{
return x - y;
};
auto apply = [](auto f, auto... args)
{
return f(args...);
};
print(apply(apply, apply, apply, add, 1, 2));
print(apply(apply, apply, sub, 11, 2));На C# будет облом.
И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней
Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
Здравствуйте, VladD2, Вы писали:
VD>С другой стороны выделение памяти в хипе тоже в разы быстрее.
В вопросах производительности не имеет особого смысла рассматривать выделение памяти отдельно от освобождения.
Но да, есть случаи, как уже выше сказал alex_public, где стандартный аллокатор управляемых языков будет быстрее стандартных new/delete C++
VD>В итоге преимущество становится иллюзорным и слихвой покрывается существенно больше безопасностью кода и простотой программирования.
VD>У плюсов и сей действительно есть некоторые преимущества в области оптимизации, но чем за это приходится платить? Надежность, временем необходимым на доведение кода до качественного состояния, сложностью в дизайне и т.п. В среднем же, если не заниматься вылизыванием каждой строчки кода, то оставание дотнета не превысит и двух раз. Реальный средний гандикап измеряется процентами. Ну, а там где нужно вылизать есть ансэйф и даже С/С++.
Вот только нужно не забывать, что C++ это не только преимущества в скорости, но ещё и в гибкости.
На C# — шаг влево, шаг вправо и упираешься в забор
Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
Вот например, на Python можно сделать так (будет работать для любых типов имеющих соответствующие операторы):
Аналог на C++:
На C# будет облом.
И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней

Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
VD>С другой стороны выделение памяти в хипе тоже в разы быстрее.
В вопросах производительности не имеет особого смысла рассматривать выделение памяти отдельно от освобождения.
Но да, есть случаи, как уже выше сказал alex_public, где стандартный аллокатор управляемых языков будет быстрее стандартных new/delete C++
VD>В итоге преимущество становится иллюзорным и слихвой покрывается существенно больше безопасностью кода и простотой программирования.
VD>У плюсов и сей действительно есть некоторые преимущества в области оптимизации, но чем за это приходится платить? Надежность, временем необходимым на доведение кода до качественного состояния, сложностью в дизайне и т.п. В среднем же, если не заниматься вылизыванием каждой строчки кода, то оставание дотнета не превысит и двух раз. Реальный средний гандикап измеряется процентами. Ну, а там где нужно вылизать есть ансэйф и даже С/С++.
Вот только нужно не забывать, что C++ это не только преимущества в скорости, но ещё и в гибкости.
На C# — шаг влево, шаг вправо и упираешься в забор
Автор: Evgeny.Panasyuk
Дата: 03.11.13
, в результате код получается более многословный.Дата: 03.11.13
Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
Вот например, на Python можно сделать так (будет работать для любых типов имеющих соответствующие операторы):
def add(x, y):
return x + y
def sub(x, y):
return x - y
def apply(f, *args):
return f(*args)
print(apply(apply, apply, apply, add, 1, 2))
print(apply(apply, apply, sub, 11, 2))Аналог на C++:
auto add = [](auto x, auto y)
{
return x + y;
};
auto sub = [](auto x, auto y)
{
return x - y;
};
auto apply = [](auto f, auto... args)
{
return f(args...);
};
print(apply(apply, apply, apply, add, 1, 2));
print(apply(apply, apply, sub, 11, 2));На C# будет облом.
И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней
Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого