C++ или Си, на каком языке программы выполняются быстрее?
Если ты на C++ пишешь в стиле C, скорость будет идентична. Если используешь высокоуровневые возможности C++, код будет чуть медленнее. Но разница будет крайне незначительная.
Но надо понимать, что для компилируемых языков выбор оптимального алгоритма влияет на скорость работы программы несравнимо больше, чем выбор языка. И Go-код профессионального программиста будет работать куда быстрее, чем C-код новичка.
Lol NoLolУченик (185) 3 года назад
Есть что то что нельзя сделать на си, но можно на с++, с++ построен на си, но все же может быть?
Программы на си весят меньше программ на с++?
Андрей Высший разум (405184) Lol NoLol, Нет, не существует задач, которые можно решить на C++ и нельзя на C. C++ даёт только дополнительные удобства написания кода, но никак не увеличивает область использования языка. Что касается размера, то это неоднозначно. В целом, С++ обычно будет больше. Но в C нет очень многого из того что встроено в C++ -потому тебе придётся писать больше кода. В результате твой код может оказаться больше готового кода C++.
Остальные ответы
Быстрее C только Assembler в руках тру красноглазика.
Lol NoLolУченик (185) 3 года назад
Ага, но я спрашивал про с++ и си
Андрей Ситников Просветленный (21270) Lol NoLol, код джуна на C++ будет по скорости не очень быстрый. C++ хорошо только руках красноглазиков. C быстрее всех и вся, кроме ассемблера.
Язык программирования С++: чем он отличается от С, где его применяют и подходит ли он для старта

C++: что это за язык, как он появился и какие у него преимущества
В 1980-х годах датский программист Бьерн Страуструп моделировал распределение вызовов между телефонными станциями. Работал он на языке С, похожем на машинный код в виде инструкций из двоичного кода.
Язык С не устраивал Страуструпа: был слишком медленным и не поддерживал объектно-ориентированное программирование — то есть не мог представить программу как набор объектов, не был понятным и наглядным.
Тогда Страуструп решил усовершенствовать С, скрестив его с другим ретро-языком Simula. В C++ появились классы, строгая проверка типов, inline-функции и другие элементы, которые упрощают и ускоряют программирование.
Сначала усовершенствования воспринимались просто как надстройка над базовым языком. Но очень быстро «С с классами» стал надежным рабочим инструментом для миллионов разработчиков.
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки


- Скорость. С++ обрабатывает данные быстрее большинства высокоуровневых языков типа Python.
- Кроссплатформенность. В отличие от многих языков, в том числе от еще более высокоуровневого С#, С++ не зависит от платформы: разработку можно легко перенести с одной операционной системы на другую.
- Универсальность. С++ поддерживает множество стилей программирования, например, процедурное программирование, объектно-ориентированное программирование. Также С++ предоставляет абстракцию данных. Благодаря этому его можно использовать для решения практически любых задач».
Читайте также: «История IT. 1970: События, люди, технологии»: Павел Калашников про запуск UNIX-времени, создание Pascal и патент на компьютерную мышь
Что пишут на С++
На C++ создают высоконагруженные приложения, драйверы, графические стандарты и игры. Например, на С++ написана система управления базами данных MySQL — основа для множества высоконагруженных приложений, — главные продукты Microsoft, культовые игры Counter Strike и World of Warcraft.
На С++ пишут код, который должен работать быстро и надежно, поэтому язык часто является основой для балансировщиков нагрузок на серверах и сложных графических алгоритмов. На C++ можно написать код для GPU — графического процессора. Так, например, создаются шейдеры для игр и графического ПО: они параллельно запускаются на GPU и позволяют без задержки выполнять сложные вычисления.
На С++ можно писать сложные, нетривиальные алгоритмы — для этого у языка есть огромная библиотека STL (Standard Template Library), где реализована большая часть алгоритмов и структур данных. Иногда С++ используют, чтобы оптимизировать код, добавить ему скорости и производительности или настроить приложение под конкретные платформы.

