Re[6]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия https://kisa.biz
Дата: 27.12.16 20:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

V>>>Visual Studio нужно покупать.

QL>>Она бесплатна
AVK>Только для опенсорса и индивидуальных разработчиков.

Да ничего, для индивидуальных разработчиков и Visual Studio Enterprise Edition часто оказывается "бесплатной".
Re[7]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:57
Оценка:
Здравствуйте, velkin, Вы писали:

V>Да ничего, для индивидуальных разработчиков и Visual Studio Enterprise Edition часто оказывается "бесплатной".


Зачем? EE ломать надо, так как она регулярно ходит в инет за лицензией. При этом Community вполне функциональна.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия https://kisa.biz
Дата: 27.12.16 20:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

V>>Но вот тот же OpenCASCADE выше моего разумения, хотя всё что нужно запускается и работает, но внутри там просто бешеная математика.

AVK>

AVK>The set of Advanced Tools includes the following components:
AVK>C# Wrapper — a tool for wrapping Open CASCADE Technology C++ classes to C# language, to allow their use from within .NET applications.


Я о том выше и написал, смысл каждый раз брать недообёртку от С++ на другой язык, когда можно сразу взять С++. Скажу ещё, что совместив Qt с OpenCASCADE получаем кроссплатформенное решение.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 21:00
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

AO>>а как сравнить с теми же(формочками, БД,..) под чистыми Win32 для C++ ?

ES>У С++ ничего этого нет. Всё делается сторонними библиотеками.

Т.е. майкрософт не может предложить собственный фреймворк для Win32 и к Visual C++ придется брать сторонние библиотеки?
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия https://kisa.biz
Дата: 27.12.16 21:10
Оценка: +2
Здравствуйте, Alexey.Os, Вы писали:

AO>ПО будет разного типа (и десктопное, и клиентское, и презентационное, и например модель обсчитать)...

AO>Т.е. если есть зависимость от типа ПО, то хотелось бы этот вопрос понять.

Если это 3D графика, физика, сапр, компьютерное зрение и всё в таком роде, тогда С++ и Qt. Если хватит каких-нибудь формочек с базами данных, тогда подойдёт си шарп с дотнетом, впрочем С++ с Qt тоже прекрасно подойдут. Зависимость здесь в уже написанных библиотеках алгоритмов, возможности самих языков не критичны.
Re[8]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 21:12
Оценка:
Здравствуйте, velkin, Вы писали:

V>Я о том выше и написал, смысл каждый раз брать недообёртку


Почему недообертку?

V> от С++ на другой язык, когда можно сразу взять С++.


Смысл в том, что есть вещи где C# предпочтительнее.

V> Скажу ещё, что совместив Qt с OpenCASCADE получаем кроссплатформенное решение.


Но автору топика кроссплатформенность не нужна.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: Рантайм
От: Qbit86 Кипр
Дата: 27.12.16 21:14
Оценка:
Здравствуйте, Alexey.Os, Вы писали:

AO>Например, C# требует .NET. Что здесь хорошего, а что плохого?


Не уловил логику. C# требует свой рантайм. А C++ требует свой. «Что здесь хорошего, а что плохого?»
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Рантайм
От: Alexey.Os  
Дата: 27.12.16 21:23
Оценка:
Здравствуйте, Qbit86, Вы писали:

AO>>Например, C# требует .NET. Что здесь хорошего, а что плохого?


Q>Не уловил логику. C# требует свой рантайм. А C++ требует свой. «Что здесь хорошего, а что плохого?»


В т.ч. сравнить среду выполнения:
— C++ ПО работает под Windows
— С# ПО работает под .NET(Windows)

Критерии:
1) требования к ресурсам (память и вычислительные)
2) наличие/удобство технологи
3) ключевые моменты разработки/отладки
4) перспектива будущего сопровождения
5) ...
Re[6]: Visual C# vs C++. Надо сравнить перспективы.
От: Sinix  
Дата: 27.12.16 21:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Только для опенсорса и индивидуальных разработчиков.


Зануда_mode: там есть нюансы, но по факту да.

С другой стороны, подписка в ~$50/месяц особой проблемой не является.
Re: Visual C# vs C++. Надо сравнить перспективы.
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.12.16 21:27
Оценка: +3
Здравствуйте, Alexey.Os, Вы писали:

AO>В рамках будущего проекта будем создавать ПО под Windows.

AO>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C#

