Екатерина
Екатерина

Какой язык программирования лучше изучать: C++ или C# ?

АС
Александр Старченко

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

МН
Мария Николаева

Так программы на C# совсем не медленнее чем на С++.

Что острее? Кухонная ложка или кухонный нож?
Чем лучше обрабатывать садовый участок - граблями или лопатой?

Когда вы используете приложение на C# взаимодействующее с операционной системой, то оно вызывает код написанный на С++. Вызовы транслируются к WinAPI, и следовательно никакой код на C# не сможет работать дольше чем на С++.

Исключения есть, и они понятны.
1) в C# нет ассемблера, также как в С++ нет высокоуровневого объектно-ориентированного MSIL. Следовательно в C# вы не напишете код вычисляющий хэш CRC32 в 4-5 строк ассемблерных команд. Вы его напишете на C#, получите около 45 строк на MSIL. И пожалуетесь что тормозит. И верно. Ведь даже на С++ для этого применяют ассемблерную вставку.
2) в C# все сильно стандартизовано. Вы не можете создать ссылку на byte или boolean. И не можете создать ссылку на уничтоженный объект. Пока объект жив ссылка будет существовать. Когда ссылки не будет, то и объект умрет. Плюс это или минус? Нужно ли получать Exception при доступе к не правильной ячейки памяти?
3) в C# выделение памяти происходит при помощи виртуальной машины. А в C++ все вручную. Конечно, если вы бинарные поля упакуете и сделаете из них объекты то всё будет куда компактнее чем аналогичное в C#. Вопрос в том нужно ли вам это. Современные компы имеют от 4 до 8 гигабайтов оперативной памяти. И память продолжает дешеветь. Серверы продают с 32-64 гигами и выше.

о явных преимуществах C#
1) В С++ нет ASP . NET. А это ведущая технология создания веб сайтов. Нет также и WPF, нет silverlight, нет библиотеки 300 мегабайтов.
2) выделение памяти в С# происходит быстрее чем в C++, потому что она обычно упорядочена. При выдаче блока просто выдается следующий блок, а в С++ сперва ищется свободное место.
3) разработка C# быстрее, там и отладка проще, и механизмы выбрасывания исключений упрощены. Нет множественного наследования, нет ссылок на примитивные типы данных, нет проблем с мертвыми ссылками.

итого.
Если у вас целевая аудитория машины с 2 и более гигами памяти то выбирайте C#.
Если вы хотите писать код под процессоры с 8 кб памяти то используйте Си.

Если у вас цель создание GUI - вам в C#.
Если вы делаете только консольные приложения - достаточно и C++.

Если вы сторонник стандартизации и использования готовых программ - вам в C#. Там уже 300 мегабайтов кода.
Если вы сами хотите писать сортировку, искать как реализовать SSL. как сделать HTTP сервер.. . тогда вам в C++.

Кстати, ЕХЕ-шник у C# размерами от 8 кб, а у С++ наверное того меньше. Но С++ не имеет своей библиотеки, в программу придется затолкать тонну библиотек. И ваше простое приложение обязательно будет весить 5 - 40 мб.
Для C# это не реально много. Ведь там есть 300 мб готового кода, который предустановлен на все компьютеры. Сложная программа может занимать 10-20 Кб...

ЮЧ
Юра Черников

Мой вам совет изучайте С++, но не на VS, а на Borland С++ builder. Потом тихонько езжайте на gcc в Линукс. А еще я бы порекомендовал в дальнешем поинтересоваться Java

Начав изучать C# после C++ (просто C# появился уже потом) , я очень долго и много плевался:
1) Постоянное битье по рукам линейкой за отсутсвие break в case, за присваивание в if и т. д. и т. п. порождают примерно те же ощущения, как после XP перейти на Vista.
2) Стояла у меня задача обрабатывать сканы чертежей на А0-А3 формате. Кучи оберток на GetPixel() изрядно отравили мне жизнь при написании фильтров.
3) Запрещенное неявное присваивание вызывает скрежет зубовный и гору рефакторинга, когда вы пытаетесь, что-либо прицепить из ранее написанного или стороннего.
4) Кроссплатформенность С# на микрософте и заканчивается.

C# хорош для: - написания мелких программок, большая часть которых занимает интерфейс пользователя. Различные утилитки, учебные задания, АРМы на достать 3 параметра из БД.
Плох для ресурсоемких приложений, для различных промышленных применений, где объем продаж мал во времени, и увы каждые 3 года вам придется переезжать на новую винду, кривая реализация алгоритмов в .NET

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

ЮЧ
Юля Чагина

Ну как бы оба надо знать.
А начать лучше с С++.Вот с этой книжки:

Валерия Кулыбышева
Валерия Кулыбышева

как по мне, так некорректное сравнение. сами выбирайте что вам нужно. попробуйте и то и другое, а потом решите, что больше нравится. ссылки на объекты и в C# возможны. но но если они на unmanaged объекты, то чуток сложнее начинающим, путаются. насчет crc32, можно использовать Mono.SIMD, для ускорения или unmanaged код. да и вообще, на любую фразу: "а вот там это быстрее... ", можно найти решение как сделать это быстро тут. Просто знание языка хорошее нужно, знание ОС, время.

Похожие вопросы
Какой язык программирования следует начать изучать?
Какой язык программирования начать изучать?
Какой язык программирования стоит изучать?
какой язык программирования лучше изучать?
Язык программирования C#
Стоит ли изучать языки программирования гуманитарию?)
какой язык программирования лучше изучать, пасоветуйте
Какой язык программирования изучать?
Программирование на языке C
Я хочу начать изучать язык программирования "C++".