Выучите C # для перехода на C / C ++? - PullRequest
2 голосов
/ 29 апреля 2009

Хорошо, поэтому я только что провел вводный курс по информатике, и в школе был выбран язык Java (у меня есть базовые знания таких понятий, как полиморфизм, инкапсуляция и т. Д.). Я хочу изучать C ++, затем C (я слышал, что сначала нужно изучить C ++, а затем перейти к C), и мне было интересно, является ли C # хорошим переходным языком из-за сходства языков между Java и C #. Так поможет ли изучение C # вначале лучше понять C ++?

Я ценю любую помощь. Спасибо.

Ответы [ 9 ]

6 голосов
/ 29 апреля 2009

Сомнительный. C # не намного больше похож на C ++, чем Java. Он поддерживает указатели в unsafe коде, но кроме этого я не могу придумать ни одной причины, по которой он мог бы стать особенно хорошим мостом из Java в C ++. Кроме того, я подозреваю, что эта функция будет использоваться разработчиками, работающими в другом направлении. Если у вас есть другие причины для изучения C #, я бы сказал, что пойти на это, но в целях более простого перехода на C ++, я бы сказал, пропустить его.

5 голосов
/ 29 апреля 2009

Мне кажется, что самый простой переход с Java на C и C ++ - это сначала начать с C.

Почувствуйте указатели и неуправляемую память.

Затем, когда вы почувствуете сложные вещи в C и C ++, добавьте объекты и STL с C ++.

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

4 голосов
/ 29 апреля 2009

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

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

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

Моя окончательная рекомендация - перейти на C ++ и почувствовать это.

3 голосов
/ 29 апреля 2009

Изучите C в первую очередь, чтобы почувствовать неуправляемую память. Затем примените то, что вы узнали об объектно-ориентированной концепции, к этому неуправляемому миру с C ++. Познакомьтесь с отличиями C ++, такими как виртуальные методы, множественное наследование и так далее.

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

3 голосов
/ 29 апреля 2009

Если вы уже знаете Java, C # не научит вас больше о C ++, чем вы уже знаете.

2 голосов
/ 29 апреля 2009

Просто выучите C. Не беспокойтесь о «переходах»; если ваша цель - выучить C, просто прыгайте прямо к нему. Java имеет достаточно общий синтаксис с C, чтобы быть достаточно близким, чтобы вам не пришлось беспокоиться о C ++; вы бы просто отвлеклись от вещей C ++. С достаточно важен, чтобы учиться самостоятельно, не пытаясь «смягчить удар».

0 голосов
/ 05 марта 2012

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

Концепции, почти уникальные для C ++ и D:

  • RAII -> детерминированное управление ресурсами, которое трудно использовать неправильно и тривиально использовать правильно. Вы не узнаете, что в C # или C вы научитесь там только ручному управлению ресурсами.
  • Шаблон метапрограммирования -> Полнота Тьюринга во время компиляции. Хотя большинству программистов это не нужно, и это встречается реже; обычно вы найдете это в виде библиотек (наиболее яркий пример: шаблоны выражений)
  • Время компиляции, универсальное программирование с утиными типами -> C ++ поставляется со многими алгоритмами и контейнерами, не зависящими от типа. Обобщения C # строго типизированы и накладывают больше ограничений на клиентов.
  • Различные парадигмы: процедурное, объектно-ориентированное, универсальное и немного функционального программирования. C #, Java и C обучают только их подмножеству. В C ++ у вас есть возможность узнать, когда это наиболее уместно.
  • const правильность и библиотека, которая является правильной.

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

0 голосов
/ 29 апреля 2009

Java является объектно-ориентированной, C ++ может быть объектно-ориентированной, а C # в основном ООП, но в этом главное сходство.

C # сильно изменился по сравнению с Java, поэтому, если вы не посмотрите на C # для .NET 1.1, вы будете изучать язык, который сильно отличается от Java, и если ваша цель - C, то вы будете уходить от этого. 1003 *

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

Указатели были самой трудной частью C для меня, чтобы понять, как только я понял, что C был легок.

Если вы знаете C и уже знаете Java, C ++ будет меньше учиться.

0 голосов
/ 29 апреля 2009

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

РЕДАКТИРОВАТЬ: совет сначала изучать C ++, а затем C довольно безумно ... Я имею в виду, что C ++ - это расширенный набор C, после того, как вы узнали C ++, в C не нужно ничего изучать, кроме того, что ему не хватает по сравнению с C ++. Проще понять, почему вещи были добавлены по мере развития языка, чем догадываться, почему функции C ++ не были реализованы в C.

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