У C++ сейчас остались довольно специфические области (кроссплатформа, встраиваемые системы, тяжелые вычисления, легаси код).
Если это не ваш случай, imho, берите C#, даже если плохо его знаете (сидели последние 10 лет в бункере, например).
Для обычных бизнес-приложений, продуктивность одного и того же "условного программиста" будет в разы выше.
Re[6]: Visual C# vs C++. Надо сравнить перспективы.
От: QrystaL Украина  
Дата: 27.12.16 21:28
Оценка: 7 (1) +1 -1
Здравствуйте, velkin, Вы писали:
V>Если это 3D графика
Ну вот берете Unity, и пишете на C#
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 21:28
Оценка:
Здравствуйте, TK, Вы писали:

TK>Кроссплатформенность может помочь в случае если у вас frontend будет от backend отделен.

TK>А будет это написано на c++ или c# не важно — c++ в этом плане даже более кроссплатформенным оказаться может...

Тоже интересный момент, я полагал, что кроссплатформенность — это конек .NET, но уже несколько человек написали, что для этого лучше C++ и QT.
Или они только GUI имели в виду?
Re: Visual C# vs C++. Надо сравнить перспективы.
От: Sinix  
Дата: 27.12.16 21:31
Оценка: +1
Здравствуйте, Alexey.Os, Вы писали:

AO>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C#


Присоединяюсь к TK. Берите то, в чём разбираетесь, всё остальное — вторично.

У каждого языка есть свои ниши, но это вроде не ваш случай.
Как пример, если вы завязываетесь на мобильные приложения, простенький erp, веб или Azure, то плюсы — не самый лучший выбор. И то же самое касается шарпа и числодробилок или математики, с библиотеками для них дела не очень.
Re[2]: Visual C# vs C++. Надо сравнить перспективы.
От: Evgeny.Panasyuk Россия  
Дата: 27.12.16 21:35
Оценка: +2 -3
Здравствуйте, bazis1, Вы писали:

B>Минусы плюсов:

B>* Нет нормального garbage collector-а.

Есть консервативные сборщики мусора, причём им не первый десяток лет, но их никто не использует, потому что нет такой необходимости.

B>Поэтому нужно постоянно держать в голове, что и когда удаляется.


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

B>Всякие shared_ptr и т.п. частично эту проблему решают, но держать это в голове все равно придется.


99% случаев разруливаются scope-based lifetime, даже без всяких *_ptr и прочего ref-counting.

B>* Меньше синтаксического сахара. К примеру, вот такая строчка в C#

B>
B>return m_Something?.SomethingElse?.SubSomething ?? "empty";
B>


Проблема с засильем null'ов это исключительно родовая травма C#. В C++ нет такой проблемы.

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


Это типа 4k строк нагенерированных на ровном месте?

B>* Нет reflection. В C# я могу объявить вот такую структуру:

B>
B>struct MyStruct
B>{
B>    int Score;
B>    string[] Names;
B>}
B>


Для этого есть Boost.Fusion/Hana
BOOST_FUSION_DEFINE_STRUCT
(
    (demo), MyStruct,
    (int, Score)
    (vector<string>, Names)
)
Но со встроенным compile-time reflection было бы конечно красивее.

B>* Нет yield return, async/await,


Во-первых есть библиотечные (например на базе Boost.Coroutine). А во-вторых если речь про MSVS — то там начиная с ЕМНИП 2015 есть встроенное расширение.

B>LINQ


Для in-memory последовательностей есть Boost.Range. А для взаимодействия с DB есть как отдельные библиотеки с декларативным описанием запросов, так и целые системы а-ля ODB.

B>* Существенно дольше компиляция, если Вы часто редактируете header-ы. Можно частично побороть через precompiled headers, но все равно будет медленно.


Здесь верно, да.
Re[2]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 21:38
Оценка: :)
Здравствуйте, bnk, Вы писали:

AO>>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C#


bnk>У C++ сейчас остались довольно специфические области (кроссплатформа, встраиваемые системы, тяжелые вычисления, легаси код).

bnk>Если это не ваш случай, imho, берите C#, даже если плохо его знаете (сидели последние 10 лет в бункере, например).
bnk>Для обычных бизнес-приложений, продуктивность одного и того же "условного программиста" будет в разы выше.

Т.е. C# проще в разработке(чем С++), т.к. современный?
Что еще...? Платформа .NET считается полноценным фреймворком, a Visual C++ потребует сторонние платформы (типа QT)?
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.12.16 21:53
Оценка: +1
Здравствуйте, Alexey.Os, Вы писали:

AO>Т.е. C# проще в разработке(чем С++), т.к. современный?


Не то чтобы он "современнее" (вот в следующем году уже опять новый стандарт C++ будет),
просто C# несколько проще (лаконичнее), и многие "грабли", на которые наступали поколения программистов, убраны.

AO>Что еще...? Платформа .NET считается полноценным фреймворком, a Visual C++ потребует сторонние платформы (типа QT)?


