2010-03-29 3 views
3

Будучи программистом на C#/Java, мне действительно нужно знать факт: запущено ли Windows-программирование с Win32SDK/MFC/wxWidget?Программирование на Windows в C++

Каков статус популярности этих технологий в индустрии программного обеспечения сейчас?

Будучи программистом на C#/Java, мне нужно изучить Win32SDK/MFC/wxWidget сейчас?

ответ

3

Да, изучите Win32, даже если вы никогда не собираетесь писать или поддерживать приложения C/C++.

Нет, не утруждайте себя изучением MFC/wxWidget сейчас. MFC действительно имеет исходный код, поэтому вы можете изучить, как некоторые классы реализуют оболочки для Win32, но это более интересно для программистов на C++. MFC снизилась в популярности, хотя Visual Studio продолжает поддерживать эту более старую технологию. Изучите MFC/wxWidget только по мере необходимости, если вам нужно сохранить старый код.

С C#/Java вы можете решить проблемы , но есть моменты, когда вам нужно будет использовать Win32 непосредственно для достижения какой-либо задачи. по целому ряду причин. Возможно, некоторые функции просто отсутствуют в .NET/Java или есть ошибка, которую можно избежать, перейдя непосредственно на Win32. Возможно, ваша конкретная проблема для решения имеет необычные или строгие требования, и вы бы подумали о написании части своего приложения в собственном коде с использованием некоторых вызовов Win32 по мере необходимости. Множество примеров/ситуаций действительно.

Еще одна причина, чтобы узнать Win32 является то, что как .NET/Java являются более высокие абстракции уровня (что само по себе хорошая вещь), но это действительно помогает понять внутренние по этим причинам:

  1. You получите оценку того, как много работает .NET/Java для вас. Конечно, вы можете делать то же самое в C/C++, но это требует гораздо больше работы. Рассмотрим эти две убедительные технологии .NET, WPF и WCF, которые много работают для вас.
  2. Вы лучше поймете управление ресурсами. В частности, как .NET, так и Java являются средами сбора мусора, но вы должны детерминистически освобождать ресурсы ОС (явно вызывающие Dispose), для таких вещей, как сетевые соединения, дескрипторы окон, объекты ядра и многое другое. Вы никогда не должны полагаться на сборщик мусора, чтобы выпустить эти объекты для вас, поскольку GC не является детерминированным.
  3. Отладка, зная внутренности, серьезно помогает здесь.
  4. Знание Win32 иногда может помочь объяснить дизайн API в .NET как минимум. Некоторые части .NET API смоделированы по API Win32, но некоторые части.NET API - это экстремальные улучшения над некоторыми поистине отвратительными конструкциями Win32 API (рассмотрим API для использования GDI, например).
  5. И, наконец, знание Win32 может помочь решить проблемы с производительностью в ваших приложениях.

Win32 не устареет, пока популярные операционные системы Microsoft не будут основаны на чем-то другом. В какой-то момент Microsoft заменила Win32/64 на .NET в Vista, но это не обошло стороной. Даже несмотря на то, что Win32/64 заменяет будущее, вам все же нужно понять OS SDK. Будучи уверенным, что вы будете выглядеть как продавец, я скажу, что обучение Win32 на самом деле поможет вам написать более надежные приложения и значительно поможет вашим навыкам отладки, двум важным вопросам, которые помогут вам оставаться на работе. Я бы никогда не нанял программиста окон, у которого нет хотя бы некоторого опыта работы с Win32.

Я бы предложил «Windows через C/C++» от Рихтера/Насарра, как пример хорошей книги на Win32 (да, очевидно, она ориентирована на C/C++, но эти авторы отлично справляются с объяснением Win32).

Надеюсь, это поможет.

0

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

Есть два исключения: - Я работаю в компании, занимающейся программным обеспечением, и мы связаны требованиями наших клиентов, как правило, включая среду программирования. Итак, если у клиента есть только люди, которые знают, скажем, MFC, мы создадим проект MFC. Но это становится все реже и реже. Если у нас есть выбор, мы пойдем с .NET или Java. - У вас есть команда с опытными людьми в этих старых технологиях, и они довольно продуктивны для них.

+0

Так что, будучи программистом на C#/Java, мне нужно изучить Win32SDK/MFC/wxWidget сейчас? – anonymous

+0

