LINUX.ORG.RU

С++23 уже почти здесь

 ,


1

4

по мотивам прошлой темы: Вести с полей стандартизации C++: C++20 design is complete (Kona, 2019-02)

Появился пост на reddit в котором можно увидеть какие ещё предложения войдут в С++23, возможно войдут в С++23, и не войдут: https://old.reddit.com/r/cpp/comments/qug17i/c23_near_the_finish_line/

Также можно увидеть что уже вошло в С++23 https://en.cppreference.com/w/cpp/compiler_support/23

Жалко, что

P1673 (P1385)	A free function linear algebra interface based on the BLAS	[9] NO
P1385 (P1673)	A proposal to add linear algebra support to the C++ standard library   [9] NO

Но тем не менее получилось не мало.

Кстати, если у вас есть негативный опыт с ranges_v3 и Boost.Range, то std::ranges гораздо более оптимизирован к скорости компиляции:

https://www.reddit.com/r/cpp/comments/qug17i/c23_near_the_finish_line/hkw97si/

★★★★★

Ответ на: комментарий от Siborgium

https://github.com/byko3y/python-shared-objects/blob/33fe95e3dab9abb499d04e3d...
https://github.com/byko3y/python-shared-objects/blob/33fe95e3dab9abb499d04e3d...
Суть сишной обработки ошибок

Ты бы лучше залез в код обработки ошибок блокировок — вот уж где мозги в трубочку заворачиваются. Конкретно упомянутые тобой close — это закрытие разделяемой памяти перед завершением работы, то есть, мне глубоко безразлично, что какой-то там файл не смог закрыться. То есть, логика проста там, где она должна быть простой.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Позорище.

в 99% случаев мне глубоко наплевать, удачно отработает close или нет

Суть крестовой обработки ошибок.

https://github.com/byko3y/python-shared-objects/blob/33fe95e3dab9abb499d04e3d

https://github.com/byko3y/python-shared-objects/blob/33fe95e3dab9abb499d04e3d

Суть сишной обработки ошибок

то есть, мне глубоко безразлично, что какой-то там файл не смог закрыться

Siborgium ★★★ ()
Ответ на: комментарий от eao197

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

Пример в студию

Я же тебе привел пример матчинга по строкам с условиями-функциями — что тебе еще надо? Скопипастить еще раз код сюда, чтобы окончательно дошло?

Вы, видимо, на C++ толком и не писали ничего, тем более вам не приходилось выписывать std::visit помногу раз. Отсюда и такой лютый бред в ваших постах

Я тебе даже больше скажу — ни на сишке, ни на паскале мне не приходилось выписывать ничего аналогичного std::visit по многу раз.

А вы что, всерьез считаете C++ высокоуровневым?

Конечно нет. Я уже несколько раз за тред писал в духе «высокоуровневые языки вместо C++».

C++ более высокоуровневый, чем C или Modula-2

Спорно. Виртуальные функции, RAII, и чуть более удобные обобщения вместо макросов — это не такой уж и большой прогресс. Замыкания — да, уже лучше. Вывод типов... ну это как бы проблема, которую C++ сам же и создал, поскольку нет грамотно спроектированных ЯП, которые бы заставляли кодера через строчку писать мантры в духе std::map<std::string, std::string>::iterator it", не говоря уже про волшебный выхлоп компилятора при ошибке с этим типом:
std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
Даже в проклятой «низкоуровневой» сишке такой порнухи нету.

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

Отличная история. Сначала «приведи пример». Приводится пример. «Это настолько лютый треш, что я даже не смог понять после двух прочтений». Поговорили.

byko3y ★★★ ()
Ответ на: комментарий от eao197

В показанном вами примере исключение перехватывается, но после перехвата почему-то считается, что значению var можно доверять. Хотя в случае, когда мы имеем лишь базовую гарантию, такого доверия у нас быть не должно

