Здравствуйте, 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++. Надо сравнить перспективы.
Здравствуйте, Evgeniy Skvortsov, Вы писали:
AO>>а как сравнить с теми же(формочками, БД,..) под чистыми Win32 для C++ ? ES>У С++ ничего этого нет. Всё делается сторонними библиотеками.
Т.е. майкрософт не может предложить собственный фреймворк для Win32 и к Visual C++ придется брать сторонние библиотеки?
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
Здравствуйте, Alexey.Os, Вы писали:
AO>ПО будет разного типа (и десктопное, и клиентское, и презентационное, и например модель обсчитать)... AO>Т.е. если есть зависимость от типа ПО, то хотелось бы этот вопрос понять.
Если это 3D графика, физика, сапр, компьютерное зрение и всё в таком роде, тогда С++ и Qt. Если хватит каких-нибудь формочек с базами данных, тогда подойдёт си шарп с дотнетом, впрочем С++ с Qt тоже прекрасно подойдут. Зависимость здесь в уже написанных библиотеках алгоритмов, возможности самих языков не критичны.
Re[8]: Visual C# vs C++. Надо сравнить перспективы.
Здравствуйте, Qbit86, Вы писали:
AO>>Например, C# требует .NET. Что здесь хорошего, а что плохого?
Q>Не уловил логику. C# требует свой рантайм. А C++ требует свой. «Что здесь хорошего, а что плохого?»
В т.ч. сравнить среду выполнения:
— C++ ПО работает под Windows
— С# ПО работает под .NET(Windows)
Критерии:
1) требования к ресурсам (память и вычислительные)
2) наличие/удобство технологи
3) ключевые моменты разработки/отладки
4) перспектива будущего сопровождения
5) ...
Re[6]: Visual C# vs C++. Надо сравнить перспективы.
Здравствуйте, Alexey.Os, Вы писали:
AO>В рамках будущего проекта будем создавать ПО под Windows. AO>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C#
У C++ сейчас остались довольно специфические области (кроссплатформа, встраиваемые системы, тяжелые вычисления, легаси код).
Если это не ваш случай, imho, берите C#, даже если плохо его знаете (сидели последние 10 лет в бункере, например).
Для обычных бизнес-приложений, продуктивность одного и того же "условного программиста" будет в разы выше.
Re[6]: Visual C# vs C++. Надо сравнить перспективы.
Здравствуйте, TK, Вы писали:
TK>Кроссплатформенность может помочь в случае если у вас frontend будет от backend отделен. TK>А будет это написано на c++ или c# не важно — c++ в этом плане даже более кроссплатформенным оказаться может...
Тоже интересный момент, я полагал, что кроссплатформенность — это конек .NET, но уже несколько человек написали, что для этого лучше C++ и QT.
Или они только GUI имели в виду?
Здравствуйте, Alexey.Os, Вы писали:
AO>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C#
Присоединяюсь к TK. Берите то, в чём разбираетесь, всё остальное — вторично.
У каждого языка есть свои ниши, но это вроде не ваш случай.
Как пример, если вы завязываетесь на мобильные приложения, простенький erp, веб или Azure, то плюсы — не самый лучший выбор. И то же самое касается шарпа и числодробилок или математики, с библиотеками для них дела не очень.
Re[2]: Visual C# vs C++. Надо сравнить перспективы.
Здравствуйте, bazis1, Вы писали:
B>Минусы плюсов: B>* Нет нормального garbage collector-а.
Есть консервативные сборщики мусора, причём им не первый десяток лет, но их никто не использует, потому что нет такой необходимости.
B>Поэтому нужно постоянно держать в голове, что и когда удаляется.
Нужно держать и что-то там разруливать в исключительных случаях, а никак не постоянно.
B>Всякие shared_ptr и т.п. частично эту проблему решают, но держать это в голове все равно придется.
99% случаев разруливаются scope-based lifetime, даже без всяких *_ptr и прочего ref-counting.
B>* Меньше синтаксического сахара. К примеру, вот такая строчка в C# B>
Проблема с засильем null'ов это исключительно родовая травма C#. В C++ нет такой проблемы.
B>и таких примеров много. Соответственно, одинаковый по функционалу код получается более громоздким и дорогим в поддержке.
Это типа 4k строк нагенерированных на ровном месте?
B>* Нет reflection. В C# я могу объявить вот такую структуру: B>
Но со встроенным 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++. Надо сравнить перспективы.
Здравствуйте, 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++. Надо сравнить перспективы.
Здравствуйте, 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++. Надо сравнить перспективы.
Здравствуйте, Sinix, Вы писали:
AO>>Решаем, какой инструмент разработки выбрать Visual C++ или Visual C# S>Присоединяюсь к TK. Берите то, в чём разбираетесь, всё остальное — вторично.
У нас другой случай, нужно сначала выбрать средства разработки(серьезно продумать) и затем докомплектовать команду, это будут специалисты либо С++ либо C#.
S>У каждого языка есть свои ниши, но это вроде не ваш случай. S>Как пример, если вы завязываетесь на мобильные приложения, простенький erp, веб или Azure, то плюсы — не самый лучший выбор. И то же самое касается шарпа и числодробилок или математики, с библиотеками для них дела не очень.
Т.е. со сторонними библиотеками у C++ получше, чем у C#?
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
Здравствуйте, 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++. Надо сравнить перспективы.
Здравствуйте, 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++. Надо сравнить перспективы.
Здравствуйте, 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))