Да, изучите Win32, даже если вы никогда не собираетесь писать или поддерживать приложения C/C++.
Нет, не утруждайте себя изучением MFC/wxWidget сейчас. MFC действительно имеет исходный код, поэтому вы можете изучить, как некоторые классы реализуют оболочки для Win32, но это более интересно для программистов на C++. MFC снизилась в популярности, хотя Visual Studio продолжает поддерживать эту более старую технологию. Изучите MFC/wxWidget только по мере необходимости, если вам нужно сохранить старый код.
С C#/Java вы можете решить проблемы , но есть моменты, когда вам нужно будет использовать Win32 непосредственно для достижения какой-либо задачи. по целому ряду причин. Возможно, некоторые функции просто отсутствуют в .NET/Java или есть ошибка, которую можно избежать, перейдя непосредственно на Win32. Возможно, ваша конкретная проблема для решения имеет необычные или строгие требования, и вы бы подумали о написании части своего приложения в собственном коде с использованием некоторых вызовов Win32 по мере необходимости. Множество примеров/ситуаций действительно.
Еще одна причина, чтобы узнать Win32 является то, что как .NET/Java являются более высокие абстракции уровня (что само по себе хорошая вещь), но это действительно помогает понять внутренние по этим причинам:
- You получите оценку того, как много работает .NET/Java для вас. Конечно, вы можете делать то же самое в C/C++, но это требует гораздо больше работы. Рассмотрим эти две убедительные технологии .NET, WPF и WCF, которые много работают для вас.
- Вы лучше поймете управление ресурсами. В частности, как .NET, так и Java являются средами сбора мусора, но вы должны детерминистически освобождать ресурсы ОС (явно вызывающие Dispose), для таких вещей, как сетевые соединения, дескрипторы окон, объекты ядра и многое другое. Вы никогда не должны полагаться на сборщик мусора, чтобы выпустить эти объекты для вас, поскольку GC не является детерминированным.
- Отладка, зная внутренности, серьезно помогает здесь.
- Знание Win32 иногда может помочь объяснить дизайн API в .NET как минимум. Некоторые части .NET API смоделированы по API Win32, но некоторые части.NET API - это экстремальные улучшения над некоторыми поистине отвратительными конструкциями Win32 API (рассмотрим API для использования GDI, например).
- И, наконец, знание Win32 может помочь решить проблемы с производительностью в ваших приложениях.
Win32 не устареет, пока популярные операционные системы Microsoft не будут основаны на чем-то другом. В какой-то момент Microsoft заменила Win32/64 на .NET в Vista, но это не обошло стороной. Даже несмотря на то, что Win32/64 заменяет будущее, вам все же нужно понять OS SDK. Будучи уверенным, что вы будете выглядеть как продавец, я скажу, что обучение Win32 на самом деле поможет вам написать более надежные приложения и значительно поможет вашим навыкам отладки, двум важным вопросам, которые помогут вам оставаться на работе. Я бы никогда не нанял программиста окон, у которого нет хотя бы некоторого опыта работы с Win32.
Я бы предложил «Windows через C/C++» от Рихтера/Насарра, как пример хорошей книги на Win32 (да, очевидно, она ориентирована на C/C++, но эти авторы отлично справляются с объяснением Win32).
Надеюсь, это поможет.
Так что, будучи программистом на C#/Java, мне нужно изучить Win32SDK/MFC/wxWidget сейчас? – anonymous
Я бы сказал нет, я согласен с основополагающим фактом вашего первоначального вопроса: Win32/MFC/etc. устарел. – Timores
Я бы также добавил исключение для отраслей/приложений, где важна экстремальная производительность, такая как игры. – tloflin