Автор Беркут задал вопрос в разделе Другие языки и технологии
Какой язык программирования лучше изучать: C++ или C# ? и получил лучший ответ
Ответ от Krab Bark[гуру]
C# проще, C++ универсальнее, поддерживается на многих платформах, скомпилированные с него программы выполняются быстрее.
Ответ от =Serge=[гуру]
Ну как бы оба надо знать.
А начать лучше с С++.Вот с этой книжки:
Ну как бы оба надо знать.
А начать лучше с С++.Вот с этой книжки:
Ответ от Александр Свиридов[гуру]
Так программы на 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# совсем не медленнее чем на С++.
Что острее? Кухонная ложка или кухонный нож?
Чем лучше обрабатывать садовый участок - граблями или лопатой?
Когда вы используете приложение на 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 код. да и вообще, на любую фразу: "а вот там это быстрее... ", можно найти решение как сделать это быстро тут. Просто знание языка хорошее нужно, знание ОС, время.
как по мне, так некорректное сравнение. сами выбирайте что вам нужно. попробуйте и то и другое, а потом решите, что больше нравится. ссылки на объекты и в 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++ компилятор.
минусы - в виду своей универсальности написание пользовательских интерфейсов весьма трудоемко и мучительно.
Мой вам совет изучайте С++, но не на 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++ компилятор.
минусы - в виду своей универсальности написание пользовательских интерфейсов весьма трудоемко и мучительно.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Какой язык программирования лучше изучать: C++ или C# ?
Что легче Java или C++ или С# или С
C++ это расширенный C (не совсем так, но почти).
На мой взгляд, изучать С++ вообще не надо,
подробнее...
спросили в C++ Дельфы
Какой язык программирования лучше: C++,Delphi или Python
Смотря какие игрушки.. . Если что-то кроссплатформенное - то C++ или Python, но Python полегче в
подробнее...
Какой язык программирования лучше: C++,Delphi или Python
Смотря какие игрушки.. . Если что-то кроссплатформенное - то C++ или Python, но Python полегче в
подробнее...
спросили в Интернет
Кб/с - это байты или биты? ну я совсем чайник!
кб, /c или Кб/с- это килобиты, кБ/с или КБ/с это
подробнее...
Кб/с - это байты или биты? ну я совсем чайник!
кб, /c или Кб/с- это килобиты, кБ/с или КБ/с это
подробнее...
C++. Типы данных. Создание типа данных.
Минимальная граница для адресации процессора - 1 байт. Рекоммендуемая - 4 байта.
Если нужна
подробнее...
спросили в LUG
log a (b) x log a (c) как упростить? жду помощи
Основания логарифмов - не ясно
Если а - основание, то
log(a) b * log(a) c - не
подробнее...
log a (b) x log a (c) как упростить? жду помощи
Основания логарифмов - не ясно
Если а - основание, то
log(a) b * log(a) c - не
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
DVB-T/T2 или DVB-C? Какой тюнер мне нужен?
У вашего провайдера нет дополнительного оборудования. Сигнал поступает по коаксиальному кабелю в ТВ
подробнее...
спросили в SATA Express Studio 4°C
Я нашёл в сети компилятор C-Free, он нормальный? Для новичка пойдет?
> C-Free 5 Issued! (Jan. 4th, 2010)
> C-Free can be #yahrefs496860# and evaluated for 30
подробнее...
Я нашёл в сети компилятор C-Free, он нормальный? Для новичка пойдет?
> C-Free 5 Issued! (Jan. 4th, 2010)
> C-Free can be #yahrefs496860# and evaluated for 30
подробнее...
3 размер груди это какой?ну например в соответствии с размерами как 34-38/a/b/c?
80 C или 75 C - вот такой примерно (числа - это обхват под грудью в
подробнее...
Как в Internet Explorer сделать минимальный уровень безопасности для всех зон, или отключить безопасность вообще?
"Другой браузер не предлагать. "
У всех браузеров БЕЗОПАСНОСТЬ ВЫШЕ, они Вам не подойдут.
подробнее...
java перспектива какая? Или конкуренты лучше?
перспектива у java очень большая. Хотя надо отметить что лет 5-10 назад этому языку предрекали
подробнее...
спросили в Интернет
Что больше Мбит/с или Гбит/с? Какова нормальная скорость?
Бит в секунду, бит/с (англ. bits per second, bps) — базовая единица измерения скорости передачи
подробнее...
Что больше Мбит/с или Гбит/с? Какова нормальная скорость?
Бит в секунду, бит/с (англ. bits per second, bps) — базовая единица измерения скорости передачи
подробнее...
Delphi vs C++
Нет языка лучше или хуже. С++ гибче, поэтому распространённее. Он же сложнее в изучении, однако,
подробнее...
спросили в Qt
Библиотеки для C++. Посоветуйте библиотеки для C++, позволяющие писать программы с окнами и с трехмерной графикой.
Qt -- QGLWidget
wxWidget -- wxGLCanvas
В простейшем случае на WinAPI + OpenGL/Direct3D
подробнее...
Библиотеки для C++. Посоветуйте библиотеки для C++, позволяющие писать программы с окнами и с трехмерной графикой.
Qt -- QGLWidget
wxWidget -- wxGLCanvas
В простейшем случае на WinAPI + OpenGL/Direct3D
подробнее...
спросили в 1259 год
Скажите что лучше взять? Видео камеру с жестким диском, с флешкой или с диви или минидиви... что посоветуете?
Я бы советовал или Кэнон, или Сони. Вобщем то достаточно авторитетные бренды в видео. Выпускают и
подробнее...
Скажите что лучше взять? Видео камеру с жестким диском, с флешкой или с диви или минидиви... что посоветуете?
Я бы советовал или Кэнон, или Сони. Вобщем то достаточно авторитетные бренды в видео. Выпускают и
подробнее...
Почему данные делятся на биты или байты? И почему нельзя взять за основу что-нибудь одно?
В БИАХ чаще всего измеряют скорость передачи ИНФОРМАЦИИ
а в БАЙТАХ объем информации на
подробнее...