S>Вот они сделали, что std::strong_ordering::equal и прочие нельзя было запихнуть в switch case. S>Но это не проблема, пишем враппер!
/*много устрашающего кода*/
Иногда я думаю, не зря ли я ушёл в C# из C++, всё-таки проприетарщина, а у нас импортозамещение, санкции и всё такое... Но как гляну на это, и думаю — нет, не зря. Плюсовики, вы там совсем свихнулись, что ли? Нельзя это написать как-то попроще? Зачем это вообще? Как потом это разбирать пришедшему на проект?
Я понимаю, язык системный, мощный, есть низкоуровневые возможности. И это всё реально нужно, я понимаю.
Но его и так в край усложнили за последние 20 лет, зачем усугублять?
Ладно бы это был какой-нибудь Немерле, где можно самому создавать синтаксические конструкции, там для этого есть средства. Но тут... лавкрафтовское шаблонное невыразимое нечто — это что, способ самовыражения? Ок, но только не в продакшен.
Здравствуйте, dmitry_npi, Вы писали:
_>/*много устрашающего кода*/
Код не самый красивый — факт, мне особенно не нравится обилие тернарных операторов.
Но ничего сложного или устрашающего не увидел, при том что последний раз писал на C++ лет 6-7 назад.
_>Иногда я думаю, не зря ли я ушёл в C# из C++, всё-таки проприетарщина, а у нас импортозамещение, санкции и всё такое...
Каждому свое. Я вот задумал писать некий софт для которого нужен либо C++, либо Rust, без вариантов.
Поковырял Rust, в целом ничего, но на C++ намного привычнее и удобнее.
_>Извините за сумбур, что-то пригорело внезапно.
Причем абсолютно на ровном месте. C++ давно известен гораздо более монструозными конструкциями на шаблонах и макросах.
S>>Вот они сделали, что std::strong_ordering::equal и прочие нельзя было запихнуть в switch case. S>>Но это не проблема, пишем враппер!
_>/*много устрашающего кода*/
_>Иногда я думаю, не зря ли я ушёл в C# из C++, всё-таки проприетарщина, а у нас импортозамещение, санкции и всё такое... Но как гляну на это, и думаю — нет, не зря. Плюсовики, вы там совсем свихнулись, что ли? Нельзя это написать как-то попроще? Зачем это вообще? Как потом это разбирать пришедшему на проект?
Это как российские законы — сложность, корявость и общая невменяемость компенсируются необязательностью применения. Большая часть полезного сиплюсплюсного кода пишется на "си с классами", в крайнем случае с использованием каких-нибудь QString (потому, что стандартная библиотека совершенно идиотская). Зато большая часть шума производится любителями из пустого переливать в порожнее (в лучшем случае) или запутывать простую мысль до неузнаваемости (в худшем).
До смешного доходит. В одном коллективе, я помню, на пять прикладников наняли человека, который занимался только сиплюсплюсом. "Вася, ты чем занимаешься?" "Соединяюсь с сервером на сиплюсплюсе". "А ты, Петя?" "А я рисую графики на сиплюсплюсе". "А ты, Миша?" "А я просто сиплюсплюсом". Я не вдавался в детали, но там, кажется, надо было навертеть как можно больше такого ужаса, как по ссылке выше. И заставить всех им пользоваться. Закончилось тем, что его уволили нахрен. Всё-таки, здравый смысл восторжествовал. Но вот то, что ЯП запрограммировал их на то, чтобы нанять человека, который по штатному расписанию не делал вообще ничего полезного, это многое говорит о носителях языка.
Здравствуйте, dmitry_npi, Вы писали:
_>Извините за сумбур, что-то пригорело внезапно.
C++ чем-то похож на государство — проблема не столько в правительстве (комитете), сколько в людях (программистах). Мой опыт говорит, что момент "всё плохо" наступает, если есть одно из трех:
1. Попытка использовать все возможности С++.
2. Попытка использовать новые возможности там, где надобности в них не было.
3. Попытка писать на С++ как на скриптовых языках и делать вид, что ничего не происходит.
В действительности, если воспринимать С++ как Си-с-классами, где после 2011-го ещё и можно не вызывать new и malloc (ну, почти), и очень-очень аккуратно использовать что-то из STL, а в сторону third-party смотреть только под страхом смерти, то оказывается, что это таки неплохой язык. Я честно топил на Си, пока активно коммитил в открытые проекты, но потом признал очевидное — С++ безопаснее для прикладных проектов, если применять его с умом. Для системных я бы всё же выбрал Си. А то, что комитет состоит из старых пердунов и засланцев компаний-гигантов, это и без микроскопа видно.
Здравствуйте, dmitry_npi, Вы писали:
_>Иногда я думаю, не зря ли я ушёл в C# из C++, всё-таки проприетарщина, а у нас импортозамещение, санкции и всё такое... Но как гляну на это, и думаю — нет, не зря. Плюсовики, вы там совсем свихнулись, что ли? Нельзя это написать как-то попроще? Зачем это вообще? Как потом это разбирать пришедшему на проект?
Ну и как ты напишешь на C# библиотеку, которую можно использовать везде: на Windows, MacOS, Linux, iOS, Android, WebAssembly?
Тут же не в том дело удобно или нет. На С++ это можно сделать и реально делают. На C# как бы ты ни извращался — ну просто не получится
_>Я понимаю, язык системный, мощный, есть низкоуровневые возможности. И это всё реально нужно, я понимаю. _>Но его и так в край усложнили за последние 20 лет, зачем усугублять?
С++ состоит из 2 разных языков:
С++ времени компиляции. Он не такой большой, слов не так много, но тоже весьма полноценный и сложный язык.
С++ времени исполнения.
Попытка верить что С++ один цельный язык — приводит к когнитивному диссонансу и отторжению. Просто сразу разделяйте для себя — это один язык, это другой язык. Они по сути не особо то и пересекаются.
Здравствуйте, Vermicious Knid, Вы писали:
VK>Код не самый красивый — факт, мне особенно не нравится обилие тернарных операторов.
Это всё можно было написать более читабельно, да.
Здравствуйте, dmitry_npi, Вы писали:
_>Иногда я думаю, не зря ли я ушёл в C# из C++, всё-таки проприетарщина, а у нас импортозамещение, санкции и всё такое... Но как гляну на это, и думаю — нет, не зря. Плюсовики, вы там совсем свихнулись, что ли? Нельзя это написать как-то попроще? Зачем это вообще? Как потом это разбирать пришедшему на проект?
Приведённый по ссылке код считаю разминкой для ума, ну как олимпиада по программированию. Принести такое в боевой проект можно в случае крайней необходимости, и примерно раза в два надо больше места заполнить комментариями, что там да как происходит, и зачем это всё.
Можно писать на C++ (и не на "C с классами") лаконично и понятно, и без вот этого всего.
Здравствуйте, cppguard, Вы писали:
C>В действительности, если воспринимать С++ как Си-с-классами, где после 2011-го ещё и можно не вызывать new и malloc (ну, почти), и очень-очень аккуратно использовать что-то из STL, а в сторону third-party смотреть только под страхом смерти, то оказывается, что это таки неплохой язык.
А если не ограничивать себя "Си-с-классами", то выяснится, что после 2011-го это вообще во многом другой язык, а после 2017-го он стал более чем неплохим.
C>Я честно топил на Си, пока активно коммитил в открытые проекты, но потом признал очевидное — С++ безопаснее для прикладных проектов, если применять его с умом.
Если вам потребовалось время чтобы дойти до такой очевидной вещи?
Здравствуйте, so5team, Вы писали:
S>А если не ограничивать себя "Си-с-классами", то выяснится, что после 2011-го это вообще во многом другой язык, а после 2017-го он стал более чем неплохим.
Если не ограничивать себя, то появляются топики как этот или "Большая компания. Бардак. Больше так не могу
Здравствуйте, cppguard, Вы писали:
S>>А если не ограничивать себя "Си-с-классами", то выяснится, что после 2011-го это вообще во многом другой язык, а после 2017-го он стал более чем неплохим. C>Если не ограничивать себя, то появляются топики как этот или "Большая компания. Бардак. Больше так не могу
Инструменты должны подбираться под задачу. Если для задачи достаточно "Си-с-классами", то OK, можно ограничится "Си-с-классами". Если для задачи нужны умения написать с нуля Boost.Hana или Boost.Xpressive, то насильственное ограничение себя "Си-с-классами" вовсе не OK.
S>>Если вам потребовалось время чтобы дойти до такой очевидной вещи? C>То что?
То вам бы следовало бы с осторожностью доверять собственному мнению на счет того же C++. Ну раз вы сами долго таких вещей не замечали.
Что уж говорить о ценности вашего мнения для сторонних читателей.
Здравствуйте, Shmj, Вы писали:
S>Ну и как ты напишешь на C# библиотеку, которую можно использовать везде: на Windows, MacOS, Linux, iOS, Android, WebAssembly?
А в чем проблемы то? Есть MAUI, UNO, Avalonia. Код Един для всех платформ, а вот гуй для линукса выбирай из UNO, Avalonia
Другое дело, что ты не упомянул Аврору!
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, so5team, Вы писали:
S>То вам бы следовало бы с осторожностью доверять собственному мнению на счет того же C++. Ну раз вы сами долго таких вещей не замечали. S>Что уж говорить о ценности вашего мнения для сторонних читателей.
Ой, извини, что не спросил тебя, стоит ли мне доверять собственному мнению. А можно список твоих коммитов в открытые проекты, чтобя я был уверен, что твоему мнению доверять уж точно стоит? А то вот Торвальдс, говорит, что С++ это bullshit. Но я уверен, что ты, как программист, покруче Линуса будешь.
Здравствуйте, CreatorCray, Вы писали:
CC>Это всё можно было написать более читабельно, да.
Вопрос в том надо ли это было писать. У меня ощущение, что там пытаются решать какие-то проблемы в поисках идеала с точки зрения С++ника. И большинство обсуждений на темы С++ как раз об этом.
Здравствуйте, cppguard, Вы писали:
C>Ой, извини, что не спросил тебя, стоит ли мне доверять собственному мнению.
Вы на публичном форуме излагаете свое мнение и обижаетесь на то, что кто-то озвучивает вам субъективную ценность вашего мнения? Ну афигеть. Может не стоит тогда писать на публичных форумах, если уж у вас такая тонкая душевная организация?
C>А можно
С аналогичной просьбой к вам обратиться можно?
C>А то вот Торвальдс, говорит, что С++ это bullshit.
Говорил. И вы верите в это просто потому, что это сказал Торвальдс?
А потом Торвальдсу потребовалось написать какую-то программулину с GUI и он это сделал на плюсах, емнип.
C>Но я уверен, что ты, как программист, покруче Линуса будешь.
Нет. Я уверен, что, как минимум, 80% RSDN-еров круче меня как программисты. Не говоря уже про Торвальдса.
Здравствуйте, dmitry_npi, Вы писали:
_>Я понимаю, язык системный, мощный, есть низкоуровневые возможности. И это всё реально нужно, я понимаю. _>Но его и так в край усложнили за последние 20 лет, зачем усугублять? _>Ладно бы это был какой-нибудь Немерле, где можно самому создавать синтаксические конструкции, там для этого есть средства. Но тут... лавкрафтовское шаблонное невыразимое нечто — это что, способ самовыражения? Ок, но только не в продакшен.
Коллега, упороться можно на любом языке программирования, дело не в с++.
Здравствуйте, Serginio1, Вы писали:
S> А в чем проблемы то? Есть MAUI, UNO, Avalonia. Код Един для всех платформ, а вот гуй для линукса выбирай из UNO, Avalonia S>Другое дело, что ты не упомянул Аврору!
Так, давай по-порядку.
MAUI — не умеет в Linux и WebAssembly.
Avalonia — не умеет в моб. платформы (объявлено экспериментально — но пока нет по сути) и WebAssembly.
Т.е. вам нужно делать минимум 3 разных GUI и никак иначе.
Не говоря уже о тормознутости всего этого, о том что для WebAssembly потребуется тащить сотни мегабайт фреймворка для мин. сборки.
Еще более важно — ваши библиотеки, по сути, можно будет использовать только из .Net — т.е. они не универсальны. Написанное на С++ и обрамленное с помощью extern "C" — легко использовать и из Python и из JS и из Dart и т.д. Тут проблемы: https://rsdn.org/forum/dotnet/8544603.flat
Я понимаю что вы влюбились в язык и все такое. Но реальность сурова — нет. Никак. Не возможно в принципе.
Хочешь или нет — а придется принять реальность — серьезные взрослые программы пишутся на С++. У него минусы есть, но на самом деле не так страшен черт.
Здравствуйте, Shmj, Вы писали:
S>Ну и как ты напишешь на C# библиотеку, которую можно использовать везде: на Windows, MacOS, Linux, iOS, Android, WebAssembly? S>Тут же не в том дело удобно или нет. На С++ это можно сделать и реально делают. На C# как бы ты ни извращался — ну просто не получится
Он говорит совершенно о другом. Язык можно было развивать совсем иначе. Поверь, можно и без способа кастинга, записанного словами через чёрточку и оператора "архитектурные астронавты летят на ракете" писать под "Windows, MacOS, Linux, iOS, Android, WebAssembly".