Блин, ну я почти угадал по поводу того, что твои программы не текут и не повреждают память. В принципе, я согласен с тем, что при исключении программа на C++ должна падать и перезапускаться, поскольку значениям в памяти доверять нельзя.

Как бы изрядная часть написанного мной кода в OpenSource, если бы там случались «повреждения памяти» и «утечки памяти», то об этом бы быстро стало известно
Допустить что-то подобное при написании кода не так уж и сложно (хотя на C++ сделать это сложнее, чем на чистом Си, особенно на современных плюсах). Такое регулярно происходит

Это не «я ошибся» — это «баг». То есть, виноват компьютер. А что человек неизбежно сделает ошибки, если компьютер ему это позволяет — меня не волнует. Безусловно, C++ в этом плане немного лучше Си, но лишь немного.

А тестировать, как показывает практика, нужно и код на Java, и код на Ruby, и код на Haskell-е. Причем код на динамических языках, вроде Python/Ruby, тестировать нужно даже больше

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

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Я же тебе привел пример матчинга по строкам с условиями-функциями — что тебе еще надо?

мне нужно, чтобы:

a) приведенный пример имел отношение к предлагаемому к включению в C++ паттерн-матчингу. Т.е. хотя бы в синтаксисе из текущего пропозала;

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

Я тебе даже больше скажу — ни на сишке, ни на паскале мне не приходилось выписывать ничего аналогичного std::visit по многу раз.

В сишке у вас просто нет ничего сравнимого с std::variant. Применение union в чистом Си не имеет никаких гарантий со стороны компилятора, все лежит исключительно на плечах разработчика.

А в Паскале поддержка записей с вариантами есть прямо на уровне языка, тогда как в C++ до std::variant ее вообще не было, а с появлением std::variant и std::visit она лишь частичная. Как раз паттерн-матчинг и должен вывести эту поддержку на нормальный уровень.

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

Конечно нет. Я уже несколько раз за тред писал в духе «высокоуровневые языки вместо C++».

Т.е. вы осознаете, что C++ находится на другом уровне, но с упорством, достойным лучшего применения, пытаетесь натягивать сову на глобус?

Что ж, гипотеза об отсутствии у вас мозгов получает еще одно подтверждение.

Спорно.

Аминь. Ваши бредни про вымышленные достоинства и недостатки C++ меня лично не интересуют.

Отличная история. Сначала «приведи пример». Приводится пример. «Это настолько лютый треш, что я даже не смог понять после двух прочтений». Поговорили.

Вы:

a) не привели примера, который демонстрировал бы хоть какие-то проблемы с «тегами типов» применительно к паттерн-матчингу;

b) вы привели бредовый пример с shared_ptr, который иллюстрирует какую-то лютую херню. Вы пытаетесь непонятно зачем shared_ptr<int> привести к shared_ptr<const int>, совершенно ожидаемо получаете по рукам, но при этом вопите «ну вот, вы же видите!» Хотя что здесь можно увидеть кроме вашего неасиляторства – большой вопрос (разве что еще одно подтверждение вашей безмозглости).

О чем с вами после этого разговаривать?

eao197 ★★★★★ ()
Ответ на: комментарий от byko3y

Блин, ну я почти угадал по поводу того, что твои программы не текут и не повреждают память.

А некоторые еще и в эксплуатации находятся почти два десятка лет.

Вообще, что такого в том, что код на C++ не падает и не течет?

Это что, какая-то черная магия?

Вот серьезно, не понимаю.

Казалось бы:

  • используй лишь то подмножество C++, которое понимаешь;
  • пиши простой код, не выеживайся;
  • тестируй написанное;
  • пиши комментарии.

И все.

Но нет. Как послушаешь дятлов, вроде вас, так начинает казаться, что это какая-то высшая материя, недоступная простым смертным. Хотя все это относится к любому языку программирования.

