Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: Evgeniy Skvortsov Россия  
Дата: 27.12.16 20:23
Оценка:
Здравствуйте, Alexey.Os, Вы писали:

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


У С++ ничего этого нет. Всё делается сторонними библиотеками.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 20:23
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Почему по секрету и какой смысл шифроваться? Почему бы просто не дать ссылку?


Шифроваться — это НЕ значит открыто заявить!


Я же специально сказал. И, кстати, сработало удачно.
Отредактировано 28.12.2016 9:38 Alexey.Os . Предыдущая версия .
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:24
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

ES>Ключевое отличие — это то, что C++ имеет компиляторы практически на всех популярных платформах, а C# — это только windows.


А мужики то и не знали. https://en.wikipedia.org/wiki/List_of_compilers#C.23_compilers
По поводу розлина, кстати, вранье. Компилятор работает под Core — https://www.nuget.org/packages/Microsoft.Net.Compilers.netcore/
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 27.12.16 20:25
Оценка: 9 (1) +1
Здравствуйте, Alexey.Os, Вы писали:

AO>Но какая польза от Кьют?

AO>Т.к. мы планируем средства разработки от MS. Visual C..

Ну, положим Qt ничуть не препятствует работе в Visual C++. Хочется компилируйте nmake, я лишь предложил лучшее на мой взгляд решение хотя бы по части цены, да и технологии тоже.

AO>Да, основное ПО под Windows.

AO>Но, какую выгоду дает .NET(это как бы прослойка)?

С учётом существования Qt особой выгоды дотнет не даёт. Ведь в Qt есть не только формошлёпство с базами, сетями и прочим. Так же имеется рефлексия, интроспекция, да и в целом метапрограммная система, которая открывает возможность к таким вещам как кроссплатформенные плагины. Понятно вам хватит и винды, по крайне мере пока, но даже так можно зашивать в них сразу кроссплатформенный код, ну и сами плагины естественно тоже лишними не будут.

AO>Например, C++ не требует прослойки, и работает с чистой виндой.

AO>Это хорошо и ли плохо?

В дотнете плохо то, что мало готовых библиотек алгоритмов, в этом плане больше всего их на C/C++, то есть С++ покрывает весь диапазон. Я, к примеру, могу задействовать в С++ алгоритмы, которые мне в жизнь не написать, а для дотнета их просто нет.
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:27
Оценка: +1
Здравствуйте, Alexey.Os, Вы писали:

AO>Но, какую выгоду дает .NET(это как бы прослойка)?


Это как бы не прослойка.

AO>Например, C++ не требует прослойки, и работает с чистой виндой.


Чистой современной винды без дотнета нынче не бывает — даже на относительно старых версиях оно приходит автоматом через апдейт.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 20:27
Оценка:
Здравствуйте, velkin, Вы писали:

V>Между прочим да, у Qt и прочих лицензия LGPL или бывает даже ещё лучше MIT, а вот Visual Studio нужно покупать. А там ведь вместо Postgres подтянется какой-нибудь MS SQL сервер, а он ведь при тех же возможностях стоит денег. Какая тут перспектива, когда придётся каждую копию у микрософта покупать.


Бюджет будет и будут лицензии от MS.
Т.е. выбор технологий (.NET или Win32) — это не финансовый вопрос, идеологический ...
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 27.12.16 20:33
Оценка:
Здравствуйте, Alexey.Os, Вы писали:

V>>Мне можешь верить Если нужен гуй бери QT, C++ (mingw) это ООП. Если нужен простенький сервер бери QT, C++ (mingw) это ООП. Если нужен продвинутый сервер или ещё какая битомолка на шаблонах С++, то boost.

AO>Т.е. еще нужен Кьют? Возможностей MS Visual C++ из студии не достаточно?

Вообще-то .NET это набор библиотек алгоритмов, такое обычно зовётся фреймворком, а C# это язык программирования. Если вам нужен язык программирования C++, то понадобится и фреймворк, а лучший из них это как раз Qt. Плюс есть ещё компиляторы, тот же Qt можно компилировать компиляторами Microsoft, а можно и другими. Нетрудно догадаться какие компиляторы входят в состав Visual Studio по умолчанию.
Re: Visual C# vs C++. Надо сравнить перспективы.
От: bazis1 Канада  
Дата: 27.12.16 20:34
Оценка: +7 -1
Здравствуйте, Alexey.Os, Вы писали:

AO>Я пытаюсь собрать информацию, оценить ”минусы” и “плюсы” и сравнить перспективу.