«Несмотря на универсальность, у языка есть и свои ограничения. Например, на С++ неудобно обрабатывать логи — файлы с информацией о действиях в программе — или собирать серверную статистику. Писать алгоритмы для машинного обучения или серверы для обработки запросов тоже будет сложно: в первом случае больше подойдет Python с большим количеством фреймворков, во втором — Java или C#».
Существует миф, будто С++ подходит только для сложных приложений, потому что даже простые операции, написанные на нем, выглядят как сложные команды. Но эти проблемы легко решить благодаря огромным библиотекам с открытым исходным кодом по С++, которые содержат много вспомогательных функций и серьезно упрощают работу. Поэтому писать на С++ можно что угодно: и большой высоконагруженный сервис, и несложные программы для вычисления площади или решения систем алгебраических уравнений.
Что нужно знать разработчику на C++

«Если вы планируете карьеру С++ разработчика — учите общие алгоритмы и структуры данных. Без них не обходится ни одно собеседование.
Если захотите писать код на С++ и заниматься сложными вычислениями, придется разобраться в параллельном программировании, когда команды выполняются одновременно несколькими процессорами. Также нужно будет изучить открытый стандарт для распараллеливания OpenMP. Инженерам по разработке ПО важно знать дискретную математику, статистику, алгоритмы.
Еще одно направление развития — компьютерная графика и геймдев, где нужно писать шейдеры и OpenGL. Здесь пригодится знание сопряжений с OpenCL — фреймворком для параллельных вычислений в графических процессорах — или CUDA, компилятора с расширениями, необходимыми для написания кода на GPU».
Читайте также: Что нужно знать программисту перед собеседованием и как успешно его пройти
Подходит ли C++ для начинающих
Есть еще один не менее распространенный миф о С++. Говорят, что это сложный язык, который не подходит для старта в профессии.
Легко понять, почему его называют непростым. Вот пример классической программы «Hello, World!» на С++:
//include using namespace std; void function_name () cout <"Hello, world" <endl; > int main() function_name(); // Вызов функции return 0; >
А это пример кода на Python:
print('Hello, World!') // => Hello, World!
Вот что говорит о сложности языка создатель языка Страуструп:
«C++ действительно непрост, и чтобы научиться его использовать, необходимо приложить определенные усилия. Но людям вообще хочется невозможного: еще более простого языка, с еще большим количеством фич и сохранением работоспособности существующего кода».
С++ может стать отличным стартом в IT, но только если вы готовы приложить усилия. В отличие от многих высокоуровневых языков — Python, Java — он не такой «удобный». Код не читается интуитивно, приходится самому работать с памятью: следить, чтобы не было утечки данных и освобождать место для работы программы. Для этого сначала нужно разобраться с основами устройства компьютера.
Но усилия многократно окупаются ростом уровня подготовки. С С++ можно начинать, если вы настроены серьезно и готовы копать глубоко. Этот язык даст отличную базу, которая поможет уверенно двигаться вперед и решать проблемы не только на уровне кода.

«На мой взгляд, C++ — оптимальный язык для старта, потому что он дает базу. Если человек хочет быть разработчиком и разбираться в этой теме глубоко, то не стоит начинать с языков с низким порогом вхождения, таких как Python или JavaScript.
Конечно, на их основе быстрее можно научиться программировать. Но из-за простоты этих языков можно легко упустить важные вещи и не знать в итоге, как устроена память, адресация и многое другое. Это сложно, но важно. По моему опыту, людям, которые начинали, скажем, с Python, потом сложнее глубоко погружаться и разбираться, почему программа так и не работает».
Можно ли стартовать сразу с С++, не изучая С
Эта тема — предмет вечных дискуссий в комьюнити. Одни — и в их числе сам Страуструп — говорят, что С учить не обязательно. Вполне можно стартовать сразу с С++, где не нужно работать напрямую с символами и памятью и тратить время на сложности, с которыми пришлось бы возиться в С.
Чтобы увидеть разницу, посмотрите, как выглядит на С создание email-адреса:
char* compose(const char* name, const char* domain) char* res = malloc(strlen(name)+strlen(domain)+2); // место для строк, '@', и 0 char* p = strcpy(res,name); p += strlen(name); *p = '@'; strcpy(p+1,domain); return res; >
А вот как это же действие выглядит на С++. Никаких сложных операций с символами и памятью:
string compose(const string& name, const string& domain) return name+'@'+domain; >
Другая точка зрения: на примере С лучше разбираться в базовых теоретических вещах, поэтому для тех, кто «копает глубоко», лучше подойдет последовательное изучение обоих языков.
Посмотрите, как разработчики решают задачу из олимпиадного программирования на языке С пятью разными способами. Судя по их решениям, кажется, что зная С, можно потом без проблем выучить многие другие языки — настолько хорошую базу знаний дает этот язык.