Это не «я ошибся» — это «баг». То есть, виноват компьютер. А что человек неизбежно сделает ошибки, если компьютер ему это позволяет — меня не волнует.

Вот не понял ни что вы этим пытались сказать, ни зачем вы это здесь пытались сказать.

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

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Казалось бы:

всё это разбивается о реальный мир, в котором приходится работать с другими людьми, саппортить чужой код, использовать чужие библиотеки итп

Но нет. Как послушаешь дятлов, вроде вас, так начинает казаться, что это какая-то высшая материя, недоступная простым смертным.

она может и доступная, но лучше ментальные ресурсы потратить на что-то более полезное

anonymous ()
Ответ на: комментарий от byko3y

Вывод типов… ну это как бы проблема, которую C++ сам же и создал, поскольку нет грамотно спроектированных ЯП, которые бы заставляли кодера через строчку писать мантры в духе std::map<std::string, std::string>::iterator it", не говоря уже про волшебный выхлоп компилятора при ошибке с этим типом: std::map<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator > >

ну, как сказать, вывод типов придумали до C++, так что проблему создал явно не он, но то, что описание типов в C++ это порнография - ежу понятно

anonymous ()
Ответ на: комментарий от anonymous

ну, как сказать, вывод типов придумали до C++, так что проблему создал явно не он, но то, что описание типов в C++ это порнография - ежу понятно

Пост не о форумчанах

В дурдоме много Наполеонов, Лобачевских, ...  
И знаете  

Жалко их …


Далее о форумчанах  

Пост к тому, что у каждого из нас имеется свое МНЕНИЕ и   
ИМХО лучше уважать и помогать друг другу, чем переходить на личности ...
anonymous ()
Ответ на: комментарий от anonymous

она может и доступная, но лучше ментальные ресурсы потратить на что-то более полезное

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

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Для тех, кто хочет тратить ментальные ресурсы на что-то более полезное, есть и куча других языков программированиЯ

спасибо, мы знаем, и успешно их используем для работы

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

а это у нас для хобби

anonymous ()
Ответ на: комментарий от fsb4000

нахрена нужна какая-то линейная алгебра в стандарте?

Это удобнее. Вот один из коментариев в том же Reddit:

Здравствуйте, я - профессор. Хочу, чтобы вы сделали мне фортран. Суть такова...

Это, в принципе, всё, что нужно знать о стандартизации С++ в 2К2х.

LamerOk ★★★★★ ()
Ответ на: комментарий от LamerOk

Это, в принципе, всё, что нужно знать о стандартизации С++ в 2К2х.

Ответ не вам, а «профессорам» …

Основное назначение языка программирования - предоставить удобный синтаксис и управляющие операторы для разработки алгоритмов ...
anonymous ()
Ответ на: комментарий от LamerOk

Это, в принципе, всё, что нужно знать о стандартизации С++ в 2К2х.

Ну про пропозалы про pattern matching можно тоже самое сказать:

Здраствуйте, я видел в Rust pattern matching. Хочу чтобы вы сделали тоже самое для С++.

Или про https://wg21.link/p2300 , есть и такие комментарии:

An internal facebook product. Wow.

And it runs on LINUX. Unimaginable.

We've been blind. Of course this justifies setting libunifex in stone for the whole world.

при любом изменении есть недовольные…

Но лучше когда что-то делают, чем когда ничего не делают, разве нет? Если у вас есть предложения лучше, то предлагайте их комитету…

fsb4000 ★★★★★ ()
Ответ на: комментарий от fsb4000

Но лучше когда что-то делают, чем когда ничего не делают, разве нет?

Нет. Гуглим в яндексе «медвежья услуга» и «троллейбус + буханка».

Если у вас есть предложения лучше, то предлагайте их комитету…

Я бы предложил им самораспустится, но они ведь не последуют…

LamerOk ★★★★★ ()
Ответ на: комментарий от eao197