Если нужен кроссплатформенный GUI, то C++ и Qt. Но по времени выйдет в 3 раза дольше, чем на WPF.
Если ПО не завязано на супермегавычисления, то однозначно C#. В разы больше вещей, которые за Вас делает компилятор и .Net runtime и о которых не надо думать.
Если супермегавычисления (и хитрая оптимизация по памяти) нужны, то я бы сделал ядро на C++, а GUI и некритичные по ресурсам вещи — на C#. По трудозатратам выйдет огромная экономия.

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

AO>Какие еще ключевые отличия C++ от C# ?
Плюсы плюсов:
* Кроссплатформенность (в т.ч. GUI с Qt). C# сносно работает на Linux и Mac, но с GUI там большие проблемы.
* При желании можно выжать из железа максимум производительности. Скажем, поиск по многогигабайтной хэш-таблице, сохраненной в файле, без чтения всего файла в память, элементарно делается на C++ и жутко коряво выглядит на C# (с десятками вызовов BitConverter-а). Можно альтернативно использовать unsafe, но там есть свои тонкости.
* Требует существенно меньше памяти
Минусы плюсов:
* Нет нормального garbage collector-а. Поэтому нужно постоянно держать в голове, что и когда удаляется. Всякие shared_ptr и т.п. частично эту проблему решают, но держать это в голове все равно придется. Простейший пример на C#:
myEventSource.LineReceived += myHandler.HandleLineReceived;
myEventSource.DoSomethingInBackround();

2 объекта, первый делает что-то в фоне, второй подписан на его события. Оба удалятся автоматически, когда станут не нужны.
На C++ вы тут же упретесь в то, что:
а) Нельзя просто так взять указатель на метод и автоматически увеличить reference count для объекта. Можно, используя шаблонную магию, но вы замучаетесь.
б) Если myHandler держит ссылку на myEventSource, то получается circular reference. Надо разруливать руками: или делать weak reference, или shutdown() который сбросит (опять же руками) всякие вспомогательные smart-указатели.
* Меньше синтаксического сахара. К примеру, вот такая строчка в C#
return m_Something?.SomethingElse?.SubSomething ?? "empty";

на C++ занимает в 3 раза больше места:
if (!m_Something || !m_Something->SomethingElse || !m_Something->SomethingElse->SubSomething)
    return "empty";
return m_Something->SomethingElse->SubSomething;

и таких примеров много. Соответственно, одинаковый по функционалу код получается более громоздким и дорогим в поддержке.
* Нет reflection. В C# я могу объявить вот такую структуру:
struct MyStruct
{
    int Score;
    string[] Names;
}

и вызовом одного метода сбросить ее в XML:
<MyStruct>
   <Score>123</Score>
   <Names>
      <string>Alice</string>
      <string>Bob</string>
   </Names>
</MyStruct>

Это позволяет эффективно разделять алгоритмы и данные, сохраняя всякие настройки, policy, и т.п. в легкочитаемой форме, которую можно зачекинить в git. Более того, форма не привязана к порядку и размеру полей внутри структур, т.е. добавив в середину новое поле, я не сломаю сохраненные файлы.
* Нет yield return, async/await, LINQ и прочих вещей, которые часто экономят сотни строк кода.
* Существенно дольше компиляция, если Вы часто редактируете header-ы. Можно частично побороть через precompiled headers, но все равно будет медленно.

Как-то так.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:34
Оценка:
Здравствуйте, velkin, Вы писали:

V>В дотнете плохо то, что мало готовых библиотек алгоритмов, в этом плане больше всего их на C/C++, то есть С++ покрывает весь диапазон. Я, к примеру, могу задействовать в С++ алгоритмы, которые мне в жизнь не написать, а для дотнета их просто нет.


Чего за алгоритмы?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 20:35
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

ES>C++ не завязан на платформу никак.


А на ОС завязан? Т.е. Windows как платформа?
Я в "Cи" плохо разбираюсь...

ES>Писать современные приложения с "чистой виндой" (WIN API) — это Адъ и Израиль!


Но, где Адъ приятнее, в .NET или Win ?

ES>Поэтому для получения более правильных советов следует ответить на этот вопрос


ПО будет разного типа (и десктопное, и клиентское, и презентационное, и например модель обсчитать)...
Т.е. если есть зависимость от типа ПО, то хотелось бы этот вопрос понять.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Evgeniy Skvortsov Россия  
Дата: 27.12.16 20:36
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А мужики то и не знали. https://en.wikipedia.org/wiki/List_of_compilers#C.23_compilers


