Неуправляемый C++ Win32 API или C#?
Добрый день,
Я думал о написании приложения, которое я могу или не могу коммерциализировать, в зависимости от того, насколько хороша окончательная заявка. Это как личный проект, с которым я надеюсь узнать больше о программировании, потому что в настоящее время я знаю больше всего только о C и C#. Вот почему я подумал начать этот проект как неуправляемое приложение C32 Win32. Проблема в том, что сложнее всего даже показать простое окно по сравнению с C#...
Сколько людей / компаний используют Win32 API и C++ в современном деловом мире? Как это работает по сравнению с C#?
Рассматриваемое приложение может в конечном итоге быть интегрированной средой разработки для определенного языка, но с такими функциями, как распознавание команд и проверка орфографии, уже встроенными.
Большое спасибо.
6 ответов
Кажется, что когда требуется производительность, люди готовы отказаться от C# для C++. Взгляните на эту историю "успеха". Уроки полета Evernote из.NET.
На нашем тестовом оборудовании Evernote 4 запускается в пять раз быстрее и использует половину памяти Evernote 3.5.
Evernote выбрал WTL и Chromium Embedded Framework. По сути, они повторно использовали Google Chrome в своих приложениях.
C# - это простой маршрут, который чаще всего используется Microsoft. Однако они не говорят, что все их заголовочные продукты (за исключением отдельных частей Visual Studio) написаны на C/C++. На самом деле, я бы сказал, что большинство основных программных пакетов, с которыми вы знакомы, написаны на C/C++.
Для вашего первого проекта и без опыта работы с C++ и Win32 я НАСТОЯТЕЛЬНО рекомендую вам использовать C#, так как вам будет легче выполнить что-то, тем самым приобретая уверенность и навыки по мере продвижения.
Я большой поклонник C++ под Windows, я занимался этим большую часть своей взрослой жизни. Тем не менее, если у вас нет опыта работы с C++, и вы хотите написать приложение для Windows, я бы посоветовал перейти с маршрута C# под.NET. Хотя я люблю нативный C++, мне действительно не нравились C++/CLI и ужасные ^
суффикс для ссылок.
Учитывая, что это личный проект, я бы не стал слишком беспокоиться о том, используют ли компании C++ или C#, но я скажу, что в наши дни легче найти разработчика на C#, чем разработчика на C++. И нет, я не предпочитаю один язык здесь другому, это просто кажется реальностью (по крайней мере, по моему опыту). Что касается разработчиков на C++/CLI? Они немного худые на земле:)
С C# вы определенно будете работать быстрее, чем с Visual C++/MFC/some-other-gui, но помните, что есть некоторые вещи, которые вы не сможете сделать в C# (и вам придется импортировать собственные вызовы win32 с помощью DllImport
), но я сомневаюсь, что вы еще столкнетесь с этими крайними случаями.
Я бы тоже выбрал C#, так как он гораздо более распространен в деловом мире (по крайней мере, на стороне GUI), чем неуправляемый C++/win32. Вы также получите желаемый результат быстрее, особенно если вы не знаете C++.
С другой стороны, C++ работает лучше (если написано правильно) - поэтому, если вы планируете какую-то интенсивную работу в своем приложении - возможно, C# просто не справится с этим (но я сильно сомневаюсь, что это так).
Наконец, но не в последнюю очередь - если вы планируете клиентов, которые по какой-то причине не имеют и не могут получить.NET Framework (или любую другую платформу, например Java), - тогда нативный код - ваше единственное решение.
Я использую C++ только несколько лет, но мне никогда не приходилось писать программы, требующие пользовательского интерфейса. Когда я это сделал, я попытался научиться использовать Qt, но обнаружил, что это немного болезненно, и в конце концов сдался. Недавно я только начал посещать занятия по C# .NET, и на первой неделе я уже начал разработку довольно продвинутого приложения для биллинговой системы моей компании.
Если вы уже были опытным ветераном C++ и предпочитали его C# .NET, то я бы сказал, что во что бы то ни стало. Однако в этом случае я настоятельно рекомендую вам использовать C#.NET по нескольким причинам.
1) Время, необходимое для выполнения чего-либо в C#, вероятно будет как минимум в 10 раз быстрее, чем в C++, независимо от используемого вами API.
2) Кривая изучения C++ поверх уже попыток написать приложение с пользовательским интерфейсом (что уже очень сложно в C++) сделает это очень долгим временем.