tgoop.com/logofalprog/153
Last Update:
Что я думаю про C++20
#кодище
На днях С++20 был окончательно утверждён. Осталось чисто формальная публикация ISO, которая может затянуться на пару месяцев. Но даже если это произойдёт в 2021, то стандарт всё равно будет называться С++20, потому работу над ним закончили в этом году. В связи с чем я решил пробежаться по основным нововведениям и написать, что же я про них думаю. Интересно это будет трём с половиной человекам, поэтому выскажусь максимально коротко и не шибко художественно.
Концепты — это SFINAE с человеческим лицом. Ну, вернее так говорить не совсем корректно, потому что это скорее добавка, чем замена, но лицо у них явно более человекообразное. Я уже маленько распробовал, и мне очень нравится. Язык становится удобнее и это прекрасно.
Модули распробовать не удалось. В теории крутая штука, хотя и довольно противоречивая. Надо сильно менять привычки и перестраивать мозг, что не очень-то получается в условиях, когда компиляторы до сих пор не до конца в них умеют. MSVC, например, не всегда понимает, что модули изменились, и что их надо перекомпилировать. Когда ты и сам ещё не до конца понимаешь правила игры, такое безобразное поведение компилятора совсем не помогает вниканию. Вернусь к ним в следующем году.
Корутины в С++ — это настоящий computer science оргазм. Я в принципе обожаю корутины. Это одна из моих любимых концепций программирования вообще, но тут она столкнулась с крестовой политикой «не платишь за то, что не используешь», и вместе они родили совсем уж потрясного ребёночка. Даже не zero, а negative-overhead получился. Я пока в реальных проектах не использовал (пока довольствовался boost-овыми корутинами), но я смотрел пару докладов Гора Нишанова, который их разработал. И там очень круто. Посмотрите, кто не видел. Опять же круто, что всё это чудо в стандарте, а не в бусте.
Ну и понятно, что в языке появилось много маленьких приятностей. Из того, чего прям остро не хватало — это consteval. Следить за такими штуками сейчас совсем не удобно. Ну и строковые литералы в качестве параметра шаблона тоже кайфово.
Не могу сказать, что С++20 прям совсем другим языком ощущается, как было с С++11. Нововведения очень крутые и важные, но они касаются в основном каких-то специальных разделов, а не бытовухи. Единственное изменение, которое сильно меняет ежедневную практику — это модули. Но их распробовать пока не удалось.
BY Log of Alprog
Share with your friend now:
tgoop.com/logofalprog/153