2011-02-05 4 views
4

Я знаю, что программирование на C++ сложнее C#. Потому что мы должны создать WNDCLASS и инициализировать его и использовать API Funcs и ...C# для win32 или C++

Но мой вопрос здесь, для программирования Windows, является ли C# лучше, чем C++?

Если да, то почему большие программы создаются с помощью C++.

+3

Что заставляет вас чувствовать, что с C# не создаются большие программы? Сколько больших программ вы когда-либо видели? –

+2

Какие программы были закодированы на C#? –

ответ

8

Ее не "больших программ", когда C++ предпочтение отдавалось C# управляемый код.

Существуют ограничения на то, что можно сделать с помощью управляемого кода, например, вы не можете писать драйверы оборудования или другие программы, которые взаимодействуют с оборудованием. Вы даже не можете получить доступ ко всем API Win32 из исключительно управляемого кода. Некоторые программы имеют высокие требования к производительности и поэтому более подходят для C++. Иногда C++ используется просто потому, что у компании, разрабатывающей программное обеспечение, есть опытные разработчики на C++. Иногда C++ используется, потому что разработчики не хотят, чтобы программное обеспечение зависело от платформы .NET (которая не установлена ​​из коробки в версиях XP и более ранних версий Windows). Иногда C++ выбирается так, чтобы можно было разработать кросс-платформенное приложение.

В широком смысле, C# проще в освоении и является более мощным и продуктивным языком &, чем C++/MFC/COM и т. Д. Но C++ - очень широкий инструмент и может создавать решения для множества очень разнообразных проблем: от написание операционных систем, систем реального времени, встроенных приложений, баз данных, программного обеспечения для бизнеса, настольного программного обеспечения, серверного программного обеспечения, библиотек/фреймворков и т. д.

C# лучше подходит для определенного класса проблем. Это в значительной степени ограничено работой в Windows (за исключением Silverlight & Mono). C# подходит для быстрой разработки приложений, что означает, что он лучше подходит для одноразового пользовательского программного обеспечения, такого как многие внутренние приложения, разработанные в крупных организациях. И, как я уже сказал, он больше подходит для разработки настольных и серверных приложений по сравнению с драйверами и другим программным обеспечением низкого уровня.

Если вы ищете, на каком языке начать обучение, разумным выбором будет: C, затем C++, затем C#. Это даст вам фундамент, который вам нужен, чтобы стать действительно хорошим объектно-ориентированным программистом, с пониманием того, как нам повезло с C#! Если у вас нет 10 лет, чтобы сэкономить, то продолжайте и начинайте с C#.Независимо от того, что вы делаете, не начинайте с C++, или вы, скорее всего, откажетесь от своей карьеры программирования в отчаянии и присоединитесь к цирку, где все имеет смысл.

+0

Я бы согласился с тем, что C# легче учиться и более продуктивно, но я бы сказал, что C++ - это более мощный язык. C# (в основном) ООП; C++ является многопараметрическим. В частности, C++ имеет встроенный функциональный язык, который может программировать компилятор как генератор кода (метапрограммирование шаблона). –

+0

Я думаю, что «мощный» - очень субъективный термин. Я думаю, что «мощный» означает «расширение прав и возможностей программиста», и это именно то, что я чувствую в отношении C#. Я чувствую, что могу что-либо сделать (в пределах моей проблемной области), и язык здесь, чтобы помочь. – saille

4

Если бы я мог начать с нуля все проекты C++, которые я сделал в прошлом, 99% кода будет в .NET. Особенно, когда речь идет о пользовательском интерфейсе. WPF, Winforms намного мощнее, чем MFC.

Какую программу вы будете развивать? Пожалуйста, уточните, а затем мы можем сделать рекомендацию.

** EDIT

Хорошим примером является сам Visual Studio. VS 2010 основан на WPF.

+0

Например блокнот ++, созданный с помощью C++. Что произойдет, если они
написали его C# не чистым api. –

+0