a) приведенный пример имел отношение к предлагаемому к включению в C++ паттерн-матчингу. Т.е. хотя бы в синтаксисе из текущего пропозала

Вместо того, чтобы четко и ясно сразу перевести обсуждение на конкретный документ, ты свел обсуждение к «сами придумывай, о чем мы будем говорить», а когда я предложил — начал возмущаться, что я предложил не то, что тебе хочется. Из чего я могу сделать вывод, что тебе нравится размазывание соплей по треду, саркастично изображенное одной миниатюрой:

 — Срамота...
 — Проститутка...
 — Ну что, бабули, продлять будем?
 — Да, еще на полчаса... Проститутка...
 — Ой стыдоба...

В сишке у вас просто нет ничего сравнимого с std::variant. Применение union в чистом Си не имеет никаких гарантий со стороны компилятора, все лежит исключительно на плечах разработчика

Никто не мешает завернуть данные в непрозрачный контейнер и обращаться к нему через функции, которые будут давать некоторые гарантии с некоторой стоимостью по времени выполнения, немного превышающей стоимость std::visit, реализованного через vtable. Гарантии со стороны компилятора здесь будут в том плане, что компилятор тебя наругает при попытке передачи некорректных типов в интерфейсную функцию.

Законодатели C++ встали в такую позу, что у них не может быть накладных расходов во время выполнения, потому все проверки в рантайме и информацию для рантайма они беспощадно вырезают. Это прямо-таки взято за идеологию, и цена этой идеологии — криптографический исходный код, undefined behaviour, значительное усложнение отладки, особенно с оптимизацией, а ведь далеко не всегда приемлимо отлаживать полностью деоптимизированный код. Сишная реализация на функциях тоже многословна, но речь ведь идет про то, что кресты чем-то там лучше, а выясняется, что в крестах просто больше описательных инструментов, из-за чего больше возможности попасть в удобную нишу — сами по себе кресты без сишных фич получаются на удивление унылы.

Т.е. вы осознаете, что C++ находится на другом уровне, но с упорством, достойным лучшего применения, пытаетесь натягивать сову на глобус?
Что ж, гипотеза об отсутствии у вас мозгов получает еще одно подтверждение

На языках (почти) без накладных расходов в рантайме можно написать удивительно сложную логику и уровни абстракции. Например, Rust, как ни странно. Просто, все настолько привыкли к недружелюбности C++, что теперь уже и не замечают аналогичной недружелюбности Rust, хоть эта сложность необязательна и раст — это неплохой пример ЯП промежуточного уровня, где можно писать на имутабельных структурах. Или Swift, который как раз представляет из себя кресты с богатой встроенной семантикой, как то строки, кортежи, массивы, ассоциативные массивы, optional — всё это со встроенным сахарком, без многострочных определений типов.

byko3y ★★★ ()
Ответ на: комментарий от eao197

Но нет. Как послушаешь дятлов, вроде вас, так начинает казаться, что это какая-то высшая материя, недоступная простым смертным. Хотя все это относится к любому языку программирования.

Это не «я ошибся» — это «баг». То есть, виноват компьютер. А что человек неизбежно сделает ошибки, если компьютер ему это позволяет — меня не волнует.

Вот не понял ни что вы этим пытались сказать, ни зачем вы это здесь пытались сказать

Объясняю: чтобы сделать свой «безупречный» код, ты прошел через множество этапов тестирования, каждый из которых экспоненциально снижает вероятность появления багов, но никогда не делает ее равной нулю. «Мой самолет скорее всего не упадет» — это слабое утешение, потому в совке конструкторы самолетов предпочитали ездить на поезде.

byko3y ★★★ ()
Ответ на: комментарий от LamerOk

Здравствуйте, я - профессор. Хочу, чтобы вы сделали мне фортран. Суть такова...

Это, в принципе, всё, что нужно знать о стандартизации С++ в 2К2х

