Когда мне понадобится Windows SDK вместо обычного API?
SDK включает в себя заголовки, библиотеки, инструменты и т. Д., Которые предоставляют вам доступ к API (и, в этом отношении, к .NET).Например, типичная программа на основе API будет начинаться с #include <windows.h>
- но без SDK у вас нет копии Windows.h для включения.Кроме того, SDK включает в себя компиляторы (те же самые фактические компиляторы, которые включены в текущую версию Visual C ++), компоновщики, отладчики и т. Д., Необходимые для фактической сборки программ на основе API.
И чтотакое .NET и зачем мне это нужно?
.NET - это пара вещей: виртуальная машина, которая выполняет код, который Microsoft называет «промежуточным языком» (IL).Это также (большая) библиотека кода в IL для всего: от управления окнами и рисования до коммуникаций, управления системой и т. Д.
Это понадобится вам в первую очередь, если вы пишете код на языке .NETтакие как C #, VB.NET и т. д.
Что такого особенного в C #, и стоит ли использовать его в C / C ++?
C # - любимый вариант Microsoft,так сказать.Это язык, который они придумали сами, что они обычно продвигают над большинством альтернатив как * * основной язык для использования в .NET (и, хотя редко упоминаются напрямую, хотя бы косвенно, для любой новой разработки).Первоначально были обвинения в том, что C # - это не что иное, как плагиат Java, но на самом деле у него есть несколько функций, для которых у Java нет аналога (например, делегаты), и с тех пор он добавил больше (например, интегрированный с языком запрос).
Относительно того, использовать ли C # вместо C или C ++, это, вероятно, будет сильно зависеть от вида кода, который вы пишете.C # предоставляет вам доступ к библиотеке .NET, которая содержит действительно огромный объем предварительно написанного кода.Если то, что вам нужно сделать в ваших приложениях, почти полностью попадает в диапазон, поддерживаемый библиотекой .NET, то возможность использования этого кода может значительно облегчить вашу работу на .Некоторые функции C # также не имеют прямого аналога в C или C ++, поэтому, если ваш код может получить большую выгоду от этих функций, C # может значительно облегчить такую работу.Наконец, Microsoft концентрирует большие усилия в своей инфраструктуре поддержки на C #, поэтому многие их инструменты (включая, но не ограничиваясь ими, Visual Studio) в основном написаны для поддержки C # и, как правило, делают меньше для поддержки других языков.
OTOH, если вы хотите сделать то, для чего .NET не предоставляет предварительно написанный код, ситуация может измениться довольно быстро.C # поддерживает механизм (называемый P / Invoke), позволяющий вам использовать такие вещи, как функции операционной системы, для которых .NET не предоставляет упаковщиков.К сожалению, P / Invoke, как правило, довольно болезненно использовать - если вам вообще придется его использовать, есть большая вероятность, что C ++ (или, может быть, даже C) будет более продуктивным.
Я долженТакже отметим, что, хотя кажется, что Microsoft выделила больше ресурсов для новой разработки C #, чем другие языки, они все еще явно занимаются новой разработкой C ++ и своей инфраструктуры приложений MFC.Нет сомнений в том, что с точки зрения огромного количества нового кода, они явно делают больше с .NET.Тем не менее, некоторые новых разработок в MFC оказываются в областях, в которых они не разработаны в .NET, поэтому у MFC есть несколько возможностей, для которых .NET не предоставляет аналога.