Программист Linux / C ++ для C # / Windows программист - PullRequest
12 голосов
/ 25 сентября 2008

Я уже некоторое время кодирую исключительно для Linux с C ++. В моей нынешней работе это магазин Windows с основным языком C #. Я переучился на использование Visual Studio вместо emacs (основная причина - встроенный отладчик в VC, режим emacs в VC), настройка Cygwin (так как я не могу жить без оболочки) и перехватывание веревок управляемого языка. Какие инструменты, книги, веб-сайт (помимо MSDN) или подводные камни, как вы думаете, я должен проверить, чтобы сделать себя более эффективным кодером Windows / C #?

Ответы [ 7 ]

15 голосов
/ 25 сентября 2008

Первое, что нужно учитывать при переходе с C ++ на C #, это тот факт, что в большинстве случаев они имеют некоторый поверхностный синтаксис, но разница в парадигмах программирования становится все больше и больше по мере того, как вы углубляетесь в .Net.

Познакомьтесь с парадигмами программирования ядра C # перед тем, как начинать программировать, иначе вы можете попасть в ловушку написания программ на C ++ на C #, что далеко не лучшая идея на долгое время. Наиболее важные вещи, к которым нужно привыкнуть:

  • Автоматическое управление памятью и сборка мусора, включая шаблон удаления. Изучите основы и подводные камни.
  • Что такое классы, интерфейсы, структуры и примитивы в .Net и как они ведут себя по сравнению с C ++.
  • События, делегаты, свойства, лямбда-выражения - все это несколько новые концепции, пришедшие из C ++.
  • .Net дженерики и различия между шаблонами.
  • строки, массивы, пользовательские атрибуты, отражения, исключения и основы потоков в .Net, все они интенсивно используются повсеместно в .Net, и вы должны изучить их тонкости, чтобы эффективно их использовать.
  • Программирование GUI в Winforms и ASP.Net (и, возможно, после WPF), компоненты, управление, привязка данных. Модель .Net GUI.

Сначала начните с общей книги .Net, которая знакомит вас со всеми этими понятиями. Прежде всего, я рекомендую книгу по чтению учебников и статей, чтобы в конце у вас была большая полная картина .Net . Статьи в интернете могут этого не достичь. Лучшая общая книга .Net, которую я прочитал:

Professional C #, 3-е издание. Саймон Робинсон, Кристиан Нагель, Карли Уотсон, Джей Глинн, Морган Скиннер, Билл Эвджен

Professional C#, 3rd edition, ISBN: 978-0-7645-5759-0

И, во-вторых, поскольку вы из C ++, и вы привыкли работать близко к металлу и мыслить так, как близко к тому, как работает оборудование (необработанное управление памятью (указатели, выделения памяти и т. Д.), Я могу рекомендую одну книгу , которая действительно демистифицирует , что такое .Net и что он делает:

CLR Via C # Джеффри Рихтера

CLR via C#, Second Edition ISBN 9780735621633

Я не могу не подчеркнуть, насколько хороша эта книга для каждого разработчика .Net, особенно если он написан на C ++ и в то же время является одной из лучших книг .Net, которые я читал. Книгу приятно читать, и она охватывает темы:

  • . Модель выполнения .Net (от MSIL до собственного кода)
  • Управление памятью (как среда выполнения .net и сборщик мусора управляют памятью, компоновкой кучи, генерацией памяти, финализацией, кучей больших объектов)
  • Типы проектирования
  • Загрузка сборки, отражение, домены приложения
  • и многие другие ...

Это мой лучший совет Я мог бы дать любому желающий стать опытным разработчиком C # в кратчайшие сроки.

4 голосов
/ 25 сентября 2008

Поскольку вы уже знаете, как программировать на C ++, посмотрите:

A Введение программистов в C # 2.0 , Эрик Ганнерсон и Ник Винхолт

Хороший баланс между языком и общей информацией .net.

Аналогично: Essential .NET, том I: общеязыковая среда выполнения , Дон Бокс и Крис Селлс

Действительно интересная сетевая книга "под прикрытием" (но написанная для .net версии 1, поэтому может быть немного устаревшей).

2 голосов
/ 09 января 2009

Проверьте книгу Петцольда dotnet zero . Это может помочь.

2 голосов
/ 25 сентября 2008

Моим фоном были преимущественно C / Unix и Python с некоторыми Java и пыльными VB6 2000 года выпуска, когда я впервые использовал C #. Я был знаком с управляемыми средами выполнения из работы, которую я проделал с Java, и API .Net имеют вид, похожий на прежний MS API.

Я считаю Troelsen Pro C # и платформу .Net 2.0 действительно хорошим C # /. Net ресурсом. Сейчас есть более свежие выпуски.

2 голосов
/ 25 сентября 2008

Читайте о сборке мусора в .Net . Люди из C ++ привыкли к явному распределению памяти и управлению ею. В C # явного управления памятью практически не существует.

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

В зависимости от продукта, с которым вы работаете, вам, возможно, придется прибегнуть к вызову функций Win32 API из C #. Это делается через P / Invoke, так что вы можете прочитать об этом также. И если вам действительно нужно его использовать, http://pinvoke.net - очень полезная коллекция объявлений C # для большинства Win32 API.

Возможно, вы также захотите изучить хотя бы основы COM, так как очень часто приложения на C # / .Net выбирают / нуждаются в повторном использовании компонентов сторонних поставщиков, которые часто реализуются как компоненты COM. COM - это сложная тема. Мои любимые книги о COM и Essential COM от Don Box и Professional DCOM от Roger rimes. Я бы позаимствовал их из библиотеки, поскольку все, что вам нужно прочитать, это первые несколько глав (если вы не хотите углубляться в них).

Базовое понимание окон, сообщений и очередей сообщений необходимо, если вы собираетесь писать клиентские приложения. Вы будете использовать Winforms из WPF / XAML для этих целей, и обе технологии хорошо изолируют детали от вас; однако, чтобы написать хороший код, нужно знать, что происходит за кулисами. Я не уверен, что хорошая книга будет для этого, но MSDN имеет много информации.

0 голосов
/ 25 сентября 2008

Не должно быть основой CLR? И не должно ли быть неважно, какой язык .NET используется? Если я просматриваю документы .NET, я могу решить, хочу ли я видеть материал в VB.Net, C # или C ++. Итак, если вы знаете C ++, почему бы вам не использовать «управляемый C ++»?

С уважением Friedrich

0 голосов
/ 25 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...