Различия между разработкой UNIX и Windows

Я программировал на C и С++ в Linux около 3 лет, а недавно был заинтересован в разработке коммерческого программного обеспечения для бизнеса. Скажем, я нашел нишу, где, я думаю, я мог бы быть успешным, но что они используют только Windows. Однако у меня нет никакого опыта с Windows API. У меня есть несколько вопросов:

Должен ли я изучать .NET?

Нужно ли мне изучать С#, чтобы использовать .NET, или я могу использовать С++?

Что такое мнение о компиляции с использованием GCC в Cygwin с опцией -no-cygwin? Я заинтересован в переносимости, и я волнуюсь, что если я начну писать для VС++, я могу привязываться к Windows.

Где хорошее место для моего основного чтения?

Что еще вы можете рассказать мне о переходе с Linux на Windows?

Ответ 1

Я столкнулся с теми же вопросами, и я так счастлив, что попробовал .NET. Я надеюсь, что эта информация поможет вам:

Должен ли я изучать .NET?

Я бы очень его перечитал.

Нужно ли мне изучать С#, чтобы использовать .NET, или я могу придерживаться С++?

Вы можете придерживаться С++, но я уверен, что вам понравится учиться С#, пожалуйста, попробуйте. Вы также сможете их смешивать. Основной задачей .NET является изучение всех библиотек, которые находятся там, чтобы помочь вам (так что вам не нужно изобретать колесо). Часто используйте msdn и пытайтесь получить карту основных классов и сборок.

Это весело, если вы пришли из С++, у вас не должно быть серьезных проблем.

Где хорошее место для моего основного чтения?

Я бы начал с чего-то легкого, посмотрел бесплатные инструменты Visual Studio, программное обеспечение и примеры здесь, перейдите к документации MSDN и скомпилируйте некоторые примеров в MSDN (как файлы доступа,...). Как вы можете видеть, вы найдете примеры С# и С++ рядом.

Тогда, конечно, книги, например, С# через CLR, в конечном итоге должны быть прочитаны.

Портативность

Убедитесь, что вы запустите свой код в Mono и нескольких платформах.

Будущие инвестиции

Инвестирование в изучение платформы .NET окупится. Сегодня стоит дорого изучить все новые инструменты там, где .NET вы знаете, что можете развиваться. Появляются новые функции и языки, но основные классы остаются такими, что ваши инвестиции на время/усилия больше контролируются.

Ответ 2

Должен ли я учиться .Net?

В зависимости от того, считаете ли вы, что это будет выгодно для вашей ниши, на которую вы смотрите. Например, если ваша ниша является настольным приложением, вероятно, неплохо начать работу, потому что, IMHO, гораздо проще разработать WinForms, графический интерфейс WPF, чем версия на С++,

Нужно ли мне изучать С# для использования .Net, или я могу использовать С++?

С# не является обязательным требованием, и использование С++/CLI позволяет использовать .NET при использовании С++. Тем не менее, я предпочитаю использовать только С++/CLI для компонентов, которые в большой степени ориентированы на взаимодействие между управляемым и собственным кодом. Это особенно хорошо для такого развития. Если вы переключитесь на более популярные приложения, я думаю, вы обнаружите, что С# или VB.Net будут лучше вас устраивать. Большинство онлайн-образцов ориентированы на эти языки. В частности, значительная часть инструментария сильно ориентирована на эти языки (для запуска WinForms и дизайнеров WPF).

Беспокоит о написании не переносного кода и привязывается к VС++

Я уверен, что это мнение будет немного непопулярным. Но вы уже упоминали, что ниша, которую вы ухаживаете, зависит от Windows. Какой смысл писать переносимый код, если вы только запускаете его в Windows? Это не смещение Windows, я бы сделал тот же самый аргумент, если платформы были отменены.

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

Ответ 3

Ответ зависит от типа программы, которую вы хотели бы реализовать.

Если вы хотите реализовать некоторую системную утилиту, тогда ответ будет почти таким же, как и в мире * nx: вам нужно будет программировать на C для достижения наилучших результатов и хорошо знать Win API.