«Вопрос в том, чего вы хотите достичь. Если нужно глубоко разобраться в теме, то лучше сначала изучить C. С его помощью можно разобраться с базовой архитектурой компьютеров и теоретическими основами, включая побитовые операции, обращение с динамической памятью и числами с плавающей точкой. Мы обычно преподаем именно так: даем фундамент, а на второй год изучения переводим студентов на С++ с его особенностями и фишками».
Что популярнее: С или С++
Как С, так и С++ уже который год стабильно входят в топ-5 самых популярных языков. Причем одни индексы оценивают их по отдельности, другие включают в общую категорию.
Например, по данным индекса TIOBE в ноябре 2022 года С находится на втором месте, уступив самому популярному языку в мире Python. С++ отстал от С на два пункта и занял четвертое место.
В исследовании Stack Overflow за 2022 год, наоборот, С++ находится на шестом месте, а С — на седьмом.
А вот в индексе PYPL оба языка попали в одну категорию и находятся на четвертом месте, уступая другому родственному языку — C#.
Изучите основы языка C У Хекслета есть платформа для изучения основ программирования с нуля — Code Basics. Пройдите бесплатный курс по изучению языка С. Обучение на Code Basics начинается с азов, информация структурирована и подается от простого к сложному.
Сколько зарабатывает разработчик С++
На С++ пишут практически во всех крупных компаниях, поэтому он может стать хорошим инструментом для карьерного роста.
Уровень зарплаты зависит не только от опыта, но и от знания фреймворков, алгоритмов, библиотек. Исходя из вакансий , опубликованных на HeadHunter, в среднем джуниор-разработчик может претендовать на зарплату 120-150 тыс. рублей, а мидл- и сеньор-разработчик — от 200 тыс. рублей.


