Применимость и будущее С++(для подкаста)
От: avovana Россия  
Дата: 16.05.24 09:41
Оценка:
Добрый день, уважаемый форумчане!

Меня пригласил на подкаст мой товарищ поговорить про С++. Сам он когда-то разрабатывал на rust)
Хочу приобрести больше контекста по применимости С++ сегодня.

Подскажите, пожалуйста:
1) В какой доменной области работаете Вы с С++? Почему он там применяется? Какие задачи решаете?
2) Будет ли далее там использоваться С++?
3) Какое будушее у языка Вы видите, в целом?
4) Захватит ли всё rust?
5) Какие фишки обеспечивают С++ конкурентоспособность сейчас в вашем домене и будут обеспечивать в будущем?
6) Насколько в реальности сложен С++

Опрос для графиков, общих выводов:
https://forms.gle/YLVcvD4P5Q7vuin47

Заранее благодарен!
Отредактировано 18.05.2024 19:26 avovana . Предыдущая версия .
Re: Применимость и будущее С++(для подкаста)
От: fk0 Россия https://fk0.name
Дата: 16.05.24 10:33
Оценка: 1 (1) +4
Здравствуйте, avovana, Вы писали:

A>Подскажите, пожалуйста:

A>1) В какой доменной области работаете Вы с С++? Почему он там применяется? Какие задачи решаете?
A>2) Будет ли далее там использоваться С++?

Никуда не денется. Серьёзная угроза C++ есть только со стороны Java/C# и т.п. языков, но там свои проблемы.

А ещё Nemerle, как же можно без упоминания Nemerle на КЫВТ. Будущее за Nemerle, очевидно.
Rust и рядом не лежал по многим пунктам.

A>3) Какое будушее у языка Вы видите, в целом?


Полностью провалится в метапространство через дыру в абстракциях.

A>4) Захватит ли всё rust?


Rust -- это C на стероидах. Там нет и малой части того, что есть в C++.
Сравнивать даже глупо. И уж с декларативными языками, со скриптовыми, с
языками с динамической типизацией и сборщиком мусора -- ни с чем Rust
конкурировать не сможет. Единственная характеристика Rust -- "токсичное сообщество"
фанатиков. У них была одна стоящая идея borrow checker'а, но это не краеугольный
камень и оно даже в D-lang с тех пор появилось.

A>5) Какие фишки обеспечивают С++ конкурентоспособность сейчас в вашем домене и будут обеспечивать в будущем?


Бесполезно сравнивать пряники и сапоги.

A>6) Насколько в реальности сложен С++


Настолько, что в пункте 3 полная неопределённость. Очевидно, что давно пора выкрасить и выбросить,
но legacy не даёт. Нужен совершенно другой язык, изначально спроектированный с учётом возможности
всех "неожиданно обнаруженных" свойств C++ (который почти полностью состоит из таковых...)
Re: Применимость и будущее С++(для подкаста)
От: velkin Удмуртия https://kisa.biz
Дата: 16.05.24 11:01
Оценка: +3 :))
Здравствуйте, avovana, Вы писали:

A>4) Захватит ли всё rust?


Все хоть сколько-то популярные операционки написаны на Си. Не важно Windows, Linix, BSD и так далее. И все крупные компании используют их модификации.

Если кто-то скажет захватит ли Rust или другой язык нишу операционок, то я скажу, что этот человек новичок и не понимает как всё устроено.

На Си так же пишут драйвера, веб-сервера, базы данных и многое другое. И заметь это не какой-то мусор, а самые топовые проекты, которые у всех на слуху.

Так вот Си и C++ это не одно и тоже. И программисты часто специализируются или на одном или на другом. Только это не мешает создавать совместимость с точки зрения компиляции.

Да, совместимость не полная, но мигрировать программу от Си к С++ гораздо проще, чем в обратную сторону. Тогда как миграция умений программиста проще пройдёт от C++ к Си.