С другой стороны, С#, вероятно, сегодня и сегодня. Его лучший язык, ИМО, из существующих языков dotNet.

Изучение Windows API - это определенно хорошая вещь, но я предлагаю использовать некоторые языки сценариев для более быстрого эксперимента (Lua с Alien library, Python, AutoIt и т.д.). Хорошая вещь в том, что вы, вероятно, знаете некоторые из них, исходящие из сообщества * nx.

Поскольку вы беспокоитесь о переносимости, я предлагаю вам использовать С# с особой тщательностью в отношении конкретных вещей ОС, таких как разделитель путей, чувствительность к именам файлов и т.д., вы можете найти интересные статьи об этом на сайте MonoDeveloper. Java также является хорошим способом - я не эксперт, но из того, что я знаю, его торговля отличается сложностью и скоростью, а также родным (с точки зрения С#) для лучшей переносимости.

Последний MonoDevelop позволяет даже загружать проекты Visual Studio, хотя я никогда не делал этого.

Ответ 4

Должен ли я узнать .NET?

Да.

Нужно ли мне изучать С#, чтобы использовать .NET, или я могу использовать С++?

Технически, нет, вам не нужно изучать С# для .NET.

Если я начну писать для VС++, я могу привязываться к Windows.

Это магазин Windows, верно? Кого волнует, если программы Windows переносимы, если ваша единственная цель - Windows?

Где хорошее место для моего основного чтения?

Stackoverflow.

Что еще вы можете рассказать мне о переходе с Linux на Windows?

Купите машину Windows и Visual Studio. Не пытайтесь использовать Half-Unix. Потратьте время и усилия на изучение Microsoft Way. Так же, как есть Unix Way, есть способ MS. Оба применяются к их соответствующим системам.

Удачи и получайте удовольствие!

Ответ 5

Вы собираетесь продавать коммерческое программное обеспечение Windows для бизнеса. Проверьте бизнес. Выясните, что еще они покупают, и проверьте рекомендованную информацию о платформе. Это даст вам хорошее представление о том, что у них есть, и к чему стремиться.

Вы, вероятно, захотите изучить .NET(эй, вам все равно придется изучать новую фреймворк), а С# не сложно будет узнать, хорошо ли вы на С++. Кажется, это стандартная среда разработки в настоящее время, вероятно, по уважительным причинам.

Если вы беспокоитесь о переносимости, напишите задний конец на С++ и изолируйте зависящие от системы части. Если вы собираетесь продавать программное обеспечение Windows для бизнеса, оно должно выглядеть как программное обеспечение Windows. Он должен вести себя так, как они ожидают. Не ставьте под угрозу пользовательский интерфейс для каких-либо преимуществ в кросс-платформенной платформе; вместо этого логически отделяйте пользовательский интерфейс. Вы всегда можете переписать его позже для других платформ.

Аналогично, используйте Visual Studio. Это хорошая среда, хотя иногда я пропускаю gcc, gdb и make, но, скорее всего, вы будете более осведомлены о том, что вы пишете программу Windows. Если вы используете Cygwin и gcc, вы, вероятно, не будете думать, как программист Windows, то есть он не будет выглядеть как программа Windows, а это означает, что у ваших потенциальных клиентов будут проблемы с этим, что означает меньше денег и больше шансов для поздно двигателем, чтобы захватить рынок.

Я обнаружил, что переход к программированию на Windows не составляет труда. Просто имейте в виду, что вы изучаете что-то новое, и что некоторые вещи являются стандартными в Windows, которые не находятся в Unix. Если вы не боитесь изучать новые вещи, вы сделаете все возможное.

Еще одно: приложения Unix часто печально известны для неуклюжих пользовательских интерфейсов. Пользователи Unix, как правило, более технические люди, которые не уделяют столько внимания тому, как выглядят вещи, и гораздо более прощают уродливые интерфейсы. В мире коммерческого программного обеспечения Windows выглядит и легкость в использовании, и фактические пользователи, скорее всего, будут людьми с дико неточной ментальной моделью компьютера, которая не признает строку кода Python, если она укусила их в лицо.

