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

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

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

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

 Steve Townsend22 сент. 2010 г., 13:04
+1 - предложить сообщество Wiki для этого

Ответы на вопрос(2)

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

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

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

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

 SmallChess22 сент. 2010 г., 07:13
Visual C ++ отличается от C ++.
 Andrew Guenther22 сент. 2010 г., 07:17
В чем разница?
 SmallChess22 сент. 2010 г., 07:40
Да, извините, я имел в виду Managed C ++.
 In silico22 сент. 2010 г., 06:51
Также нет такого языка как C / C ++. Это два разных языка. Кроме того, C ++ фактически активно поддерживается Microsoft. Команда Visual C ++ имеет свой собственный блог (blogs.msdn.com/b/vcblog) и выпустила Visual C ++ 2010, который частично поддерживает C ++ 0x, последнюю версию C ++. Если вы знакомы с C ++, лучше использовать C ++ для программирования Windows.
 Paul22 сент. 2010 г., 07:28
@ In silico: я уверен, что под C / C ++ он подразумевал C или C ++.
 snemarch22 сент. 2010 г., 15:48
@Paul: Visual C ++ - это компилятор, а IDE - это Visual Studio :) </ nitpick>
 In silico22 сент. 2010 г., 06:53
«Используя C ++, вам необходимо управлять экземплярами Windows». - Я также должен возразить против этого утверждения, так как существуют методы C ++, которые позволяют вам не беспокоиться об управлении ресурсами с использованием таких идиом, как RAII.
 In silico22 сент. 2010 г., 06:54
«Windows SDK - это низкоуровневая инфраструктура для разработки приложений специально для Windows». - это яне Возражать. :-)
 In silico22 сент. 2010 г., 08:05
О, хорошо, я неправильно понял эту часть.
 SmallChess22 сент. 2010 г., 07:23
Синтаксис похож, но Visual C ++ предназначен для Windows. Есть такие вещи, как дескрипторы, недоступные для C ++.
 user20670522 сент. 2010 г., 11:35
очень предвзятый ответ на C #, программисту, желающему заняться программированием на windows, следует предоставить факты и позволить им принимать собственные решения относительно того, что подходит им лучше всего.
 Paul22 сент. 2010 г., 07:29
@ Kinderchocolate: Visual C ++ - это IDE, а не язык программирования. Скорее всего, вы имеете в виду Managed C ++ или C ++ / CLI.
 SmallChess22 сент. 2010 г., 07:15
Ну, все, что вы кладете на C ++ для инкапсуляции низкоуровневых программ, например RAII, который вы надеваете, не является частью языка. Вы все еще должны это сделать, но просто где-то спрятаны.
 In silico22 сент. 2010 г., 06:50
«Как правило, вы будете использовать C / C ++ для программирования Windows только в том случае, если вы занимаетесь кроссплатформенным программированием или некоторыми низкоуровневыми вещами». - Я должен возразить против этого утверждения, так как люди (включая меня) широко используют 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 не имеет аналогов.

 Green16 сент. 2012 г., 13:15
Почему Windows SDK нельзя установить без .NET Framework? Я попытался установить SDK, но он остановился и выдал ошибку, что у меня не было некоторых компонентов .NET. Вот мой вопрос по этому поводуstackoverflow.com/questions/12446016/...
 Andrew Guenther24 сент. 2010 г., 07:11
Спасибо вам большое! Ваш ответ был удивительно полезным!
 Jerry Coffin22 сент. 2010 г., 15:17
@Steve: достаточно справедливо - модифицировано.
 Steve Townsend22 сент. 2010 г., 13:03
+1 - хороший ответ. Я думаю, что «вкус месяца» немного пренебрежителен, учитывая, что мы сейчас находимся на .Net 4.0 - это больше, чем просто увлечение Microsoft, это их стратегическое направление развития предприятия, заменяющее Win32 для всех, кроме самого специализированного использования. Для сравнения: .Net Remoting был «ароматом месяца», теперь они хотят, чтобы все использовали, например, WCF. Кстати, Windows SDK объединяет Platform SDK и .Net Framework SDK в один пакет.

Ваш ответ на вопрос