LINUX.ORG.RU

Стандарт C++20 утверждён

 


2

10

https://www.reddit.com/r/cpp/comments/f47x4o/202002_prague_iso_c_committee_trip_report_c20_is/

Желающие могут попробовать написать новость.

По виду std::format больше похож на fmt, чем на boost::format, что не может не радовать.

Небольшой обзор есть в статье на Хабре: https://m.habr.com/ru/company/yandex/blog/488588/ от Антона Полухина.

★★★★★

Последнее исправление: grem (всего исправлений: 1)

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

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

Упускается из виду 20 лет, в течении которых не нужно было ничего никуда бэкпортировать. А компиляторы с нормальной поддержкой C++98 можно было менять без особых хлопот.

Теперь, после перехода на C++17, может пройти еще лет 10 прежде чем вы сделаете еще один такой необратимый переход.

Тогда как в Rust этот необратимый переход может происходить раз в пару месяцев. Может быть даже непреднамеренно.

Но дело не только в этом, компилятор то единственный и смысла идти на старые версии фактически (в отличии от C++) нет.

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

Но даже в С++ не вижу какой то большой пользы от подобных библиотек

Тем не менее, она есть. Можно и другие библиотеки рассматривать, не только те, что фичи из новых стандартов в старый C++ бэкпортируют. Тот же Boost.Asio вполне себе работает и на C++11, даже не смотря на выход три года назад C++17 и приближающийся выход C++20. Да вроде и на C++98 еще работает.

В Rust-е, теоритически, можно зафиксироваться на уровне какого-нибудь Rust 2018. Но тогда можно остаться без сторонних либ, авторы которых и не думают с ночных сборок куда-нибудь слазить.

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

new на каждый чих?

Нет, наоборот, все в статических массивах. В результате куча лишний версий софта, где различия наполовину только лишь в размере этих массивов. И потом сидят ждут пока все это пересоберется. Жить можно, конечно, но можно же жить лучше. И таких мелочей набирается приличная кучка.

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

Все правильно говорите. Но Раст неизбежно столкнется с новыми вещами, которые ранее не встречались и окажется ровно в такой же ситуации как плюсы в свое время.

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

Особенно адепты Pascal и Delphi.

Особенно адапторы Pascal и Delphi.

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

наоборот

Значит не все так плохо. Можно научить.

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

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

Rust в этом месте получше С++, потому что даже для старых LTS для раста обновляют компилятор:

ubuntu 16.04, rustc 1.39:

https://packages.ubuntu.com/xenial/rustc

ubuntu 16.04, g++ 5.3.1:

https://packages.ubuntu.com/xenial/g++

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

Потому что даже на старых lts компилятор gcc «системообразующий», в отличии от.

Да, в LTS обновляют браузеры, а новый Firefox требует нового же Rust. А т.к. нигде больше Rust не нужен, то его можно обновлять и не переживать про совместимость.

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

я просто заметил, что дефолтный rustc обновляют в lts.

Не знаю насчёт ppa, но если нужен свежий rust, то пишут устанавливать так:

curl -sSf https://static.rust-lang.org/rustup.sh | sh

и вот ещё полезная ссылка, если нужен свежий gcc который сможет собирать под древние Linux, то есть версия с musl:

https://github.com/richfelker/musl-cross-make

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

не знаю, к Linux теоретически только требование к ядру есть и всё:

Linux (2.6.18 or later)
fsb4000 ★★★★★
()
Ответ на: комментарий от eao197

в, которые «тормознутость C++» определяют по скорости компиляции?

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

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

«Си с классами»,

я свой подход называю «СС без классов»

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

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

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

пять минут задержки между экспериментами это очень много на фоне отсутствия этих задержек.

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

работа из рантайма переносится на стадию компиляции

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

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

а вот в дикой природе ни софта, ни вакансий для Rust-оманов в товарных количествах все никак не появляется

Не благодари - `Following a very successful first foray into Rust we are migrating an established codebase from C to Rust, and building new functionality primarily in Rust.`

https://jobs.apple.com/en-us/details/200144575/software-engineer

Стандарт cc, к сожалению, это как postgres - еще везде используется и даже развивается, но походу уже всё

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

поэтому чем больше шаблонов, тем сильнее рвотный рефлекс

Почему мнение неасилятора должно приниматься во внимание? Шаблоны – часть языка, возможно, лучшая за последние 25 лет. Если вы не в состоянии эту часть использовать, то может вы языком ошиблись?

я свой подход называю «СС без классов»

Замечательно. А вы вообще кто?

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

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

пять минут задержки между экспериментами это очень много на фоне отсутствия этих задержек.

Так может хоть вы расскажите о том, чем занимаетесь? А то тут многие говорят про негативное влияние задержек, но почему-то сливаются на прямых вопросах.

У меня, например, основные задержки – это непонимание задачи или поиск решения. Что может занимать часы, дни, а то и недели. На фоне недели без программирования, только с изучением предмета и расписывания разных вариантов на бумаге компиляция в 5 минут проблемой не выглядит.

eao197 ★★★★★
()
Ответ на: комментарий от dinama
  1. треть это не всего-лишь

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

Причем полного исключения расходов на парсинг все равно не будет. Т.к. даже бинарное промежуточное представление модуля нужно подгрузить и разместить в памяти компилятора, что происходит не мгновенно. Так что эта треть в реальности может сократиться всего лишь до четверти, может до 1/5. Но полностью не исчезнет.

И вместо 9s на компиляцию я получу, в лучшем случае, 7s.

