Что учить первым - C ++ / STL / QT или .NET / C # - если у меня есть ограниченное время на обучение и работу? - PullRequest
0 голосов
/ 01 сентября 2009

Я в настоящее время учусь в CS на 4-м курсе (всего 5). Я учусь и работаю. На работе использую ASP.NET. Поэтому, работая и учась, у меня не так много времени для изучения новых языков и техник.
Что вы предлагаете сначала изучить - C ++ / STL / QT или C # / LINQ / WPF? Я имею в виду, что C ++ и его библиотеки стабильны и не меняются так быстро, как технологии .NET. Поэтому, если я решу сначала изучить C ++, может случиться так, что к тому времени, когда я решу закончить изучение этого, технологии .NET будут настолько далеки, что я не смогу их поймать.
И наконец, в конце июня я получил 6 книг о WPF, WF, Astoria, EF и LINQ от Amazon. Так что, если C ++ пойдет первым, эти книги станут устаревшими, когда я решу включить их.
EDIT
Мне кажется, что я буду заниматься разработкой .NET для жизни и C ++ для себя. Но, тем не менее, я хочу изучить ОБА эти направления.
Это сложная часть - я изучаю .NET / C # почти год, а C ++ немного дольше. Итак, вопрос в том, что лучше всего изучать эти вещи?

Ответы [ 12 ]

11 голосов
/ 01 сентября 2009

C ++ - это набор инструментов. Труднее учиться и использовать, но более мощный. C # делает много рук и легче учиться, но более ограничен. Хочешь быть лучшим из лучших? Выберите C ++. Ты просто хочешь работу? Выберите C #

3 голосов
/ 01 сентября 2009

Я бы сначала убедился в том, что знаю C ++. Если вы студент CS, вам будет хорошо, зная это как основу для всего, что вы узнаете позже. Вы получите смесь низкоуровневых способностей (vanilla C), указателей, управления памятью и, позднее, ООП. Изучите некоторые из основ программирования, доступных на C ++, которые абстрагированы в таких языках, как Java и C #.

ИМХО, это как база лучше подготовит вас.

Я начал с unix & C. Изучил C ++ позже. Сейчас я работаю с Java, и я не могу поверить, как легко было изучать Java на этой базе.

JMHO.

2 голосов
/ 01 сентября 2009

Выбор между C # и C ++ зависит от вашей личности:

  • если вам нравится делать вещи быстро и (более или менее) плавно, выберите C #
  • если вам больше нравится овладевать ремеслом, тогда изучайте C ++

У меня сложилось впечатление, что работы на C # также лучше оплачиваются (я разработчик на C ++).

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

2 голосов
/ 01 сентября 2009

С C # вы можете запускать множество интересных вещей относительно быстро, не беспокоясь об управлении памятью.

C ++, с другой стороны, хотя это очень ценный навык, это hard . Это займет очень много времени, чтобы кодировать на C ++ ну .

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

2 голосов
/ 01 сентября 2009

Поскольку вы уже работаете с ASP.NET, вы должны быть немного знакомы с .Net Framework. Многие идеи ASP.NET (и декларативного дизайна пользовательского интерфейса) перенесены в WPF, что поможет вам совсем немного.

Я бы сказал, пойти на WPF / C #. Это, вероятно, позволит вам сделать больше за меньшее время, чем с C ++ / STL / QT (/ Boost?).

1 голос
/ 01 сентября 2009

Важно узнать и понять, что на самом деле происходит в машине . Память, процессор, ввод / вывод, устройства. Чтобы понять стек, кучу выделения, структуру структуры в памяти, вызовы виртуальных методов, потоки, кэш и тому подобное. C и C ++ намного ближе к металлу, и вы будете вынуждены понимать эти концепции. CLR находится на более высоком уровне абстракции и обычно прячется за кулисами. Но идея в том, что, как только вы узнаете , как работает машина, довольно легко увидеть за дымом и зеркалами CLR и понять, что происходит. Это очень помогает при отладке проблемы или при разработке приложения, когда вы понимаете систему и используете ее в своих интересах. Если вы просто изучите высокоуровневый управляемый стек, то это всегда будет своего рода VooDoo, и вы попадете в ловушку ошибочных предположений и неверных решений. Вот почему я считаю, что вы увлечены этой областью, которую вы должны изучить и использовать немного C / C ++.

Аналогичное рассуждение, но более слабое, касается нативного API ОС (т. Е. Win32 в Windows) по сравнению с управляемым эквивалентом. Первоначально фреймворк .Net представлял собой тонкую оболочку над Win32 API, и это было видно везде, где вам нужно было взять дескриптор из вашего управляемого объекта и выполнить p-Invoke, чтобы использовать какой-то API, оставленный нашим в управляемых библиотеках. , Но идеи эволюционировали, теперь есть целые фреймворки, которые выставляются только как управляемые (например, WCF), и вы можете проделать долгий путь при использовании Stream.BeginRead без зная GetQueuedCompletionStatus существует.

Кроме этого, изучение C ++ вместо изучения C # в значительной степени зависит от изучения стандартных библиотек и управляемой среды. Стандартные библиотеки намного более веселые imho, и они быстрее познакомят вас с передовыми концепциями. Вы можете перенести опыт понимания алгоритмов STL и удовольствие от того, чтобы ваш первый mem_fun_p позже работал с управляемым кодом (лямбда-выражения, linq).

Таким образом, я хочу сказать, что перед тем, как перейти к C #, нужно понимать C / C ++. Lerning C # и начало с использованием управляемого фреймворка easy . Потребуются годы, чтобы освоить , и похоже, что через несколько лет он будет на шаг впереди вас с новыми выпусками, которые сделают старую часть библиотеки устаревшей. Если вы в первый раз включите звуковой контроль над тем, что происходит внизу, у вас может не быть времени, чтобы наверстать упущенное позже.

1 голос
/ 01 сентября 2009

Хотя я лично поддерживаю C ++, это не для всех. Я говорю, что если вы хотите быть конкурентоспособным, и поскольку вы уже работаете с ASP.Net, тогда идите по пути .Net. Изучение этого будет отличаться от сегодняшнего резюме больше, чем C ++, если вы не хотите специализироваться на разработке "систем".

Мои $ 0,02.

1 голос
/ 01 сентября 2009

Если вы думаете, что в будущем вы будете больше заниматься разработкой .NET, и вам это интересно, я бы продолжал узнавать об этом. Но если ваша цель состоит в том, чтобы просто получить больше информации, выберите новый язык.

1 голос
/ 01 сентября 2009

Лучший ответ на этот вопрос зависит от вашего местного рынка труда (посмотрите на онлайн-доски вакансий, чтобы увидеть, что востребовано) и от ваших личных интересов (не стоит недооценивать это ... вы будете хороши и вещи, которые вас интересуют ).

В округе Ориндж, штат Калифорния, C # кажется гораздо более востребованным, чем C ++.

0 голосов
/ 01 сентября 2009

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

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