Как и с чего стартовать в С++: книги и ресурсы
Перед погружением в язык изучите базовую теорию по объектно-ориентированному программированию — это поможет быстрее погрузиться в тему.
Для тех, кто решит начать с изучения языка С:
- Герберт Шилдт « Полный справочник по С »
А если захотите стартовать сразу в С++, пригодятся книги:
- Герберт Шилдт « Полный справочник по C++ »
- Бьерн Страуструп « Язык программирования C++ »
- Бьерн Страуструп « Программирование. Принципы и практика использования C++ »
В процессе изучения языка не забудьте про библиотеки STL и BOOST:
- Питер Нортон Скотт Мейерс «Эффективное использование STL»
- Николай Джосьютис «C++ Стандартная библиотека. Для профессионалов»
- П. Плаугер, А. Степанов «STL. Стандартная библиотека шаблонов C++»
А еще здорово помогут:
- Сайт стандартизации С++
- YouTube-канал о С и С++
- Русскоязычное сообщество разработчиков
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки
Почему С++ быстрее многих языков программирования?
Достаточно интересно полностью понять, почему С++ настолько быстр по сравнению с условным Kotlin, Java или C#. Вопрос: Расскажите пожалуйста в деталях, почему именно так) Предполагаю, что это благодаря достаточно гибкой работой с памятью, но кажется, что сильно заблуждаюсь)
Отслеживать
задан 6 мая 2023 в 14:41
118 2 2 серебряных знака 15 15 бронзовых знаков
Потому что он компилируется в машинный код, который выполняется процессором напрямую, а не через виртуальную машину какую-нибудь
6 мая 2023 в 14:43
6 мая 2023 в 14:53
@aleksandrbarakin тут вопрос не про Python
6 мая 2023 в 14:53
@andreymal, какая разница? ответы там есть и они полностью покрывают смысл данного вопроса.
6 мая 2023 в 14:54
@aleksandrbarakin целых три принципиальных разницы: в питоне (подразумеваю CPython) есть GIL, нет статической типизации и нет JIT-компиляации — а в Java и C# всё ровно наоборот
6 мая 2023 в 14:56
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Во, я наверное хорошо смогу ответить, так как являюсь специалистом в C# и .NET
Но перед тем как вникать в суть, запомните основное правило: тормозит не язык, на котором вы написали код или среда выполнения, тормозит сам код, который вы написали.
И главная проблема плохого тормозящего кода в таких средах со сборщиком мусора, как .NET и Java, это отсутствие экспертизы в области поведения той самой машины управления памятью. Хочешь создать 200кк массивов для выполнения задачи — легко, код прост. Просто спавни объекты и ни о чем не думай, а сборщик мусора разберется.
В таких средах, где нет встроенного управления памятью, и надо его писать по большей части самому, приходится разбираться с этим до того как код дописать, потому что иначе будут утечки и прочие неприятности. Когда учишь С++, изначально познаешь базовые тонкости работы с памятью, а многие новички сразу начинают различать malloc и calloc , и осознавать, что выделение высвобождение памяти не бесплатно по времени и требует работы, переиспользуют память и т.д.
Чтобы научиться контролю аллокаций в средах типа .NET, требуется сначала написать много тормознутого кода, и наконец-то встретиться с проблемой низкой производительности или перерасхода памяти лицом к лицу. То есть вникание в управление памятью и суть работы сборщика происходит гораздо позднее. Поэтому при одинаковом объеме обучающих материалов, специалист по C++ узнает про нюансы производительности раньше, чем специалист по C#. И это нормально, это специфика среды, в которой работает код.
Поэтому вопрос «что быстрее, С++ или C#/Java» изначально не имеет смысла. Даже если столкнуть лбами двух супермегаэкспертов C++ и C# — неизвестно, чей код будет быстрее. Напишешь на C++ код, потом начнешь тестировать, на одном сервере победишь C#, на другом в другой архитектуре — проиграешь. Ну потому что JIT во время компиляции знает все тонкости процессора, выполняющего код, а компилятор C++ — не знает, он знает только архитектуру. Есть еще PGO (Profile-Guided Optimization) в CLR (Common Language Runtime/.NET) — великолепная шутка, которая может перекомпилировать с сильными оптимизациями код уже запущенного приложения в зависимости от интенсивности использования некоторых методов в коде (речь про последние версии .NET, но раньше ситуация была хуже). В C++ такого либо нет, либо оно достигается значительно тяжелее, чем в среде с JIT. И еще миллионы нюансов, которые никак не ответят на ваш вопрос однозначно.
И здесь можно повторить вывод, который написан жирным шрифтом выше, в самом начале. А утверждение «С++ быстрее многих языков программирования» по факту не соответствует действительности. Я могу на C# написать код, который будет например применять фильтр к Full HD картинке 2 секунды, а могу потом переписать его так, что станет потом 4мс, а качество машинного кода, который выдает JIT, будет не сильно хуже, чем генерит gcc/clang. Не забывайте, что компиляция байт-кода (или CIL) производится машиной в целом однократно, а затем уже работает только скомпилированная версия. Например вызываете какой-то метод 1000 раз, а компилироваться он будет только однажды. JIT — это не интерпритатор байт-кода, а компилятор.
C++ vs C#: Сравнение и противопоставление
C++ — это язык программирования среднего уровня, более быстрый и близкий к машинному коду. C# — это язык программирования высокого уровня, который легче изучить. И C++, и C# являются объектно-ориентированными языками программирования общего назначения.
Хостинг и Vps для вашего сайта от GoHost.kz
Как программист, вам необходимо освоить множество языков, чтобы работать над разными типами проектов. Погружаясь глубже в мир кодирования, вы, вероятно, столкнетесь с двумя широко используемыми языками: C++ и C#. Вы можете задаться вопросом, какой из них лучше и на какой я должен сосредоточиться? В этом руководстве мы рассмотрим вопрос C# и C++.
Семейная история программирования на C