Меня может только улыбать тот факт, что в 2021 году кто-то до сих пор знает, что язык программирования Фортран существует. Даже в моем институте уже писали расчеты на паскале, а про фортран никто слыхом не слыхивал, хотя старых пердунов там было предостаточно.

byko3y ★★★ ()
Ответ на: комментарий от LamerOk

Если у вас есть предложения лучше, то предлагайте их комитету…

Я бы предложил им самораспустится, но они ведь не последуют

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

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Вместо того, чтобы четко и ясно сразу перевести обсуждение на конкретный документ,

Т.е. вы бросились обсуждать паттерн-матчинг в теме про C++23 даже не имея представления о текущем пропозале? Отлично, отлично.

Из чего я могу сделать вывод, что тебе нравится размазывание соплей по треду

По количеству соплей вас здесь никому не превзойти.

Правильно я понимаю, что вместо хоть каких-то доказательств тезиса про проблемы с масштабированием паттерн-матчинга в C++, вы смогли высрать только несколько очередных абзацев собственной боли?

Никто не мешает завернуть данные в непрозрачный контейнер и обращаться к нему через функции, которые будут давать некоторые гарантии с некоторой стоимостью по времени выполнения, немного превышающей стоимость std::visit, реализованного через vtable.

Ох ё ж моё. Ну что опять за бред? Откуда-то std::visit на vtable…

раст — это неплохой пример ЯП промежуточного уровня, где можно писать на имутабельных структурах

В Rust в плане константности что-то покруче, чем в C++? Что вам мешает писать на имутабельных структурах на C++?

Или Swift, который как раз представляет из себя кресты с богатой встроенной семантикой, как то строки, кортежи, массивы, ассоциативные массивы, optional — всё это со встроенным сахарком, без многострочных определений типов.

И производительностью уровня Go в лучшем случае.

Не говоря уж о том, что за пределы замкнутой экосистемы Apple этот Swift так и не вышел. Т.е. писать на нем серьезный софт с поддержкой нескольких платформ смогут не только лишь все. В отличии от C++.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Т.е. вы бросились обсуждать паттерн-матчинг в теме про C++23 даже не имея представления о текущем пропозале? Отлично, отлично

Зачем мне следить за всеми этими предложениями? Я даже вслепую могу сказать, что фундаментальных проблем крестов решить они не смогут, а дальше уже остаются сорта говна.

Ох ё ж моё. Ну что опять за бред? Откуда-то std::visit на vtable

libstdc++ почитай на досуге. Справедливости ради, этот вариант более эффективен, чем условные переходы.

В Rust в плане константности что-то покруче, чем в C++? Что вам мешает писать на имутабельных структурах на C++?

Низкий уровень и радости стрельбы в ногу.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

libstdc++ почитай на досуге.

А, ну это конечная. В общем я до этого уже говорил, что данный балабол просто пастит рандомные базворды из текста даже не понимая их значения.

Вот типичный тому пруф. Оно увидело кейворд «vtable» в коде, при этом оно код ни читать ни писать не может. Далее загуглил vtable и ему дали ссылку на vtable из крестов.

Проблема только в том, что там совершенно не та vtable и это просто левое название. Сейчас читаем как оно будет мазаться потугами вида «да я не то имел ввиду», «да я и не говорил про ту самую vtable». Это всё полная чушь. Потуга vtable на таблицу не имеет смысла. Потому что это реализация через таблицу.

nonedi18 ()
Ответ на: комментарий от LamerOk

Какое обратное направление?

Обратное «прямому».

И что же такое «прямой порядок»?

Кто-то не умеет в логику.

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

А ключи unordered_map образуют последовательность? Я думал множество.

utf8nowhere ★★ ()
Ответ на: комментарий от Benis