Я бы сказал нет, я согласен с основополагающим фактом вашего первоначального вопроса: Win32/MFC/etc. устарел. – Timores

+0

Я бы также добавил исключение для отраслей/приложений, где важна экстремальная производительность, такая как игры. – tloflin

5

Я думаю, что изучение Win32 SDK полезно, потому что оно помогает понять, как работает Windows внутри. Я узнал о том, что крючки и подклассы очень увлекательны. Поэтому, если это вас интересует, вы должны пойти на это. Однако вы, вероятно, не должны нуждаться в, чтобы знать Win32. Сегодня это еще не устарело, но может быть и в будущем.

Я никогда не интересовался MFC, потому что ему нужна платная версия Visual Studio.

+0

Согласен. MFC/WxWidgets/и т.д.. «просто еще одна библиотека, которую можно изучать по требованию». Все эти библиотеки используют внутренне Win32 SDK, и это стоит того. –

0

Существует много работы для таких людей, как вы, поэтому я бы посоветовал не изучать их для работы. У нас есть некоторые приложения MFC, но это отчасти потому, что это то, что у нас было, и отчасти потому, что мы больше верим в производительность C++, и производительность для них очень важна.

Я бы не назвал C++ или MFC устаревшим, но в нем есть относительно менее новая работа. (Я бы очень хотел никогда не поддерживать другую программу Win32.) Новый стандарт C++ должен быть включен в 200B, и люди будут продолжать работать над этим, и Microsoft добавляет новые классы в MFC, так что очевидно, что существует постоянный интерес и продолжил работу.

Для профессионального развития я предлагаю вам узнать что-то другое, но это будет что-то вроде Lisp или Haskell, а не C++, и насколько я могу судить, нет никакой особой добродетели в понимании MFC.

3

Я думаю, что Win32/64 SDK никогда не устареет, поскольку драйверы или другие программы низкого уровня не будут записаны на .NET или Java из-за требований к производительности. Если вы собираетесь разрабатывать .NET, то MFC или wxWidget бесполезны для вас.

Я развиваю в .NET регулярно и искренне, каждую программу, которую я когда-либо создавал в .NET, называл некоторые функции API Win32. Поэтому изучение Win32/64 SDK не бессмысленно, но занимает много времени.

0

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

Многие небольшие устройства (телефоны) или игры требуют более легких решений. Если вы намерены работать в этих областях, вам обязательно понадобятся эти технологии.

Вам нужно решить, куда вы хотите отправиться. После того, как у вас есть карта, вы можете заложить подходящие предметы для поездки.

0

Я нашел Java ужасным для работы по сравнению с Win32. Кто-то должен сократить около девяноста процентов встроенных библиотек.

Я бы не назвал Win32 и такой устаревшей. Как говорили другие люди, это действительно зависит от приложения. Как разработчик игр, я использую Win32 меньше, а DirectX - намного больше. Я мог бы удвоить или утроить код Windows, и это все равно будет очень маленькой частью проекта.

Однако, если вы пишете интерфейсное приложение с относительно небольшим и легким бэкэнд, .NET может быть хорошим выбором для вас.

Что касается Haskell, я просто нашел, что это действительно страшный язык в почти любом отношении. Мне показалось, что оно служило абстрактным математическим определением «функционального», а не реальным определением «программируемый-в».

0

Win32 SDK в настоящее время используется на нишевых рынках, где по некоторым причинам нельзя использовать более современные технологии (унаследованные системы Win32, игры, системные драйверы, системы Windows Embedded). Если вы не планируете заниматься карьерой на этих рынках, я бы не стал изучать Win32 сейчас. Это не то, что бесполезно, и у вас нет новых вещей, чтобы научить вас, но давайте посмотрим правде в глаза, появилось так много новых технологий, даже когда мы говорим. У меня есть десяток технологий/языков в моем списке ожидания, чтобы начать учиться и экспериментировать. Вы можете, конечно, найти более интересные и более благоприятные для карьеры технологии, чтобы учиться.

0

Критически важные приложения (игры) обычно используют C++ Win32 API.

C# и .NET фактически построены поверх API Win32. Чтобы получить доступ к некоторым расширенным функциям Win32, не, выставляемый через C# и .NET. Вы используете Pinvoke, чтобы вручную открыть функцию C Win32 для вашего приложения C#.

Смежные вопросы