Там часть функционала не допилена. В отличии от того что есть под .нет под винду. Речь об этом.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: QrystaL Украина  
Дата: 27.12.16 20:38
Оценка:
Здравствуйте, velkin, Вы писали:
V>Visual Studio нужно покупать.
Она бесплатна

V>А там ведь вместо Postgres подтянется какой-нибудь MS SQL сервер

Что значит "подтянется"? Можно использовать любую СУБД на свой выбор.
Re[2]: Visual C# vs C++. Надо сравнить перспективы.
От: QrystaL Украина  
Дата: 27.12.16 20:43
Оценка:
Здравствуйте, velkin, Вы писали:
V>А у дотнета нет отдалённой перспективы, то есть на десятки лет как у С++, но пока майкрософт его не убил и ладно.
Майкрософт переписал его под линукс/мак-ос, выложил в опенсорс и активно развивает.
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:44
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:

AVK>>А мужики то и не знали. https://en.wikipedia.org/wiki/List_of_compilers#C.23_compilers

ES>Там часть функционала не допилена.

Это что за часть такая, что ее ни в розлине, ни в моно нет?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:44
Оценка: +2
Здравствуйте, QrystaL, Вы писали:

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

QL>Она бесплатна

Только для опенсорса и индивидуальных разработчиков.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 27.12.16 20:45
Оценка:
Здравствуйте, Alexey.Os, Вы писали:

AO>Бюджет будет и будут лицензии от MS.

AO>Т.е. выбор технологий (.NET или Win32) — это не финансовый вопрос, идеологический ...

Вряд ли в наше время будете использовать Windows API, это с высокой вероятностью будет Qt. И это не просто идеологический вопрос, в том то и дело, что с точки зрения технологий на .NET будет жёсткое ограничение. На чём, к примеру, написаны физические движки, а компьютерное зрение, системы автоматизированного проектирования. Для .NET просто не будет нужных библиотек или это будет обёртка над библиотекой C++. Так что в первую очередь это вопрос технологий, и тем удивительнее, что получая многократно больше возможностей ничего за это не платишь.
Re[3]: Visual C# vs C++. Надо сравнить перспективы.
От: TK Лес кывт.рф
Дата: 27.12.16 20:49
Оценка: +1
Здравствуйте, Alexey.Os, Вы писали:

AO>Кроссплатформенность в планах НЕ стоит.

AO>Хотя, интересно было бы понять, если вдруг встанет задача, действительно ли эта "Кроссплатформенность" помогает?

Кроссплатформенность может помочь в случае если у вас frontend будет от backend отделен.
А будет это написано на c++ или c# не важно — c++ в этом плане даже более кроссплатформенным оказаться может...
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[5]: Visual C# vs C++. Надо сравнить перспективы.
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 27.12.16 20:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

V>>В дотнете плохо то, что мало готовых библиотек алгоритмов, в этом плане больше всего их на C/C++, то есть С++ покрывает весь диапазон. Я, к примеру, могу задействовать в С++ алгоритмы, которые мне в жизнь не написать, а для дотнета их просто нет.

AVK>Чего за алгоритмы?

Тот же OpenCV ещё можно частично сварганить самому, хотя это будет очень трудно и так долго, что проще сразу повеситься. Но вот тот же OpenCASCADE выше моего разумения, хотя всё что нужно запускается и работает, но внутри там просто бешеная математика.
Re[4]: Visual C# vs C++. Надо сравнить перспективы.
От: Alexey.Os  
Дата: 27.12.16 20:52
Оценка:
Здравствуйте, Слава, Вы писали:

С>Давайте вы немного расскажете о себе и о проекте, чтобы можно было понять, на каком уровне вам следует объяснять. А то всё, что вы пока что написали, напоминает какую-то странную шутку.


Девелоперская команда(в мск) увеличится до 30 чел.(дочка крупной немецкой компании).
Владельцы дали добро(бюджет) на новый проект в следующем году. Плотные обсуждения начнутся уже в середине января.
Я системный аналитик(буду претендовать на роль архитектора). Мне нужно подготовить рекомендации по выбору средств разработки (не только я над этим работаю)
Основная ориентировка продукты — MS. Язык C.
Отредактировано 27.12.2016 20:55 Alexey.Os . Предыдущая версия .
Re[6]: Visual C# vs C++. Надо сравнить перспективы.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.16 20:54
Оценка:
Здравствуйте, velkin, Вы писали:

V>Тот же OpenCV


Wrappers in other languages such as C#, Perl, Ch, Haskell and Ruby have been developed to encourage adoption by a wider audience.


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


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

... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.