Язык программирования С++: чем он отличается от С, где его применяют и подходит ли он для старта
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 и командной строкой
- Выберите себе профессию или улучшите навыки
Что выбрать C++ или C#? С чего лучше начать?
Между собой оба языка очень похожи, при отсутствии опыта разобраться в различиях очень сложно. Статья поможет расставить всё по своим местам и укажет верный язык на основании поставленных задач.
Большинство программистов утверждают о необходимости начала изучения чистого C, но моё мнение – это пустая трата времени, которая не оправдается в будущем. Нет смысла изучать языки, которые уже давно устарели и были заменены на более перспективные, функциональные и интересные. Устаревшие языки не имеют нововведений, они практически не поддерживаются, а вакансии вовсе не появляются на различных биржах.
Единственная сфера использования – поддержание работоспособности проектов, которые ещё не перешли на обновлённые языки. Если проект качественный, он в скором времени обновится, иначе будет постепенно терять популярность, соответственно, все равно нет перспективы развития. При желании заняться изучением нового языка стоит предпочесть C++ или C# .
Особенности C#
После пропуска большого этапа «обучения» на Си , можно задаться вопросом куда же всё-таки направляться и какое состояние в сфере программирования на C# . При выборе этого языка стоит помнить, что программист строго привязан к операционной системе Windows, можно даже не учитывать преимущества Mono Develop, так как основной недостаток – полная зависимость от дальнейших действий Microsoft.
В большей части вакансии C# связанные с Asp.net – это веб разработка и всё тому подобное. Здесь уже выбор каждого. В отношении обучающего материала лучше сразу начинать с Шилдта, его способ описания ООП достаточно понятен и ясен, хотя и сам язык не вызывает особых сложностей, особенно если есть хоть какие-то знания. После его прочтения стоит перейти к Троелсену, который позволит почувствовать фундамент под ногами и даст более-менее приличные знания. После базового освоения языка можно дополнить информацию с помощью Рихтера, который детальнее раскроет особенности работы с .NET платформой.
Достоинства C++
Теперь стоит обратиться к изучению С++ , который хорошо показал себя за счёт абстракционного мышления. Иначе говоря, программист волен сам выбирать писать ли ему на высоком или низком уровне, изменяя способ написания в зависимости от задачи.
С++ уже позволяет писать программы, которые могут работать на разных платформах, с этой целью разработан Qt .
В отношении методичной литературы стоит посоветовать Страуструпа, его книга представлена в форме справочника, которая хорошо знакомит с принципами языка и методами работы. Когда с ним будет покончено можно перейти к Саттеру и Мейерсу, но для закрепления материала нужно обязательно использовать практические навыки. Этого уже достаточно для понимания языка выше среднего.
Не относится к теме статьи, но стоит также присмотреться к языку Java .
Если судить в целом, то все языки представляют собой только инструмент. Правильное использование – это залог успеха, состав мозгов и способ мышления помогают добиваться впечатляющих результатов всегда. Вовсе не обязательно изучать языки наизусть, напротив, заучивание даже плохо, достаточно всего лишь понимать принципы работы. Чтобы нам не углубляться в алгоритмы, стоит изучить книгу Кормена.
У каждого языка различаются сферы использования. Если акцент ставится на написание игр, лучше предпочесть С#, ведь язык применяется в основе распространённого движка Unity . Он позволяет создавать игры как с 2-мерной графикой, так и полноценные 3D. В противовес можно сказать, что С++ применяется в основе Unreal Engine , он отличается большей мощностью и требуется для написания масштабных игр для ПК.
Сравнение языков
1. Скорость написания
C# обеспечивает быстрейший старт в сфере программирования, прототип можно создать значительно быстрее. Если в приоритете лежит скорость изначальной разработки, стоит выбирать C#, который выигрывает у С++.
После создания инфраструктуры, подбора основных методов работы, подключения, изучения библиотек и настройки билда скорость приблизительно выравнивается, значительного преобладания на одном из языков не отмечается.
Вывод следующий, если цель стоит в создании небольшого проекта с малым бюджетом, стоит выбирать C#, так как это позволит сократить время и затраты. Для создания продолжительных, крупных проектов преимущество будет незначительным.
2. Кроссплатформенность
В отношении кросплатформенности С++ сильно превосходит конкурента, хотя и есть определённые оговорки. Придётся прибегнуть к дополнительным затратам и между некоторыми платформами отмечается бинарная несовместимость.
C# не кросплатформенный, существует разработанное решение со стороны на .net, оно позволяет связывать сразу несколько платформ. Изначально планировалось создание языка для кросплатформенного кодинга, но с течением времени направление развития было изменено.
Сейчас под Windows разработана достаточно полноценная инфраструктура на .net, а в остальных платформах такого решения не было запущено.
3. Библиотеки
Выбор между библиотеками можно сделать в пользу С++, так как не только их количество больше, но и ассортимент качественнее. За длительную историю разработки удалось достичь хорошей оптимизации и было устранено большее количество недочётов. Многие библиотеки находятся в открытом доступе, могут использоваться на разных платформах и имеют открытый код.
Даже с учётом ряда положительных сторон всё не настолько радужно, ведь многие библиотеки С++ разработаны по различным структурам, порой даже без них. Нередко встречается структурно-процедурная форма построения, причина такого недостатка – перенос библиотеки с Си.
Дополнительным минусом можно выделить формирование и переопределение основных типов данных. В множестве библиотек С++ возникает необходимость создавать собственные контейнеры, изменять базовые типы данных и строки. Со стороны логического обоснования – это обеспечивает повышенную производительность, улучшение кросплатформенности, устранение недостатков кода. Несмотря на очевидные позитивные стороны вопроса значительно снижается удобство пользования и красота кода.
Среди базовых библиотек C++ выбор не такой обширный, по функционалу С# превосходит их. Основная сложность и задача программиста – это правильный подбор библиотек и это потребуется даже при выполнении небольшого проекта.
4. Стоимость поддержки
Значительной разницы в цене поддержки между обоими языками не отмечается. Важно осознавать, что отдельные баги внутри приложений на С# сложно поддаются устранению методами .net. Если потребуется исправление багов, цена резко увеличится, а поддержание станет дороже. Если коснётся рефакторинга, то чаще всего проекты С# проще поддаются изменению.
Лично я не могу со 100% уверенностью всем советовать выбирать тот или иной язык, так как нет правильного ответа на вопрос. Выбор зависит от поставленных целей, типа задач и предполагаемого результата, который требуется достичь. Для меня С# значительно приятнее и ближе, ведь основная часть работы связана с движком Unity, но нельзя скрывать повышенную популярность Unreal Engine на C++.
После определения задачи стоит подобрать лучший язык на основании перечисленных пунктов, а также типа синтаксиса.
Больше интересных новостей
Java и MySQL база данных / Разработка приложения на JavaFx
Искусственный интеллект на Python и Tensorflow
10 признаков потрясающего веб-разработчика
Лучшие варианты стажировок для специалистов IT
C или C++?
Существуют два диаметрально противоположенных, но одинаково распространенных мнения, которые можно выразить как «C++ это C с классами» и «C++ и C — разные языки программирования». В общем-то, не важно, какого мнения придерживаться, но интересно иное — в каких случаях какой из этих языков (или вариантов языка) предпочтительнее.
При этом я не хочу начинать сравнение объектно-ориентированного и структурного подходов к созданию программного обеспечения, потому что очень часто в подобных дискуссиях можно услышать фразу вида «недостаточная объектно-ориентированность языка программирования», а она, на мой взгляд, неверна: при проектировании системы «объектно-ориентированность языка программирования» важной роли не играет — «объектно-ориентированно» программировать можно практически на любом языке программирования. Другое дело, что дополнительные средства языка, поддерживающие создание и использование объектов, сокращают количество соответствующих строчек кода и уменьшают вероятность ошибок, но в идеале это не важно.
Кардинальная разница между C и C++ не в классах или шаблонах по отдельности, а в общей идеологии: C позволяет программистам максимально контролировать (для языка программирования высокого уровня) программу, а C++ идет по пути усложнения компилятора, чтобы позволить программисту писать программу как ему будет «удобно». При этом, опять же, в идеальном случае, компилятор языка поймет желание программиста и полученный код будет все равно максимально эффективным (или близким к эффективному). С одной стороны, подход C++, не может не вызвать интереса и одобрения, так как дает возможность создания эффективных программ не снижая при этом их читабельность или удобство наращивания. Но с другой стороны — повышение сложности компилятора сопряжено с различными трудностями, многие из которых до сих пор не преодолены.
Когда я только начинал изучать C++ (это было, наверное, лет 6-7 тому назад), я был удивлен большому количеству резко отрицательных мнений о нем у профессиональных программистов. Тогда мне это было непонятно, что, в общем, неудивительно: Бьерн Страуструп не только пошел по пути усложнения компилятора, но и по пути усложнения языка программирования, так что изучение C++ это очень долгосрочный процесс и, наверное, на сегодняшний день это самый сложный язык программирования. А так как противопоставить что-либо языку программирования можно только после того, как придет понимание основных идей и большинства конструкций языка, а так же после выполнения крупных проектов на нем, то и время детского воодушевления и радости при виде мощного инструмента (каким является C++) значительно больше, чем у других языков программирования.
Несмотря на то, что за эти 7 лет C++ прошел достаточно большой путь и сильно изменился, мне кажется что источник тех нареканий, которые имеют смысл, остался. Хочется отметить, что есть большое количество нареканий относительно бесcмысленных, на мой взгляд, таких как уже упомянутый странный термин «малая объектно-ориентированность». Очень часто можно услышать, что «C++ это не Smalltalk». Странное суждение: если программисту больше нравится Smalltalk, то на нем и надо программировать.
Корень же большинства бед, связанных с C++, кроется как раз в усложнении компилятора (несмотря на то, что выше это усложнение преподносилось в качестве преимущества): чем сложнее программа (в данном случае, компилятор), тем больше вероятность того, что в ней будет ошибка.
На самом деле, конечно же, если программа перестает работать, то жаловаться на инструмент разработки надо в последнюю очередь, а сначала следует попытаться найти ошибку в своем исходном коде. Но чем больше становится программа, чем сильнее она разрастается, тем все больше и больше вероятность того, что ошибка в компиляторе скажется на работе вашей программы. Это было бы еще полбеды и особенности «своего» компилятора программисту следует знать, но компиляторов C++ достаточно много и каждый из них обладает своими собственными достоинствами и недостатками, результатом которых может стать невозможность сборки проекта под какой-либо средой программирования, отличной от первоначальной. Я не имею в виду сложность написания универсально переносимых программ, работающих под любой операционной системой, совсем нет. Просто так как написать компилятор C проще, чем C++, и так как сам язык программирования C имеет меньшее количество скользких мест, чем C++, то два разных компилятора C (разных производителей) будут больше похожи друг на друга по поведению, чем два компилятора C++.
Кроме компилятора, большую сложность при программировании на C++ вызывает использование STL. Несомненно, библиотека шаблонов очень удобна и полезна, но это в идеале. К примеру, очень часты случаи, когда смена поставляемой с компилятором STL на STLport, приводит к тому, что программа начинает работать стабильнее.
Конечно же, проблемы, связанные с ошибками в компиляторах, проявляются очень редко. Собственно поэтому можно уже сейчас оценить круг задач, которые лучше решать при помощи C++, чем C (при наличии, конечно же, хороших навыков программирования в обоих языках): это практически все программы, от которых не требуется беспрерывная работа 24 часа в сутки. Очень неприятно обнаружить, что программа, которая писалась и отлаживалась на каких-то тестовых примерах, не может выдержать реальной нагрузки и проблема кроется именно в том, что где-то глубоко внутри библиотеки, поставляемой с компилятором, не был реализован механизм блокировки доступа к разделяемому ресурсу. Кроме того, обычно переносимость программы с одного компилятора на другой уменьшает количество используемых возможностей языка программирования, потому что разные компиляторы, как это ни смешно звучит, по разному «соответствуют стандарту». Или, точнее, не соответствуют ему. А подобное ограничение на конструкции языка (одно из самых обидных лишений, конечно же, ограничение на использование шаблонов) сводит на нет большинство преимуществ C++.
В таких случаях выбор языка программирования C вместо C++ более предпочтителен, так как даст возможность изначально уменьшить количество непонятных проблем, возникающих в реальной эксплуатации программного продукта.
При этом стоит отметить потенциальную опасность C, который традиционно позволяет программисту делать все что угодно, зачастую пропуская его ошибки. Но эти ошибки выловить иногда значительно легче, чем объяснять различные странности, появляющиеся то тут, то там в программах на C++.
Более строго, можно сказать, что обычно к разрабатываемому программному обеспечению предъявляются какие-то требования, связанные с его качеством. Эти требования не могут быть настолько жесткими, чтобы совсем исключать вероятность наличия ошибок в программе, но чем они сильнее, тем лучше использовать старый и проверенный во многих разработках C. В остальных же проектах может быть обратная ситуация: сложность разработки на C вызовет увеличение сроков, связанное с отладкой и выявлением ошибок в коде у самих программистов. Но, повторюсь, подобные ошибки обнаружить проще, чем ошибки в компиляторе или стандартной библиотеке.
Резюме
Подводя итоги, хочется сказать что в последнее время я начал относиться с большой осторожностью к использованию С++ в проектах. Мне кажется, что должно пройти еще достаточно много времени, чтобы C++ достиг той устойчивости и стабильности в использовании, при которой он будет подходить по своим характеристикам для почти всех разработок, но до этой поры C остается вполне достойной альтернативой ему.
Чем отличается C от C++
Короткий ответ: C++ — это улучшенный C. У этих языков одинаковый на 99% синтаксис и команды, но C — это больше про структурное и процедурное программирование, а C++ — про объектно ориентированное.
C — язык, который сделал в 1973 году Деннис Ритчи. Главная цель языка — скорость, быстродействие и универсальность. Язык изначально проектировался как системный, чтобы на нём можно было писать код для процессоров, драйверов и создавать на нём операционные системы. В то время большинство этих вещей делали на ассемблере, и Ритчи хотел это упростить.
C++ придумал Бьёрн Страуструп в начале восьмидесятых, когда ему не хватало возможностей стандартного C. Он сделал язык более строгим, добавил в него классы, ООП-подход и перегрузку операторов, сохранив скорость оригинального С. В 1983 году Бьёрн переименовал язык из «C с классами» в C++.
О перегрузке операторов как-нибудь в другой раз 🙂
C | C++ |
Код читается проще
Проще портировать код на другие платформы
Есть структуры и переменные типа «структура»
Наследование — это структура внутри структуры
void — обязательное слово
Можно объявлять глобальную переменную несколько раз
Исключения нужно конструировать самому
Нет перегрузки операторов
Почти всё стандартно и предсказуемо
Для чего изучать
C — классический язык разработки системного ПО и любого софта для микропроцессоров. На нём написаны Linux, большая часть Windows и MacOS. Если взять любой современный носимый гаджет или электронное устройство, в большинстве случаев они работают тоже под управлением программы на C. В мире огромное количество кода, который написан на C (и ещё столько же будет написано), поэтому проблем с работой у C-программистов не предвидится.
C++ — выбор тех, кому одновременно нужна вся мощь C и гибкость объектно ориентированного программирования. Counter-Strike, StarCraft и World of Warcraft написаны на C++, а это значит, что можно сочетать производительность C и современные технологии. Часть движка Unity тоже написана на C++, чтобы получить прямой доступ к памяти и ресурсам системы.
Нельзя ли подробнее?
На самом деле нет такой уж большой разницы между C и C++. Это одинаково мощные и быстрые языки, просто у них разная область применения и стиль программирования.
Если вам важна скорость, производительность и относительная простота языка — смотрите на C, там это всё есть. С другой стороны, из-за простоты в нём многие вещи придётся делать вручную — обрабатывать исключения, следить за сроком жизни переменных и структур или писать дополнительный код.
Сторонникам ООП больше подойдёт C++ — в нём уже есть всё, что нужно для работы с объектами, областями видимости и прочим добром. Иногда такой код сложнее поддерживать и он может работать на несколько процентов медленнее, чем на C, но в нём есть та свобода, которой нет в оригинальном языке. Та же перегрузка операторов — удивительно мощная вещь в умелых руках, которая может сэкономить много времени и ресурсов.
Чтобы было понятнее, скоро напишем подробно про оба языка. А вы не болейте и берегите себя.
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.