Помню, царь меня пытался убедить что результатом glvalue является value. После тычка в https://timsong-cpp.github.io/cppwp/n4868/basic.lval#def:result,glvalue и https://timsong-cpp.github.io/cppwp/n4868/basic.lval#def:glvalue начал говорить что-то вроде что «у value более общий смысл, это может быть и object, и function». Короче, Царь путается в элементарщине.

anonymous ()
Ответ на: комментарий от LamerOk

Прочитал ещё раз. В общем, знатно тебя попустили. Добавлю к этому из стандарта: … the absolute order of elements in an unordered container is not specified ….

Как я понимаю, ничем не запрещено двум итерациям по контейнеру с n уникальными ключами, без его модификации между итерациями, выдать любые две различные перестановки из n! (! — это факториал) возможных перестановок ключей. И какая из этих двух перестановок называется «прямым» порядком???

utf8nowhere ★★ ()
Ответ на: комментарий от anonymous

https://imgur.com/a/AWZyybw

without becoming a member of the working groups it is not possible to get any information

Попахивает ЛПП.

Имеешь ввиду что можно выцепить членов рабочих групп в чатиках, youtube, reddit, twitter, реале и узнать всю нужную инфу :) ?

anonymous ()
Ответ на: комментарий от byko3y

Пока вы там чухаетесь

Возможно, и я если что - немножко нетрезв в силу праздников в данный момент.

что я совсем не тот, кого ваша контора могла бы искать.

Наверное. Я не хочу обсуждать то что я увидел - но я правда желаю Вам всего самого лучшего. То что Вы хотите там где Вы хотите мы не готовы платить однозначно. Это настолько выше market что даже не смешно.

bugfixer ()
Ответ на: комментарий от bugfixer

То что Вы хотите там где Вы хотите мы не готовы платить однозначно. Это настолько выше market что даже не смешно

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

byko3y ★★★ ()
Ответ на: комментарий от byko3y

потому что я не помню, чтобы что-то хотел и называл конкретную позицию.

В треде про «макаку» Вы называли цифры от $4k до $6k /month. По вашим утверждениям EPAM предложил по нижней планке. Я считаю это очень generous offer, учитывая location - соглашайтесь.

bugfixer ()
Ответ на: комментарий от bugfixer

В треде про «макаку» Вы называли цифры от $4k до $6k /month. По вашим утверждениям EPAM предложил по нижней планке. Я считаю это очень generous offer, учитывая location - соглашайтесь

Вы очень странные ребята. Я даже не рассказал толком, что умею, но ценник на мне уже висит. Тиресно...

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Почитал ваш тред Почему решая литкод ты никогда не станешь архитектором (но на самом деле никогда не хотел им быть) Почему решая литкод ты никогда не станешь архитектором (но на самом деле никогда не хотел им быть)

Технологии разработки проектов, компиляторы, … ныне такие же как были 60 лет назад.

Непочатый край задач, которые позволят вести разработку проектов /и иных задач/ на порядки проще, лучше и функциональней …

Если вы действительно знаете как/зачем/почему, то какая проблема?
Решите хотя бы одну из множества задач.

IT же компании ныне в основном ПАЛОЧКОЙ КОВЫРЯЮТ, то что ныне есть и ВСУЧИВАЮТ потребителям.

НИКТО вам за ХОРОШУЮ ИДЕЮ платить не будет.

Понимаете из Г..А, конфетку не получиться сделать ...
anonymous ()
Ответ на: комментарий от anonymous

Если вы действительно знаете как/зачем/почему, то какая проблема?

Потому что у современной экономики есть волшебная особенность — она работает ради ВВП. То есть, ради максимизации человекочасов, выраженных цифрами в БД банка. Зачем что-то изобретать, если имеющиеся технологии позволяют успешно преумножать человекочасы страдания? Вот возьми производителей авто — они давно что-то подобное поняли, и потому нынче выпускают автомобили, у которых через два года эксплуатации как по команде выходят из строя половина узлов. Прогресс, чо.

byko3y ★★★ ()