Расскажите, пожалуйста, чем обычно занимаются люди, использующие Си в повседневной работе? Востребован ли язык на рынке сейчас, и будет ли он актуален в ближайшие годы?
Пишут прошивки и ПО для микроконтроллеров.
Пишут системное ПО, в частности, ядро Linux и разного рода низкоуровневые программы для разных ОС.
Также не стоит забывать, что C/C++ в вакансиях стоят обычно рядом, а по крестам вакансий полно.
Актуален будет, пока существует легаси-барахло типа ядра Linux.
Писать всякие дрова, низкоуровневые штуки, микроконтроллеры там. В принципе он не умрет еще много лет, но в сравнении он непопулярный, если говорить о рейтинге среди ЯП.
Ну и насчёт непопулярный, знать язык и уметь программировать это немного разные вещи.
В своих сферах ему замены нет. А популярность это что? Кол-во человек его знающих, использующих по назначению? Или кол-во сфер применения, или кол-во софта написанного на нем (в этом Си на первом месте) Или лёгкость освоения (Си примитивнейший язык).
Сфера где нужен Си не для лузеров, там надо много знать, много уметь и много думать, не говоря уже о специфичной техническом бекграунде.
Программистов знающих Си много - специалистов и профи в конкретных областях мало, очень мало, дефицит.
А так да, вакансий в РФ мало по сравнению с языками для Веб студий.
И нужны там специалисты и/или люди с инженерным образованием.
Roman, сильно сомневаюсь в реальности того, что C - язык номер 2 по популярности.
На С пишут только драйвера, ядро линукса и микроконтроллеры. И то, С++ занимает эту нишу, писать на нем гораздо удобнее. А много ли вакансий на такие работы?
На С пишут только драйвера, ядро линукса и микроконтроллеры.
Если глянуть исходники многих популярных развивающихся ЯП, СУБД, да и много чего ещё из системного софта, можно с удивлением заметить что они написаны на Си. И на плюсы их никто переписывать не будет.
Я же говорю что недостаток специалистов и медленное развитие в областях где правит Си это главная проблема. Знание просто языка и стандартных библиотек ничего не дает.
много ли вакансий на такие работы?
Какие работы? Там где нужен Си нужен технический бэкграунд, нельзя просто так взять и начать писать (условно) драйвера, прошивки, модули ос, софт для встроенных систем, СУБД и т.п. , если вчера ты клепал сайты или даже просто бэкенд или десктоп.
А в случае с Си-плюсами ещё умножь на три. Тем более в ембед разработке плюсы это из пушки по воробья, учитывая что используется только небольшое подмножеств языка.
CityCat4, Roman, так, ладно, не прав, был уверен, что первые штук 10 - это питон, джава, шарпы, пхп, плюсы и тд, да и вакансий на чистом си я не часто встречаю
Это Вы прикололись так, да? Дрова писать на плюсах? Ну давайте, напишите, посмотрим с какой скоростью они ворочаться будут. С - это не язык для макаки :) Для работы на нем думать надо :) Он запросто позволяет выстрелить себе в ногу, потому что практически не ограничивает возможности программиста.
А так-то да, в парадигме "где в ИТ заработать быстро, много и нихрена при этом не зная" - С непопулярный язык...
CityCat4, скорость исполнения кода на C и С++ одинаковая. C++ не дает никакого оверхеда в коде, который может быть скомпилирован обоими компиляторами (т.е. без классов). Использование классов принесет точно такой же оверхед или даже меньший, какой придется программисту на C писать ручками, реализуя ООП. При этом С++ позволяет писать намного более понятный код.
Мне кажется, ваши знания в С++ и С не выше уровня Junior, если вы пишете подобное.
Roman, в эмбеддед разработке С++ используется очень широко. Давно уже есть компиляторы под него. На C++ код получается гораздо более понятным и лаконичным, если вы разрабатываете сложные, объемные системы. Язык С++ не обязывает использовать динамическое выделение памяти, которое не очень любят в эмбеддед, можно использовать классы, шаблоны и виртуальные функции без него. Хотя, если правильно готовить, то ничего страшного в динамическом выделении памяти нет.
в эмбеддед разработке С++ используется очень широко
возможно широко а возможно и не шире Си и Ассемблера. Но то что используется это факт.
Язык С++ не обязывает использовать динамическое выделение памяти, которое не очень любят в эмбеддед, можно использовать классы, шаблоны и виртуальные функции без него. Хотя, если правильно готовить, то ничего страшного в динамическом выделении памяти нет.
Я в курсе, что там можно.
Использование классов принесет точно такой же оверхед или даже меньший, какой придется программисту на C писать ручками, реализуя ООП. При этом С++ позволяет писать намного более понятный код.
Сразу Страуструпа вспомнил. С++ разрабатывался для создания больших и сложных систем, чтобы помочь программистам справляться с возрастающей сложностью и т.д. и т.п.
Вернемся на землю грешную
Не всегда и не везде нужны возможности плюсов, а писать на плюсах в си стиле это не совсем правильно
Насколько я сталкивался с ++ в ембед юзается стандарт 2003 C++03 (ISO/IEC 14882:2003) и современные фичи языка С++11 17 20 и полноценная STL там и не светят.
И вообще автора интересует
Востребован ли язык на рынке сейчас, и будет ли он актуален в ближайшие годы?
Востребованы как и всегда специалисты в конкретной области.
Си востребован в своей нише, и все что на нем написано тоже востребовано и никуда не денется.
Насколько я сталкивался с ++ в ембед юзается стандарт 2003 C++03 (ISO/IEC 14882:2003) и современные фичи языка С++11 17 20 и полноценная STL там и не светят.
Например, IAR ARM поддерживает C++17. IDE основанные на GCC тоже.
Так что можно писать на С++ в стиле C++. Эмбеддед это очень редко борьба за каждый такт и байт. Сейчас нормальные микроконтроллеры с десятками-сотнями килобайт памяти стоят копейки. Гораздо важнее обеспечить сложность девайса, чтобы он общался с внешним миром через разные сетевые протоколы. Чтобы на нем и WEB Сервер работал, и по блютусу можно было подключиться, и по MQTT в умный дом что-нибудь отправлял. Как это все на С писать?