С
C был разработан в 1970-х годах для работы с операционной системой UNIX, которая в то время только развивалась. C — это язык программирования гораздо более низкого уровня, чем основанные на нем языки, такие как C++ и C#. Это означает, что его можно использовать почти так же эффективно, как ассемблерный код, формирующий основные строительные блоки компьютерных инструкций. Однако, как и в любом низкоуровневом языке, написание чего-либо сложного на C может быть немного утомительным, и этот язык не так прост для понимания. C до сих пор используется в различных приложениях. Встроенные системы, такие как программное обеспечение, которое находится в любом промышленном оборудовании или бытовой технике, часто используют C, поскольку он не занимает много места. Он также используется для сценариев процессов в веб-приложениях на стороне сервера или везде, где небольшие, но быстрые программы должны работать в фоновом режиме. Практически на любом компьютере, который вы используете, где-то под капотом работает C.
С++
C++ был создан датским аспирантом по имени Бьерн Страуструп в 1979 году. Он хотел расширить возможности языка. Само название отражает то, как C++ выходит за рамки C. Суффикс ++ указывает на увеличение ценности по сравнению с оригиналом. Он был разработан как расширение C или C с классами. Это конкретно означало C с объектно-ориентированными возможностями.
С#
C# был разработан Microsoft в 2002 году. Хотя технически он основан на языке под названием .NET, он во многом обязан C. Он был разработан как конкурент Java и имеет некоторое сходство с этим языком. На самом деле его создание произошло потому, что Sun, владельцы Java, не хотели, чтобы Microsoft вносила изменения в их язык, поэтому Microsoft решила создать свою собственную альтернативу. C++ удовлетворил потребность в объектно-ориентированном программировании внутри C. C# был построен на успехе этого языка и Java, другого популярного объектно-ориентированного языка.
Важные особенности C++
- Машинно-независимый . Будучи машинно-независимым языком, вы можете один раз написать программу на C++, а затем запустить ее в любой операционной системе. Однако он не зависит от платформы, а это означает, что он создает разные файлы .exe на каждой платформе.
- Объектно-ориентированный . C++ является объектно-ориентированным, что облегчает чтение, запись и устранение неполадок, а также упрощает внесение изменений без необходимости изменения всей структуры кода.
- На основе компилятора . Код, написанный на C++, компилируется, после чего он транслируется непосредственно в инструкции, которые машина может интерпретировать напрямую.
- Нет автоматического сбора мусора. C++ не имеет автоматической сборки мусора, а это означает, что вам придется вручную выделять и освобождать память в своих программах.
- Промежуточный уровень. Он считается промежуточным языком, потому что упрощает код и запускает его независимо от машины, но он также зависит от аппаратного обеспечения или языков машинного программирования.
Важные особенности C#
Некоторые из основных различий между C# и C++ включают способ компиляции и управление использованием памяти. Продолжайте читать, чтобы узнать о некоторых основных функциях C#, которые помогут углубить ваше понимание этого языка.
- В основном используется для Windows . C# был разработан как конкурент Java для Windows, поэтому он редко используется для других операционных систем.
- Объектно-ориентированный . C# также является объектно-ориентированным языком, в котором как данные, так и функции, работающие с данными, сгруппированы вместе как объект. C# считается компонентно-ориентированным языком программирования. Это означает, что C# имеет особый уклон в сторону повторного использования старых компонентов.
- Компилируется в CLR . Код C# компилируется в Common Machine Runtime или CLR, который интерпретируется Just In Time (JIT) в ASP.NET.
- Автоматическое управление памятью . C# автоматически обрабатывает управление памятью с помощью сборщика мусора.
- Язык высокого уровня . C# использует синтаксис, напоминающий человеческий язык, и имеет высокий уровень абстракции от машинного кода.
C# и C++: ключевые сходства
Одно из ключевых сходств между C++ и C# заключается в том, что оба языка являются производными от C. Это означает, что их синтаксис и использование символов уходят корнями в C. Кроме того, оба языка являются объектно-ориентированными и поддерживают полиморфизм. Другое важное сходство заключается в том, что оба они являются компилируемыми языками.
C# vs C++: ключевые отличия
Одно из ключевых отличий заключается в том, что в C++ нет автоматической сборки мусора, а это означает, что вам придется вручную выделять и освобождать память в своих программах. C# автоматически обрабатывает управление памятью с помощью сборщика мусора. C++ не предупреждает пользователей о каких-либо ошибках перед компиляцией при соблюдении синтаксиса. C# предупреждает пользователей об ошибках компилятора.
Сравнение С++ и С#