Да. C C++ ты получаешь по сути язык (компилятор). Обычно этого недостаточно для бизнес-приложений,
т.к. требуется пользовательский интерфейс (UI), работа с базами данных, работа с разными сервисами (HTTP например, или не к ночи помянутый, WCF).
В отличие от .NET, где это предоставляется платформой, для этих же вещей в случае C++ потребуются библиотеки (ну или "платформа", такая как QT).
Даже банальное автодополнение работает в C# с нормальной скоростью, средства автоматического рефакторинга кода лучше.
В общем это часть того, что дает прирос продуктивности.
Re[2]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 21:53
Оценка:
Здравствуйте, Sinix, Вы писали:

AO>>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C#

S>Присоединяюсь к TK. Берите то, в чём разбираетесь, всё остальное — вторично.

У нас другой случай, нужно сначала выбрать средства разработки(серьезно продумать) и затем докомплектовать команду, это будут специалисты либо С++ либо C#.

S>У каждого языка есть свои ниши, но это вроде не ваш случай.

S>Как пример, если вы завязываетесь на мобильные приложения, простенький erp, веб или Azure, то плюсы — не самый лучший выбор. И то же самое касается шарпа и числодробилок или математики, с библиотеками для них дела не очень.

Т.е. со сторонними библиотеками у C++ получше, чем у C#?
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: Evgeny.Panasyuk Россия  
Дата: 27.12.16 22:00
Оценка: 2 (1) +3 -2
Здравствуйте, Alexey.Os, Вы писали:

AO>Т.е. C# проще в разработке(чем С++), т.к. современный?


C++ современный. Последний стандарт ISO C++2014, следующий — ISO C++2017. Есть четыре разных mainstream компилятора, для кучи платформ, каждый достаточно активно развивается, и реализует фичи будущих стандартов даже до непосредственного официального их принятия.
Те C#-сты которые берутся судить о C++, обычно опираются на подходы двадцатилетней давности, вещают разнообразные мифы и прочие домыслы.

У C++ другая доктрина и целевая аудитория нежели чем у C# — это ориентация на высокопроизводительный код (высокопроизводительный не означает низкоуровневый) и кроссплатформенность, библиотечные фичи предпочтительней языковых (поддержка метапрограммирования как следствие), бесплатные либо крайне дешёвые абстракции и прочий don't pay for what you don't use.
У C# в первую очередь ориентация на корпоративный софт — формочки, взаимодействие с СУБД и прочее — упор на скорость разработки именно в этих сферах, необходимые языковые фичи под конкретную насущную задачу прямо сейчас важнее более общих фич и библиотечной реализации, сами фичи обычно либо дорогие по построению, либо не оптимизируются из-за ненадобности.

Поэтому у тебя и спрашивают какие именно у тебя задачи. Если корпоративный опердень — то однозначно бери C#, если нужна производительность или кроссплатформенность — бери C++, если что-то среднее то нужно смотреть по обстоятельствам.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 22:05
Оценка: +1 :)
Здравствуйте, bnk, Вы писали:

AO>>Т.е. C# проще в разработке(чем С++), т.к. современный?


bnk>Не то чтобы он "современнее" (вот в следующем году уже опять новый стандарт C++ будет),

bnk>просто C# несколько проще (лаконичнее), и многие "грабли", на которые наступали поколения программистов, убраны.

Я не разбираюсь в C, но просто чтоб понять принцип:
наверное, новые стандарты C++ только фиксируют нововведения, но не в силах отменить "старые грабли"?
А в C# изначально не было граблей как в классических плюсах? Или не так?

AO>>Что еще...? Платформа .NET считается полноценным фреймворком, a Visual C++ потребует сторонние платформы (типа QT)?


bnk>Да. C C++ ты получаешь по сути язык (компилятор). Обычно этого недостаточно для бизнес-приложений,

bnk>т.к. требуется пользовательский интерфейс (UI), работа с базами данных, работа с разными сервисами (HTTP например, или не к ночи помянутый, WCF).
bnk>В отличие от .NET, где это предоставляется платформой, для этих же вещей в случае C++ потребуются библиотеки (ну или "платформа", такая как QT).
bnk>Даже банальное автодополнение работает в C# с нормальной скоростью, средства автоматического рефакторинга кода лучше.
bnk>В общем это часть того, что дает прирос продуктивности.

Этот момент я попробую проработать, неужели MS не может предложить собственный фреймворк для C++, вынуждая пользоваться сторонним QT?
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Evgeny.Panasyuk Россия  
Дата: 27.12.16 22:06
Оценка: +1 :))) :))
Здравствуйте, bnk, Вы писали:

AO>>Т.е. C# проще в разработке(чем С++), т.к. современный?

bnk>Не то чтобы он "современнее" (вот в следующем году уже опять новый стандарт C++ будет),
bnk>просто 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#?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.