Лекция 12. С++20 и обозримое будущее

preview_player
Показать описание
На лекции мы поговорим о:

• Концепах (Concepts)
• Библиотеке диапазонов (Ranges)
• Сопрограммах (Coroutines)
• Модулях (Modules)
• Контрактах (Contracts)
• Даешь больше constexpr! (constexpr all the things!)
• using enum
• Расширении для дедукции типов шаблонных классов (Extension for class template argument deduction)
• Макросах для тестирования функциональности (Feature test macros)
• Атрибутах (Attributes)
• std::format
• std::jthread
• И о многом другом...

-----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Рекомендации по теме
Комментарии
Автор

Уважаемый Филипп, прошло 4 года, пора бы уже новый курс сделать, шикарный плейлист, жду нового, с наилучшими пожеланиями!

Simo_IT_channel
Автор

честно говоря, всё жду что Филипп запишет продолжение, по 23 стандарту :)

wuvdddr
Автор

Спасибо за цикл! Посмотрел с удовольствием!

Budetov
Автор

Видимо придётся пересмотреть саму идею шаблонов. Потому что главный минут в том как раз что в качестве типа T можно протолкнуть всё что угодно... Но это положено в основу всех шаблонов... А все примочки приводят к усложнению кода тогда как его надо упрощать. Потому что если посмотреть тенденции то уже видно что никто ничего не понимает что там происходит, хотя вначале всё было понятно и просто... И дальше буде ещё хуже. Нужен качественный скачок, а не количественный. Т.е. мы должны придумать нечто новое не шаблоны, а что-то среднее между перегрузкой функций и шаблонами. Основное требований к этому новому 3: чтобы всё это упрощалось и уже на этапе создания мы могли делать только рабочие и валидные экземпляры, а не произвольные. 2 условие это всё должно быть намного проще. И 3-ее чтобы не надо было делать всё в хедерах и инстанцировать а в cpp файлах, компилить и включать в dll а потом из них тащить и не компилить вовсе а просто подгружать. ну или в статические. А пока шаблоны таковы, что их надо инстанцировать каждый раз компилить и пихать туда можно всё что угодно... Степанов конечно молодец что всё это придумал, но пришло время переработать его идею и придумать нечто получше. Идея концептов как раз наводит на эту мысль. Только идти надо не от ограничений а напротив написать некий набор допустимых типов и сразу его задать. И задавать его из подмножеств каких-то, которые надо определить из объединения которых типов которые надо задать изначально. Например числа, целые числа, числа с плавающей точкой, строки символы, булевы типы, массивы символов. Пора бы уже ввести строку как базовый тип как это есть во многих языках и работать с ним наравне с числами. А так же разделить символы и числа... и примочками тут не обойтись. Надо менять основания языка и концепцию шаблонов. Потому что она уже почти зашла в тупик. Любые её усовершенствования делают только хуже. Да просто тупо отказаться от идеи того что все функции глобальные а приравнять. В Паскале к примеру из которого вы стащили идею модулей которая стара как мир и ничё... Там же была изначально внедрена идея вложенных функций. Неплохо было бы отказаться от идеи нуль терминированых строк а перейти на строки с длинной. Они кстати тоже были в Паскале. Если вы стащили оттуда идею модулей, то почему не взять так же и идею строк с длинной?! И идею вложенных функций. Ведь паскаль как бы его не хаяли строго структурно ориентированный язык в отличие от С++. Существование Паскаля доказывает что так можно сделать и это будет работать. Да многие языки умерли по тем или иным причинам часто не имеющим отношения к качеству самого языка его плюсов и минусов а по некоторым левым стечениям обстоятельств, но идеи, положенные в их основу оч даже хорошие и глупо эти все наработк в течение десятилетий сбрасывать со счетов и заново изобретать велосипед... Например был такой ЯП как perl. Он умер потому что умер его создатель Ларри. Всего лишь... И Perl не развивается уже он застыл во времени. Потому что никто не смог поддерживать идеи Ларри слишком они сложны. Были многочисленные попытки и наработки но они не увенчались успехом. А ведь в основу Perl были заложены регулярные выражения. Они туда входят на уровне базового синтаксиса. И там они самые быстрые. И почему нельзя в C++ ввести регулярку на базовом уровне? А да, мы не такие гениальные и умные как Ларри. Это да конечно... так вот я о чём? Человека надо совершенствовать а не инструменты... А мы заботимся именно об иснтрументах а на человека забиваем. А человек не будет развиваться если не давать ему нагрузку на мозг. Если не тренировать мозги то он будет деградировать а потом альцгеймер и усё человек уже и не человек, а растение... А почему? А потому что мозг тренировать нужно. А мы что делаем? А мы убираем человеческий фактор. Нынешнее поколение программистов уже не то что писало код под ХР и тем более не то что писало код под DOS. Я думаю если их заставить это делать ничего не выйдет они не смогут. Там ведь всё продумывалось до мельчайших деталей с полным пониманием того что происходит и код был совершенный. А сейчас всё делают тяп ляп. А вся идеология развития программирования ведёт к этому. И не только... так что надо переделывать шаблоны господа, примочками тут уже не обойтись!!! Понятно? Действуйте! иначе через лет 5 максимум через 10 вы вобще будете писать практически неработающий и оч медленный код... А это будет конец... Он и сейчас уже плохой. А не поймёте, слишком сложный уже чтобы понять и в результате вы его пишете без понятия на обум. Попытки рассказать как это происходит не проясняют всей картины, мы ходим по верхам только, ясности нет. Раньше она была. А в таких условиях написать хороший код практически невозможно, разве что случайно... А главное это хороший качественной код. Всё остальное за нас сделает DevOps. Пусть каждый занимается своим делом а не всем подряд. Так успеха не будет. Нужна специализация. Вот...

kpanat
Автор

я не могу понять, а по какой причине designated initialization появилась только в c++20, когда в C она была чуть ли не с самого начала? по-моему очень хорошая и удобная функция, а главное - используя ее, читабельность кода повышается
главное ее реализовали в c++20, но все же некоторые ее возможности, которые были в C опустили
что это: невозможность реализации или особенности синтаксического анализа? очень хотелось бы видеть эту функцию полноценной

inth
Автор

Последняя лекция в цикле или ещё планируется?

igorlevdansky
Автор

Как- то все нечетко и размазано. Сложно зацепиться за мысль.

ivanaaa