Как-то слишком слабенько, чтобы разделить C++ на два диалекта: pre-C++20 и post-C++20.

  1. от трети до половины

Это вообще что? Объем ваших мозгов по отношению к среднему LOR-овцу?

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

Не благодари

Не буду. Поскольку вы настолько тупы, что не увидели в тексте важного: в товарных количествах.

Если единственная Rust-овая вакансия от Apple производит впечатление наличия Rust-овых вакансий в товарных количествах, то остается только порадоваться за адептов этого языка. У того же Go через 5 лет после релиза стабильной версии 1.0 эти вакансии можно было найти на каждом заборе.

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

бъем ваших мозгов по отношению к среднему LOR-овцу?

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

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

ти вакансии можно было найти на каждом заборе.

так ты применимость языка меряешь числом вакансий? когда у тебя начинается «товарное количество» - когда на заборе? ты уже перешел на go?

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

я думал, что имею дело с интеллигентным человеком

Вы ошиблись. А вот я, похоже, нет.

так ты применимость языка меряешь числом вакансий?

Не применимость, а востребованность. Это взаимосвязаные, но не тождественные вещи.

когда у тебя начинается «товарное количество» - когда на заборе?

Да. Тогда счет идет уже на тысячи.

Но интересно другое: вы начинаете читать написанное только когда вас мордой ткнут в то, что вы с первого раза прочитать не смогли?

ты уже перешел на go?

Как из того, факта, что Go оказался более востребованным, чем Rust, должен проистекать переход на Go? Сможете озвучить свою люгическую цепочку? Ну, при условии, что она у вас была вообще.

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

ак из того, факта, что Go оказался более востребованным, чем Rust, должен проистекать переход на Go?

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

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

Так что если от названия «Rust» возбуждения не случается, а нужен практичный инструмент для текущих задачь, то C++ вполне себе еще конкурентоспособен.

конкурентоспособен с кем? и да, хам, раскрой логическую цепочку того, как у тебя практичная применимость для текущих задачЬ вытекает из числа объявлений на заборе?

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

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

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

Обычная оценка рисков.

раскрой логическую цепочку того, как у тебя практичная применимость для текущих задачЬ вытекает из числа объявлений на заборе?

Она не вытекает. Это у вас в башке чего-то не хватает, чтобы внимательно прочитать и осознать написанное.

Я сказал, что если есть текущие задачи, с которыми C++ справляется (т.е. является практичным инструментом), то может не быть смысла менять его на что-то другое. Т.е. C++ конкурентоспособен по сравнении с другими языками, которые могли бы применяться для этих же задач. И список альтернатив может включать чистый С, Java, C#, Rust, Go, D, Python и пр. В зависимости от задачи.

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

И эти люди называют растовцев сектантами и пропагандистами. Очень наглядно, да.

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

Правильно-ли, хам, я тебя понял:

1) rust по твоему мнению не востребован, потому-что для него мало инструментов и документации и разработчиков

2) ты не используешь rust потому-что он невостребован

3) ты перейдешь на него когда «документации, инструментов и разработчиков» для него станет больше чем для сс


?

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

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

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

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

rust по твоему мнению не востребован, потому-что для него мало инструментов и документации и разработчиков

У него есть и инструменты, и документация и разработчики. Но массовым он не будет из-за его синтаксиса. Это такой себе perl для системщиков. И, как и у perl, у него будет свой кусок пирога, он будет необходим, но универсальным и основным он не станет.

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

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

а если гиганты стали на низах у себя внедрять rust вместо c - придется запастись смирением и освоить..

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

Очень надеюсь, что синтаксис C++ когда-то будет забыт как страшный сон.

Правда, Rust тоже не блещет. А вообще, не в синтаксисе реальные проблемы их обоих.

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

а у когого языка хороший синтаксис? я вот смотрел swift, но там а) кемелНотацияВСтандартнойЛибе б) счечик ссылок - об управлении памятью забудь

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

а у когого языка хороший синтаксис?

Субъективно же. Хотя есть и объективное - сложность грамматики, и у Rust с этим куда лучше чем у C++. Практически у всех лучше.

об управлении памятью забудь

А оно сильно надо?

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

Как тебе паскалеподобные языки? Ada или Oberon. Второй весьма интересен попыткой минимизировать сложность синтаксиса. Я на нём не писал, но мне кажется, что тем самым усложнили сложность разработки на нём.

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

У него есть и инструменты, и документация и разработчики. Но массовым он не будет из-за его синтаксиса. Это такой себе perl для системщиков.

У раста за исключением объявления функций, типов и параметров (которые заимствованы из OCaml) сишный или точнее C++ подобный (шаблоны почти также объявляются) синтаксис. Ничего общего с perl вообще нет. И при этом части заимствованные из OCaml более читабельны чем аналоги в C++. Небольшую дополнительную, но не синтаксическую, а семантическую сложность привносят только lifetimes, но попытки реализовать lifetimes для С++ через атрибуты и т. п. выглядят ничем ни лучше, скорее даже страшнее.

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


А оно сильно надо?

ну не помешала бы степень свободы. арифметика указателей, например - на этом немало суровых оптимизаций.


вообще, я не знаю кто этим занимается, но под linux через пень и колоду собирается swift, зато вот SJW уже тут
https://www.swiftforgood.com/#charity

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

На постой, если он оппонент, то ты тоже слабоумный же.

Может объясните дураку, как из того факта, что dinama оппонирует мне в этом споре, следует мое слабоумие?

Если у вас какое-то особое определение для термина «оппонент» есть, то поделитесь, пожалуйста. Реально интересно.

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.