Когда мне нужен Windows SDK и для чего нужен .NET?
==================================================

Я студент, и после прохождения некоторых вводных курсов по программированию на Java, C и только что закончив книгу по C ++, я хотел бы начать разработку приложений для Windows.

Я сделал все возможное, чтобы пролистать Google и найти ответы, которые мне нужны, но я, кажется, в растерянности.

Когда мне понадобится Windows SDK поверх обычного API? А что такое .NET и зачем мне это нужно? Что такого особенного в C #, и я должен использовать это по сравнению с C / C ++?

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. Тем не менее,немного из новых событий в МФЦ, случается, в областях, которые они имеютне разработан в .NET, поэтому у MFC есть несколько возможностей, для которых .NET не имеет аналогов.



ний специально для Windows. Вы можете использовать его для своего развития. Тем не менее, API являются низкоуровневыми и немного сложными в использовании и обслуживании.

В качестве альтернативы вы можете использовать .Net. .Net - это фреймворк, который включает поддержку времени выполнения для вашего приложения. В нем много пакетов, я уверен, что вы найдете что-то полезное в .Net. .Net требует времени выполнения для выполнения и не компилируется изначально для платформы. Тем не менее, это проще для разработки программного обеспечения в основном потому, что API-интерфейсы более высокого уровня.

C # - это рекомендуемый язык для программирования под Windows, особенно для .Net. Не то чтобы это был единственный язык, вы также можете использовать C / C ++, но они не поддерживаются Microsoft активно. Например, если вы используете C #, создание приложения с графическим интерфейсом может быть сделано всего несколькими щелчками мыши. Используя C ++, вам необходимо управлять экземплярами Windows.

Как правило, вы будете использовать C / C ++ для программирования Windows, только если вы занимаетесь кроссплатформенным программированием или некоторыми низкоуровневыми вещами.