Вам понадобится достаточно привлекательный интерфейс, который может быть легко использован людьми, которые не заботятся о компьютерах как таковых. Это очень много для нас. Если вы не думаете, что что-то особенное в iPhone, вам очень нужна другая точка зрения. Читайте на пользовательских интерфейсах, находите кого-то еще с каким-то художественным смыслом и некоторой идеей удобства использования. Дизайн пользовательского интерфейса отличается от программирования, и у многих людей есть только один из них (здесь люди склонны быть опытными программистами и могут иметь некоторый навык пользовательского интерфейса).

Ответ 6

Вы можете использовать С++ для разработки .NET, но это будет несколько измененная версия С++ (С++/CLI). Честно говоря, вы можете просто изучить С#. (Лично я думаю, что С# - красивый язык, но мы идем.)

Намного больше поучиться с точки зрения самой структуры, чем языков, - хотя языки набирали черты, библиотеки растут еще быстрее.

Все это по-прежнему проще (IMO), чем изучение API-интерфейса Win32.

Для существенного чтения я бы рекомендовал "С# 3.0 в двух словах" и "CLR через С#". (Ссылки приходят, когда я не просрочу, укладывая стол на ужин...)

Ответ 7

Если вы заинтересованы в переносимости своего кода, вы должны производить как версию Linux, так и версию Windows в одно и то же время. Если вы попытаетесь написать код Windows, просто подумав о том, чтобы быть портативным, вы всегда будете в конечном итоге с компонентами Windows для вашего кода.

Если вы собираетесь использовать Windows, вы можете также изучить С#. С# на самом деле довольно круто; он вытащил больше Lisp функций, чем С++. Изучение это прямолинейно. Ваш лучший учебный ресурс - Google, хотя, если вы ученик книги, купите любую книгу на С#.

Ответ 8

Все зависит. Если вы решите использовать С++ и вы разрабатываете GUI-приложение, на нем можно выбрать несколько графических интерфейсов (wxWidgets, GTK), большинство из которых также переносимы на платформе. Если вы просто специально настроите Windows, наличие библиотек .NET в качестве зависимости не является проблемой, и вы не против времени, затраченного на изучение нового (но все еще знакомого) языка, тогда С# может быть лучше в вашем случай.

Ответ 9

Многие люди, похоже, игнорируют первоначальный вопрос "Различия между UNIX и Windows", и поэтому я немного об этом расскажу.


Относясь к изучению С#:

Думаю, вам нужно в какой-то момент выучить язык, например С# [1]. Вопрос заключается не в том, следует ли вам это изучать, но когда вы его узнаете.


Что касается альтернативных похожих языков на С#:

Java - это другой язык, очень похожий на С#. Java IMO является отцом С# и IMO, я предпочитаю Java.

Я предлагаю вам метафору, чтобы объяснить мою склонность к Java. У Явы был сын С#, который видел все успехи своего отца. Сын завидовал и пытался сделать то же самое, что делал его отец.

В этом случае MS является старшим сыном, пытающимся выставить старшего отца. Однако у выскочки С# отсутствует пара ключевых вещей IMO:

  • действительно кросс-платформенный
  • меньшая библиотека трюков, владеющая более короткой продолжительностью жизни С# (или, как мне нравится называть ее меньшим ящиком предварительно построенных legos)
  • Я предпочитаю Java для двух указанных пунктов.

[1 - footnote] Когда я говорю "язык, такой как С#", я имею в виду тот факт, что существуют другие языки с похожими функциями. В частности, такие функции, как сбор мусора, 100% -ный объект, ориентированный с самого начала (vs С++-хакинг в OO), встроенный в документацию типа xml (думаю, javadoc) и гибкий, чтобы делать много разных вещей.


Относительно изучения я должен изучить .NET:

Я только сделал небольшое/промежуточное количество С#, но из этой небольшой суммы я заметил, что .NET в значительной степени требуется, когда вы делаете что-либо С#. (Я понимаю, что С# очень инцестен с .NET и трудно отслаиваться.) Как я это понимаю, и я могу ошибаться... большинство/все стандартные библиотеки С# являются С#, и поэтому вам нужно иметь .NET. если вы делаете С#.


