c или



Автор Беркут задал вопрос в разделе Другие языки и технологии

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

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

Ответ от =Serge=[гуру]
Ну как бы оба надо знать.
А начать лучше с С++.Вот с этой книжки: 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 Кб...

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

Ответ от Norton[гуру]
Мой вам совет изучайте С++, но не на 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++ компилятор.
минусы - в виду своей универсальности написание пользовательских интерфейсов весьма трудоемко и мучительно.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Какой язык программирования лучше изучать: C++ или C# ?
Операторы в C и C++ на Википедии
Посмотрите статью на википедии про Операторы в C и C++
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*