Подтвердить что ты не робот

Есть ли какая-то причина. Программисту .Net windows нужно больше изучать C или С++?

Может кто-нибудь описать, какие преимущества программист C или С++ имел бы при программировании .NET при разработке для Windows?

4b9b3361

Ответ 1

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

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

Краткий, неполный список этих проблем включает в себя:

  • Взаимодействие с собственным кодом, особенно с Windows API
  • Когерентность кэша процессора (если вы мне не верите, google слайды из презентации PLINQ в PDC '09)
  • Значение типа производительности против производительности типа ссылки (это твердо связано с миром .Net, но изучение C/С++ делает различия между распределениями стека и кучи более явными в некотором роде).
  • Проблемы с планированием ядра (то есть, почему это плохая идея, чтобы отделить 1000 потоков).
  • Понимание сборщика мусора также лучше всего достигается путем написания нескольких схем управления памятью на языках, не связанных с мусором.

Ответ 2

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

Ответ 3

Только некоторые из них мне сразу говорят:

  • Скорость.
  • Переносимость.
  • Избегайте установки .NET.
  • В зависимости от того, что вы делаете, С++ может быть более продуктивным.
  • Вам никогда не придется обсуждать, является ли ваш стоматолог более болезненным, чем P/Invoke.

Ответ 4

Несмотря на то, что я отныне посвятил себя только программированию в .NET, я знаю, что будут случаи, когда я должен использовать interop для использования сторонних библиотек и, вероятно, также должен будет прорыть свой код, чтобы исправить ошибки.

Ответ 5

Честно говоря, это действительно будет полезно, когда вам нужно получить доступ к API Win32, но большинство этих подписей доступны в Интернете (например, pinvoke.net), и каждая новая версия .NET Framework включает больше оболочек для обычно используемых вызовов Win32 API.

Знание C/С++ стоит в большей схеме вещей, но если вы не используете его каждый день, вы быстро теряете знания!

Ответ 6

Другие рассмотрели необходимость взаимодействия с Windows API, но я также ошибаюсь в предположении, что вы можете гарантировать (или что вы обязательно хотите ограничить).NET-разработкой до конца своей карьеры.

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

Изучение основ - и я бы рассмотрел основные основы C/С++ - открывает путь для любого количества путей, включая .NET, и независимо от того, что следующая Great Framework.

Ответ 7

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

Некоторое параллельное программирование для максимизации мощности аппаратного обеспечения, такого как многоядерный процессор и графический процессор, все еще более ограничено языком более низкого уровня, таким как C/С++. Чтобы выбрать один, чтобы узнать сейчас, я сделаю С++. С++ является преемником C и содержит в себе более продвинутые и современные концепции. Я лично изучаю С++ и считаю, что переключение и работа в сложной среде C было довольно простым.

Ответ 8

Если вы программист Windows.Net, который хочет работать в Google когда-нибудь (не все мы?), то это поможет изучить С++.

Ответ 9

.NET отлично подходит для проектов на стороне сервера, но использование .NET для клиентского кода (приложения WinForm или служб Windows) во всех случаях может быть неприемлемым..NET имеет большое время выполнения, занимает значительное количество памяти и занимает значительное время для загрузки. Поэтому, если ваше приложение или услуга не является основным инструментом для конечного пользователя (например, программного обеспечения для резервного копирования),.NET может быть не лучшим выбором.

Ответ 10

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

Ответ 11

С++ имеет лучшие библиотеки для многих менее обычных задач. Math-related, особенно, когда он получает большое преимущество от доступа к SSE и некоторых других оптимизированных для процессора оптимизаций. Существует много протоколов и стандартов, основанных на С++, COM никуда не собирается - и сложный interop требует еще более эзотерического знания, чем просто писать С++.

С++ переходит в неприглядность, но дорога будет длинной.

Что касается общей производительности - в то время как можно быстрее писать код на С++, чем .NET, большинство программ на С++ не являются и многие из них на самом деле медленнее.

И для "понимания основ" ответы... выберите язык без мета-программирования шаблона для этого. Пожалуйста.

Ответ 12

Мое понимание .NET является основой для поддержки языков программирования и само по себе является не языком. Существует Visual Basic.NET, Visual C.NET и т.д.

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

Ответ 13

Если вы когда-нибудь захотите быть более чем одним хитом, узнайте C и С++.

Windows уйдет один день, потому что это происходит с корпорациями и продуктами. Возможно, мы получим Skylights вместо Microsoft, а .NET изменится на другую -.NEW. (что бы вы ни назвали).

Где же ваша .NET? Понял, как и ваша общая специализация - вы стали следующим поколением программиста COBOL, программистом только для наследия.

Единственный способ удержаться на вершине кривой - это знать принципы всего от сборки до SQL.

Но это тогда. Что теперь? Вы получаете возможность программировать игры Triple-A для Windows, чтобы иметь возможность писать драйверы для Windows, чтобы понимать мир Windows на уровне ядра, чтобы иметь возможность понять детали недостатков безопасности для Windows, чтобы быть в состоянии поддерживать старые приложения для Windows, чтобы иметь возможность наниматься для фирм, которые используют С++.

И эти причины - ИМО - достаточно.

Ответ 14

С++ часто безопаснее из-за его автоматического управления ресурсами. Разница в производительности (в пользу С++) обычно не имеет значения, но использование памяти фактически может (GC отнимает много ОЗУ).