Вернуться к исходному вопросу "Различия между UNIX и Windows":

  • Разработка Windows не такая разнообразная ИМО... существует только одна среда разработки, и эта среда - это компилятор MS и MS IDE, упакованные как один в их Линейка продуктов Visual Studio.
  • ОС Windows сосредоточена на графических интерфейсах.
  • Разработка Linux более разнообразна с сотнями компиляторов/текстовых редакторов/IDE/и т.д. (Я говорю, что он разнообразен, но на самом деле большая часть разработки Linux на самом деле очень похожа на , используя набор общих инструментов: GCC/GDB/GREP/FIND/VIM/EMACS/CTAGS/CSCOPE и некоторый исходный репозиторий). Разработка
  • Linux сосредоточена на инструментах с командной строкой.

Ответ 10

Это отличный вопрос. Прежде всего вам нужно определить, нужно ли писать код кросс-платформы. Если вы это сделаете, то C/С++ - лучший путь, использующий некоторые библиотеки пользовательского интерфейса кросс-платформы.

Если нет, то я настоятельно рекомендую .NET 3.5 с помощью Visual Studio 2008 SP1. Я также рассмотрел использование WPF вместо WinForms для вашего пользовательского интерфейса.

Ни в коем случае не деинвестирование MSFT в разработку собственного кода; но С#.NET 3.5 WPF и связанные с ним инструменты - это будущее для разработки приложений - особенно для видов бизнеса Line Of Business.

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

Ответ 11

Какие библиотеки на основе Linux вы используете? QT? GTK? Скорее всего, есть порты Windows этих библиотек. Если вам нужно оставаться независимым от платформы, придерживайтесь того, что вы знаете. Если вы видите, что вам нужно быть только Windows, только тогда вы должны переключить решение .NET.

Ответ 12

Нужно ли мне изучать С#, чтобы использовать .NET, или я могу придерживаться С++?

Перейдите с С#. С# и .net - отличная комбинация.

Кроме того, не строго связанное с программированием, а немного Unix vs Windows. У Unix всегда была отличная оболочка, которая облегчила жизнь программисту. Windows теперь также имеет это. Узнайте немного о Powershell и о том, как писать cmd-let, это сэкономит вам много времени.

Powershell - одна из лучших вещей, которые вышли из Редмонда через некоторое время.

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

Ответ 13

нет. Не изучайте .NET - изучайте С#.. как будто что-то идет на площадку. как только вы его повесите.. вы сможете завершить проекты в 1/10 раз..

но с С#/.NET вы узнаете плохие привычки. Теперь я вернулся на С++. У меня был С++ 12years, затем С# 5 лет, теперь С++ 6 месяцев.

хотя для завершения проектов требуется около 6 раз дольше... (6 месяцев против 1 месяца), я чувствую, что код на С++ имеет художественное чувство... в то время как код С# является общим. как BestBuy.

Я полностью против С++/CLI или независимо от его имени. если вам нужно перейти на уровень CLR.. запустите, не переходите на С++.. или вы в конечном итоге тратите все свое время на работу с какой-либо произвольной конструкцией С#, например, на синхронизацию событий.

Мой следующий пункт назначения может быть .NET Powershell для управления моими серверными приложениями на С++.

Я сделал Unix для Windows примерно 10 лет назад.. Я попытался вернуться к FreeBSD или Linux... Я любил vi.. но VS - безусловно лучшая IDE. просто получите vs2010 pro + reshaper и прочитайте эти 2 книги. первый - это ядро ​​С#, но его .NET 2.0, что хорошо... потому что его проще всего начать писать код стиля С++. следующая книга прослужит вам много лет.

http://www.amazon.com/2-0-Practical-Guide-Programmers-Guides/dp/0121674517

http://www.amazon.com/gp/reader/0735627045/ref=sib_dp_pt#reader-link

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

также. нет причины НЕ писать код портала С++ в 2012 году. cmake + VS2010 + boost + crossroads-io