И в принципе есть хорошая совместимость использования Си из C++. А вот для других языков нужны обёртки.

Никто ведь не возражает, пиши на чём хочешь. Просто однажды настанет понимание, что Си и C++ попросту нет вменяемых альтернатив, если конечно не собрался писать всё с нуля.

Есть ещё принцип достаточности, когда достаточно чего-то другого. Возможно менее производительного, более затратного по памяти, не кроссплатформенного и так далее. Но людям этого достаточно.

И более того люди пишушие на Си или C++ никуда не денутся. Их будет даже больше, чем пользователей экзотики. А чем их больше, тем проще их находить и нанимать, а следовательно поддерживать проект.

Я бы вообще сказал, что у других языков нет будущего. Через сколько-то лет сменится сто пятьсотый фреймворк и попробуй потом найди специалиста на этом языке. А старый специалист уже своё отработал.

Как интернет у людей появился всё и срутся на эту тему. Раньше только Си и C++ убивали другие языки и платформы. Сколько десятилетий уже убивают убить не могут.

Просто голову надо немного включить. Предоположим есть захватчики пишушие на Rust или ещё чём-то. Так захватывайте вот прямо всё, кто мешает.

Вперёд и с песней переписывать миллиарды строчек кода, а потом пытаться пропихнуть своё поделие в мир.

А ещё другие языки любят рекламировать, что они якобы созданы для дебилов. Обезьяна на них садится и сразу получает работающую программу.

На деле же получается всратое поделие, глючное и тормознутое. И что хуже всего часто оно таким становится по мере накопления данных.

Потому что видимо никто программу не тестировал или просто забили на плохие результаты тестов. И пользователи слишком поздно осознают, когда часть данных уже набрана.

В общем господа убиваки и дамы убивашки, пишите на Rust, Go, Python, C# и прочих убийцах. Очевидно же, что если лично вы это сделаете, то Си и C++ сразу убьются.

Люди же посмотрев на вашу поделку сразу бросят свои топовые проекты. Скажут как же так, нас обманули. Смотри какую клёвую свистоперделку сделал Вася Пупкин на Rust.
Re: Применимость и будущее С++(для подкаста)
От: so5team https://stiffstream.com
Дата: 16.05.24 13:48
Оценка: 32 (4) +1
Здравствуйте, avovana, Вы писали:

A>Подскажите, пожалуйста:

A>1) В какой доменной области работаете Вы с С++?

Сразу дисклаймер: не специалист в этих областях, просто участвовал как человек, которые пишет более-менее понятный и как-то работающий код, а если нужно, то может и привести в норму откровенный говнокод.

Из последнего:

* нагруженный HTTP-прокси (сервер, только Linux);
* видеонаблюдение -- сбор, анализ и сохранение видеопотоков (десктоп, кросс-платформа -- изначально Windows/Linux, в перспективе были macOS/iOS/Android, но уже не в проекте, так что не знаю дошли руки или нет);
* многомерные аналитические кубы (сервер, основная платформа Windows, но с перспективой поддержать и Linux).

A>Почему он там применяется?


Скорость, ресурсоемкость. Возможность работать и на высоком уровне абстракции, и опускаться вниз до уровня взаимодействия с ОС.

Простота интреграции с системой.

Простота интеграции с уже существующими библиотеками на Си и C++. Большое количество этих самых библиотек.

Кстати, в двух последних проектах использовался vcpkg для управления зависимости, так что боли от управления зависимостями не было.

A>Какие задачи решаете?


Лично я самые тривиальные: сделать чтобы работало. И чтобы было достаточно задокументировано, чтобы это могли поддерживать в последствии.

A>2) Будет ли далее там использоваться С++?


Зависит от коммерческого успеха этих проектов. Если будут приносить прибыль, то да.

A>3) Какое будушее у языка Вы видите, в целом?


Ниша применения будет в процентном отношении снижаться. Но, за счет того, что софта становится все больше и больше, то в абсолютных числах объем кода на C++ может расти и дальше.