Взгляните на [SharpDevelop] (http://www.icsharpcode.net/OpenSource/SD/Default.aspx). Это IDE с открытым исходным кодом, написанная на C# – Marlon

+0

Я не эксперт с блокнотом ++, однако, если бы я его разработал, я бы использовал C#. Я не могу думать о какой-либо причине, почему я бы использовал C++. Имейте в виду, что вы можете легко вызвать любые неуправляемые dll C++ из C# (PInvoke). Написание кода пользовательского интерфейса намного лучше в .NET. – santiagoIT

3

C++ и C# оба действительно хорошие языки, сказав, что обе имеют свои собственные специальности.

C++ идеально подходит для приложений, в которых нуждается в высокой оптимизированной памяти и процессора, как драйвер развития verly устройства низкого уровня

C# гораздо выше, для создания бизнес-приложений, таких как бухгалтерский учет и баз данных приводится приложений, которые будут принимать возрастов, если вы пытаетесь выстраивая их в C++

Короче

C++ is for applications which require highly optimized memory and CPU usage. 
C# is far productivity and enterprise applications 
+0

Например блокнот ++, созданный с помощью C++.Что произойдет, если они
написали его C# не чистым api. Блокнот ++ - это редактор. –

+0

Они все еще могут создать приложение, такое как notepad ++ в C#, я бы предположил, что было бы более плавным, сетевые, онлайн-обновления были бы намного проще. С другой стороны, он мог бы потреблять немного больше памяти, которая по мнению доступна – RaM

4

Лучше? Лучше как? Полегче? Быстрее?

C++ - чудовище, которому нужно учиться, огромный и сложный, как есть. C# значительно «дружелюбнее» и легче работать. C# часто позволяет вам выполнять задачи быстрее и проще, чем C++, потому что язык и его структура делают для вас много работы. Это часть того, что делает C# лучше, чем C++, и что делает C++ лучше, чем C#.

Если вы позволите C# выполнить работу за вас, это означает, что вы, как программист, жертвуете некоторым контролем. Это то, что устанавливает язык высокого уровня, кроме низкоуровневого. Для , требующих приложений, программисты склонны выбирать язык, который обеспечивает необходимое количество абстракции, при этом обеспечивая необходимый контроль. Вот почему многие , требующие приложений (например, видеоигр), написаны на C++. Он имеет довольно большой набор функций высокого уровня, при этом все еще упаковывая мощность, чтобы тянуть действительно низкоуровневый код для ситуаций, когда вам необходим абсолютный контроль над оборудованием. Именно поэтому многие бизнес-приложения и другие менее требовательные приложения написаны на языке высокого уровня, таком как C#, поскольку эти приложения не подходят для низкоуровневых функций и могут безопасно пользоваться преимуществами высокоуровневых приложений, не беспокоясь о производительности штрафы.

В случае с C# все приложения, созданные с ним, запускаются в среде выполнения .NET. Это недостаток для программ, которые нужно быстро запускать, поскольку вы хотите быть как можно ближе к оборудованию. Таким образом, C++ выигрывает за , требуя приложений, где важна скорость выполнения или использование памяти. Также C++ можно использовать на очень большом количестве платформ, от ПК до кофейных машин (хорошо, сотовые телефоны, тогда), а C# официально ограничена платформами под управлением Microsoft Windows.

Что касается простоты разработки на Windows, C# является явным победителем. Имеются также фреймворки для C++, но они даже не близки к C#, когда дело доходит до того, чтобы сделать все быстро и просто. Тем не менее, вполне возможно написать сложные графические приложения для Windows на C++ без лишних ругательств.

В любом случае, надеюсь, вы видите, как мало смысла сравнивать языки, подобные этому. Это похоже на сравнение молотка с отверткой. Выбор языка - это выбор правильного инструмента для работы. Многие инструменты перекрываются - вы можете сделать почти то же самое в C++ и C#, что усложняет выбор. Если вы действительно хотите прочитать это (идя на «образованный выбор»), я предлагаю вам ознакомиться с отдельными языками. Если вы просто задаетесь вопросом, какой язык учиться, я предлагаю вам начать с C# и изучить C++, если вам когда-либо понадобится (или хотите).