Хотя у них общий предок, C++ и C# стали очень разными языками. Как указывалось ранее, C# — это язык более высокого уровня по сравнению с C++ или C. Продолжайте читать, чтобы узнать больше об их приложениях, производительности и причинах популярности каждого языка.
Популярность
По данным Statista, и C++, и C# по-прежнему входят в десятку самых популярных языков программирования среди разработчиков в 2023 году. Оба языка завоевали солидную репутацию в сообществе разработчиков. C++ по-прежнему популярен для разработки игр благодаря своей высокой производительности, в то время как C# по-прежнему широко используется для веб-приложений и настольных приложений.
Производительность и скорость
При сравнении C# и C++ по производительности и скорости важно помнить, что выбор будет зависеть от типа проекта, над которым вы работаете. В общих чертах, код C++ будет выполняться быстрее, чем код C#. Это делает его лучшим выбором для приложений, где скорость является неотъемлемой частью взаимодействия с пользователем. Однако с точки зрения скорости разработки C#, как правило, быстрее.
Языки высокого уровня, такие как C#, предназначены для сокращения времени написания кода за счет абстрагирования множества скрытых процессов. Так что, если вам нужно быстрее обрабатывать числа в реальном времени, C++ — это то, что вам нужно. Если вам нужно что-то быстро собрать, используйте C#.
Разработка игр
Что касается вопроса о C++ и C# для разработки игр, вы должны знать, что оба языка являются жизнеспособными вариантами, причем C++ берет верх. Популярные игровые движки, такие как Unreal или GameMaker, используют C++ благодаря его лучшей производительности и более эффективному управлению памятью. C# — это вариант для разработки игр, если вы хотите писать код специально для экосистемы .NET или для механизмов разработки, таких как Unity, Wave и Stride.
C# vs C++: что выбрать?
Теперь, когда вы знаете разницу между C# и C++, что следует изучить в первую очередь? C# обычно считается более простым языком для изучения по сравнению с C++ из-за его статуса более высокого уровня и удобства использования платформы .NET.
Оба языка стоит изучать для возможности трудоустройства в области разработки программного обеспечения или информатики. Если вы хотите заняться более фундаментальной обработкой чисел и низкоуровневыми вычислениями, C++ будет хорошим местом для начала. Если вы хотите сразу же создавать приложения или видеоигры, обязательно начните с C#.
Часто задаваемые вопросы о С# и С++
C# легче выучить, чем C++?
Да, C# обычно считается более легким для изучения, чем C++. В то время как оба могут быть сложными для абсолютных новичков, C++ в целом является более сложным языком, что приводит к более крутой кривой обучения.
В чем разница между C++ и Visual C++?
Разница между C++ и Visual C++ заключается в том, что первый — это язык программирования, а Visual C++ — интегрированная среда разработки или IDE. Visual C++ — это компилятор для C и C++.
Каковы некоторые различия между C++ и Java?
Основное различие между C++ и Java заключается в том, что C++ является компилируемым языком, а Java является одновременно компилируемым и интерпретируемым языком. Другое важное отличие заключается в том, что Java не зависит от платформы, чего нельзя сказать о C++.
С# лучше, чем С++?
C# лучше C++ с точки зрения простоты использования и скорости создания кода. Однако C++ лучше с точки зрения производительности, что делает его лучшим вариантом для разработки приложений, где скорость является важным фактором.