Теснить C++ продолжат и безопасные языки с GC с одной стороны, и Rust (и другие потенциальные конкуренты, которые нативные и без GC) с другой.

A>4) Захватит ли всё rust?


Всё -- нет. Опыт показывает, что не случается какого-то одного языка, который вытеснит все остальные.

Но заставит C++ подвинутся еще больше. Хотя, имхо, Rust не будет тем языком, который сможет вытеснить C++ полностью.

A>5) Какие фишки обеспечивают С++ конкурентоспособность сейчас в вашем домене и будут обеспечивать в будущем?


Огромное наследие, с которым C++ без проблем интегрируется.

Более-менее нормальный ООП (для языка со статической типизацией). Да, я в курсе, что сейчас не модно и не молодежно хвалить ООП, но вас же интересует субъективное мнение

Шаблоны. Шаблоны. И еще раз шаблоны.

A>6) Насколько в реальности сложен С++


Попробуйте подготовить серию лекций по C++, прочувстуете сами.
Попробуйте написать код без UB, для закрепления ощущения

Кроме сложности самого языка есть еще и сложность его применения. Одни и те же вещи можно делать сильно по разному, нужно делать выбор между разными способами, делать выбор сложно

Уровень подготовки C++ников очень разный. Кому-то исходники Boost.Hana -- это открытая книга. Для кого-то даже реализация шаблонного std::min уже слишкамсложна (с).

Плюс полярность мнений: каждый же лучше знает, как оно должно быть правильно (это справедливо для всех ЯП, но в C++ как-то слишком уж гипертрофированно).

Стандарты, которые сейчас стали клепать раз в три года ничуть не парясь о том, когда же эти стандарты будут более-менее нормально поддержаны хотя бы "большой тройкой" компиляторов.

В общем, в реальности C++ сложен. Если есть возможность C++ не использовать, то лучше таки не использовать.


PS. Все вышесказанное крайне субъективное ИМХО.
Re: Применимость и будущее С++(для подкаста)
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 16.05.24 15:18
Оценка: 1 (1) +1
Здравствуйте, avovana, Вы писали:

A>Добрый день, уважаемый форумчане!


A>Меня пригласил на подкаст мой товарищ поговорить про С++. Сам он когда-то разрабатывал на rust)

A>Хочу приобрести больше контекста по применимости С++ сегодня.
На подкаст как эксперта позвали тебя, а отвечать за тебя должны мы. Что-то ты, мягко говоря, не прав, мне кажется .
Sic luceat lux!
Re: Применимость и будущее С++(для подкаста)
От: avovana Россия  
Дата: 16.05.24 16:19
Оценка: 1 (1)
Создал лёгкий опросник:
https://forms.gle/YLVcvD4P5Q7vuin47

Как наберутся ответы, графики пошарю.
Re[2]: Применимость и будущее С++(для подкаста)
От: avovana Россия  
Дата: 16.05.24 16:58
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, avovana, Вы писали:


A>>Добрый день, уважаемый форумчане!


A>>Меня пригласил на подкаст мой товарищ поговорить про С++. Сам он когда-то разрабатывал на rust)

A>>Хочу приобрести больше контекста по применимости С++ сегодня.
K>На подкаст как эксперта позвали тебя, а отвечать за тебя должны мы. Что-то ты, мягко говоря, не прав, мне кажется .

Своим мнением могу поделиться хоть сейчас )) Обогатиться мнениями членов сообщества — для меня ценно)

Если бы ты увидел текущие диаметрально противоположные ответы в гугл форме, лучше бы понял мой посыл)
Оставляй свой
Отредактировано 16.05.2024 17:15 avovana . Предыдущая версия . Еще …
Отредактировано 16.05.2024 17:08 avovana . Предыдущая версия .
Отредактировано 16.05.2024 17:05 avovana . Предыдущая версия .
Re[2]: Применимость и будущее С++(для подкаста)
От: avovana Россия  
Дата: 18.05.24 08:50
Оценка:
Здравствуйте, avovana, Вы писали:

A>Создал лёгкий опросник:

A>https://forms.gle/YLVcvD4P5Q7vuin47

A>Как наберутся ответы, графики пошарю.


Спасибо за ответы здесь!

Также смотрю в форме. Почти 30 прошедших)
Если не проходили, you are welcome)
Ещё неделя до подкаста.

Из опроса на данный момент:
Re[2]: Применимость и будущее С++(для подкаста)
От: m2user  
Дата: 18.05.24 09:51
Оценка: +1
A>Создал лёгкий опросник:
A>https://forms.gle/YLVcvD4P5Q7vuin47

Будет нелишним продублировать ссылку в стартовом сообщении.
Re[2]: Применимость и будущее С++(для подкаста)
От: ArtDenis Россия  
Дата: 18.05.24 11:24
Оценка:
Здравствуйте, fk0, Вы писали:

fk0> Rust -- это C на стероидах.

Неееет! Rust — это C++ на нейролептиках и под беспрестанным присмотром психиатра

А вот Zig — это да, С на стероидах
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: Применимость и будущее С++(для подкаста)
От: rg45 СССР  
Дата: 18.05.24 13:54
Оценка:
Здравствуйте, so5team, Вы писали:

A>>Какие задачи решаете?


S>Лично я самые тривиальные: сделать чтобы работало.


Примерно так же говорил и Микеланджело: "Я беру камень и просто отсекаю все лишнее".
--
Re: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.24 20:59
Оценка:
Здравствуйте, avovana, Вы писали:

A>1) В какой доменной области работаете Вы с С++?


Разработка драйверов ядра для Windows (с тем же успехом можно и для любой другой ОС), прошивок для микроконтроллеров, прикладного софта (в том числе звукового, в реальном времени).

A>Почему он там применяется?


Там, где важно одновременно минимизировать затраты ресурсов, обеспечить время реакции, и/или хорошо сопрячь софт с железом, и при этом не заморачиваться на голом C, альтернативы попросту нет. В этом смысле C++ — уникальный язык. Как сказал один любитель "классического C++", это "язык произвольного уровня". В нем одинаково удобно работать и с регистрами устройств, и с какими-нибудь распределенными базами данных. Но подавляющее большинство современных программистов на C++ этого не понимает — они воспринимают C++, просто как один из ЯВУ, их нередко раздражают его низкоуровневые привязки.

A>3) Какое будушее у языка Вы видите, в целом?


Судя по всему, из него окончательно сделают "просто один из ЯВУ", и его уникальность будет полностью потеряна. Если не придумают языка на замену, то для низкоуровневого и высокоуровневого софта придется всегда использовать разные языки.

A>5) Какие фишки обеспечивают С++ конкурентоспособность сейчас в вашем домене


То, что на нем можно писать практически все то же, что раньше писали на ассемблере (исключения есть, но их очень мало), и на нем же можно писать навороченные абстракции. Правда, многие возможности для этих абстракций реализованы донельзя убого, но, если сдерживать рвотные рефлексы, даже с их помощью можно получать достаточно эффективный машинный код, недостижимый для большинства других языков.

A>6) Насколько в реальности сложен С++


"Базовый" язык (на уровне общих идей и приемов) достаточно прост, многое можно делать интуитивно, не углубляясь в тонкости. Но полный стандарт языка реально огромен, работать с ним достаточно сложно, и многие нюансы гораздо проще нагуглить или выспросить в сообществах, чем продраться через многоэтажные зависимости формулировок в стандарте.

Аналогично, популярная стандартная библиотека (STL) в использовании тоже не слишком сложна, если не пытаться изучать ее устройство (а без этого порой не обойтись). Изучать ее достаточно сложно, поскольку она в изрядной мере построена на хаках и побочных эффектах. А если мозги к такому устройству софта не предрасположены, то изучать это еще и не слишком приятно.
Re[2]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.24 21:16
Оценка:
Здравствуйте, velkin, Вы писали:

V>На Си так же пишут драйвера, веб-сервера, базы данных и многое другое.

V>Так вот Си и C++ это не одно и тоже. И программисты часто специализируются или на одном или на другом.

Я вот никогда не понимал, отчего последние лет тридцать программисты пишут на C, когда всё то же самое писать на C++ (при наличии реализации под платформу, само собой). За это время не встретил ни одного сишного программиста, чья приверженность C определялась бы чисто техническими условиями, и ничем иным. Все они без исключения либо уверены, будто на чистом C якобы "компактнее", "эффективнее", "надежнее", "предсказуемее", "управляемее" и т.п., либо они тупо ненавидят C++ за исключения, шаблонную магию, STL и прочее, даже не подозревая, что всё это не является обязательным.

Но, если открыть навскидку десяток-другой книг по C++, написанных за последние тридцать лет, в них самые первые примеры почти всегда будут с iostreams, контейнерами, исключениями, шаблонной магией и прочими вещами, которые у типичного сишника прочно ассоциируются с классическими ЯВУ, неприменимыми в тех областях, где он успешно применяет C. Разумеется, он сразу же делает вывод "это не для меня", закрывает книгу, и продолжает использовать голый C, регулярно наступая с ним на все те грабли, для изжития которых C++ и создавался.
Re[3]: Применимость и будущее С++(для подкаста)
От: reversecode google
Дата: 26.07.24 21:25
Оценка: -1 :)
потому что это совершенно два разных языка
но вам на +105000 флеймовой теме которую вы подняли от скуки
увы
не понять
Re[2]: Применимость и будущее С++(для подкаста)
От: пффф  
Дата: 26.07.24 21:33
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Там, где важно одновременно минимизировать затраты ресурсов, обеспечить время реакции, и/или хорошо сопрячь софт с железом, и при этом не заморачиваться на голом C, альтернативы попросту нет. В этом смысле C++ — уникальный язык. Как сказал один любитель "классического C++", это "язык произвольного уровня". В нем одинаково удобно работать и с регистрами устройств, и с какими-нибудь распределенными базами данных. Но подавляющее большинство современных программистов на C++ этого не понимает — они воспринимают C++, просто как один из ЯВУ, их нередко раздражают его низкоуровневые привязки.


Откуда дровишки про большинство современных программистов на C++?


A>>3) Какое будушее у языка Вы видите, в целом?


ЕМ>Судя по всему, из него окончательно сделают "просто один из ЯВУ", и его уникальность будет полностью потеряна. Если не придумают языка на замену, то для низкоуровневого и высокоуровневого софта придется всегда использовать разные языки.


Ну вот если не тащить "совместимость с C", чему ты удивляешься в соседней ветке, то так и будет
Re: Применимость и будущее С++(для подкаста)
От: cppguard  
Дата: 26.07.24 23:03
Оценка:
Здравствуйте, avovana, Вы писали:

A> Сам он когда-то разрабатывал на rust)

Написано так, словно Rust уже стал мейнстримом, причём, очень давно

A>1) В какой доменной области работаете Вы с С++? Почему он там применяется? Какие задачи решаете?

Встраиваемые системы, удобно писать код, который в compile-time много всего проверяет.

A>2) Будет ли далее там использоваться С++?

Для встраиваемых систем альтернатив пока нет.

A>3) Какое будушее у языка Вы видите, в целом?

Комитет будет его портить всё больше и больше. В какой-то момент FAANG и сочувствующие создадут новый язык на базе LLVM, а С++ забросят.

A>4) Захватит ли всё rust?

Нет. История показывает, что синтаксис решает. Perl хороший язык, но с плохим синтаксисом. Это же касается и Erlang. Где они сейчас?

A>5) Какие фишки обеспечивают С++ конкурентоспособность сейчас в вашем домене и будут обеспечивать в будущем?

Шаблоны, проверки на этапе компиялции, переносимость. Возможность писать bare-metal код.

A>6) Насколько в реальности сложен С++

Абсолютно все правила С++ возможно запомнить, если человек работает исключительно над С++. В больших компаниях есть такие команды "Core C++", которые следят, что С++ использовался правильно. Держать в голове какую-то предметную область вроде робототехники, ИИ, встраиваемых систем и при этом помнить, когда там что куда приводится и когда инвалидируется, где UB, а где не UB — нереально. Даже если запомнить это всё для языка, то памяти на стандартную библиотеку точно не хватит. Я уже молчу, что где-то используют С++14, а где-то С++23.
Re[3]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 09:26
Оценка:
Здравствуйте, пффф, Вы писали:

П>Откуда дровишки про большинство современных программистов на C++?


Из чтения литературы, статей, обсуждений в сообществах (в том числе здесь).

П>Ну вот если не тащить "совместимость с C", чему ты удивляешься в соседней ветке, то так и будет


Вы точно не путаете совместимость со внешними C-модулями по ABI, и "совместимость" на уровне куска голосишного кода, вкоряченного в плюсовый?

Если нет, то почему бы не повозмущаться, например, работой защиты памяти в той же винде при выполнении досовской программы? Она ж досовская — значит, должна иметь доступ ко всей памяти и ко всему железу, какие основания имеет какая-то там винда ограничивать кошерную досовскую программу?
Re[2]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 09:34
Оценка: +1
Здравствуйте, cppguard, Вы писали:

C>Абсолютно все правила С++ возможно запомнить, если человек работает исключительно над С++.


Не только работает, но и регулярно пользуется всем набором правил и возможностей, а это уже маловероятно. На мой взгляд, достаточно полно знают положения стандарта или фанаты, которым в кайф использовать любые возможности лишь потому, что они есть (не фича для задачи, а задача для фичи), или преподаватели, или те, кто регулярно проводит собеседования с кандидатами на работу.

У тех, кто "просто работает", обычно получается, как в известном анекдоте про Эйнштейна и Эдисона.

C>Держать в голове какую-то предметную область вроде робототехники, ИИ, встраиваемых систем и при этом помнить, когда там что куда приводится и когда инвалидируется, где UB, а где не UB — нереально. Даже если запомнить это всё для языка, то памяти на стандартную библиотеку точно не хватит. Я уже молчу, что где-то используют С++14, а где-то С++23.


В этом могли бы очень сильно помочь предупреждения компилятора, но такое впечатление, будто каждое новое предупреждение обходится создателям компилятора очень дорого, отчего они обычно появляются через много лет после того, как впервые стало понятно, что конструкция потенциально опасна.
Re[4]: Применимость и будущее С++(для подкаста)
От: пффф  
Дата: 27.07.24 12:21
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

П>>Ну вот если не тащить "совместимость с C", чему ты удивляешься в соседней ветке, то так и будет


ЕМ>Вы точно не путаете совместимость со внешними C-модулями по ABI, и "совместимость" на уровне куска голосишного кода, вкоряченного в плюсовый?


Не путаю


ЕМ>Если нет, то почему бы не повозмущаться, например, работой защиты памяти в той же винде при выполнении досовской программы? Она ж досовская — значит, должна иметь доступ ко всей памяти и ко всему железу, какие основания имеет какая-то там винда ограничивать кошерную досовскую программу?


Винда давно уже досовские программы не поддерживает, к чему этот спич?
Re[5]: Применимость и будущее С++(для подкаста)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.07.24 12:46
Оценка:
Здравствуйте, пффф, Вы писали:

П>Винда давно уже досовские программы не поддерживает, к чему этот спич?


То есть, пока поддерживала (больше двадцати лет, на минуточку), спич был уместен?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.