З.Ы. Разве что кваз цитирование не помешало бы. Но посмотрим, что примут в результате.
Если примут — в моем коде исчезнет почти всё метапрограммирование на шаблонах и всё на препроцессоре, а код станет читабельнее в разы и компилироваться будет мгновенно, по сравнению с сейчас.
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, jazzer, Вы писали:
J>>Но на видео все очень понятно, рекомендую посмотреть за обедом
NB>смысла нет. до 20 года все кучу раз переделают.
Ну оно и сейчас сырое, его доделывать много надо (я уже попробовал).
Здравствуйте, jazzer, Вы писали:
J>Кто боялся — смотрите видео и не бойтесь больше.
Это всё баловство. Развлечение для студентов. Не будет этого в промышленном коде еще очень долго.
Вот столько уже всего наизобретали, но тут подавляющее большинство видимо никогда не делало промышленный код либо никогда просто не участвовало в очень огромных проектах которые начинались в очень лохматых 90-ых годах, и которые до сих пор работают. Мало того, многие даже не в курсе что до сих пор приходится поддерживать всякие древние версии винды. И кто и когда всё это будет переделывать или доделывать с использованием новых стандартов — непонятно. Кажется никто и никогда. У нас с++11 то еле еле кое где... про 14-17 вообще пока даже и не упоминается.
Не нужно.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Здравствуйте, jazzer, Вы писали:
J>>Кто боялся — смотрите видео и не бойтесь больше.
МД>Это всё баловство. Развлечение для студентов. Не будет этого в промышленном коде еще очень долго.
у меня в моем промышленном коде это очень даже нужно.
Далее, как насчёт Qt? IDL? C++/CLI? ProtoBuf?
Это все не промышленный код?
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Это всё баловство. Развлечение для студентов. Не будет этого в промышленном коде еще очень долго.
нужно понимать, что некоторые кодеры все же разрабатывают новые проекты и используют новые технологии.
не завидую, конечно, тем, кому приходится сопровождать древнее де***о динозавров %)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, jazzer, Вы писали:
J>у меня в моем промышленном коде это очень даже нужно.
J>Далее, как насчёт Qt? IDL? C++/CLI? ProtoBuf? J>Это все не промышленный код?
Ну в такой постановке оно вроде как всем нужно. И мне тоже. Но... увы!
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, niXman, Вы писали:
X>нужно понимать, что некоторые кодеры все же разрабатывают новые проекты и используют новые технологии. X>не завидую, конечно, тем, кому приходится сопровождать древнее де***о динозавров %)
1. Выделил.
2. Я тоже сам себе не завидую, и не любитель динозавров. Но железобетонный аргумент "Оно и так до сих пор всё работает." разбивает в хлам все новые стандарты.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Мёртвый Даун, Вы писали:
МД> ... железобетонный аргумент "Оно и так до сих пор всё работает." разбивает в хлам все новые стандарты.
да, если вы "невольник".
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>Здравствуйте, Мёртвый Даун, Вы писали:
МД>> ... железобетонный аргумент "Оно и так до сих пор всё работает." разбивает в хлам все новые стандарты. X>да, если вы "невольник".
А тут чо все свободные художники?
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Мёртвый Даун, Вы писали:
МД>А тут чо все свободные художники?
откуда ж мне знать?..
зы
поймите, я не пытаюсь вам что-то доказать или в чем-то убедить вас. я лишь указал, что новые стандарты совсем не обязательно "баловство"/"развлечение для студентов"/"Не будет этого в промышленном коде еще очень долго"
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, Мёртвый Даун, Вы писали:
МД>1. Выделил. МД>2. Я тоже сам себе не завидую, и не любитель динозавров. Но железобетонный аргумент "Оно и так до сих пор всё работает." разбивает в хлам все новые стандарты.
На самом деле все вот эти "новомодные" штуки в С++ это запрос бизнеса, н-р парней вроде Джаззера которые делают системы на которых зарабаывают миллионы и миллионы долларов. Им это надо, тебе нет, но они платят поэтому это будет в стандарте.
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Это всё баловство. Развлечение для студентов. Не будет этого в промышленном коде еще очень долго.
МД>Вот столько уже всего наизобретали, но тут подавляющее большинство видимо никогда не делало промышленный код либо никогда просто не участвовало в очень огромных проектах которые начинались в очень лохматых 90-ых годах, и которые до сих пор работают.
Здравствуйте, jazzer, Вы писали:
J>Кто боялся — смотрите видео и не бойтесь больше.
тягомотное начало
неудачный формат выбрал Саттер
J> в моем коде исчезнет почти всё метапрограммирование на шаблонах
ой, да ладно заливать
шаблоны и есть метаклассы по сути своей. покажи как новомодными метаклассами реализуются обычные шаблоны? генерализация лично мне неочевидна
в новомодных метаклассах много императива. шаблоны более декларативны
одна из критик шаблонов — слишком много синтаксического шума. функциональный код не видно за лесом скобочек и тд. решают ли эту проблему метаклассы? я пока не вижу
как будет выглядеть процесс дебага фазы компиляции и фазы исполнения — большой вопрос
МД>Вот столько уже всего наизобретали, но тут подавляющее большинство видимо никогда не делало промышленный код либо никогда просто не участвовало в очень огромных проектах
Из того, что до кое-где до сих крутится коболовский код на мейнфреймах, не следует, что ничего новее не нужно.
Здравствуйте, Vamp, Вы писали:
МД>>Вот столько уже всего наизобретали, но тут подавляющее большинство видимо никогда не делало промышленный код либо никогда просто не участвовало в очень огромных проектах V>Из того, что до кое-где до сих крутится коболовский код на мейнфреймах, не следует, что ничего новее не нужно.
Я с этим согласен. Но в меру и не так часто и много.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Kernan, Вы писали:
K>На самом деле все вот эти "новомодные" штуки в С++ это запрос бизнеса, н-р парней вроде Джаззера которые делают системы на которых зарабаывают миллионы и миллионы долларов. Им это надо, тебе нет, но они платят поэтому это будет в стандарте.
Отчасти согласен. Но всвязи с этим это и превращается в тупую гонку стопицотого фреймворка JS. Ломать последнюю цитадель консерватизма, надежности и гибкости — лишнее.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, jazzer, Вы писали:
J>https://youtu.be/6nsyX37nsRs
J>Кто боялся — смотрите видео и не бойтесь больше.
J>З.Ы. Разве что кваз цитирование не помешало бы. Но посмотрим, что примут в результате. J>Если примут — в моем коде исчезнет почти всё метапрограммирование на шаблонах и всё на препроцессоре, а код станет читабельнее в разы и компилироваться будет мгновенно, по сравнению с сейчас.
смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Отчасти согласен. Но в связи с этим это и превращается в тупую гонку стопицотого фреймворка JS. Ломать последнюю цитадель консерватизма, надежности и гибкости — лишнее.
Так метапрограммирование "на компиляторе" на порядок надежнее и гибче, чем метапрограммирование на шаблонах и препроцессоре, не говоря уже о внешней кодогенерации типа какого-нть moc, swig и прочих ужасов, которые почти всегда требуют, чтоб ты готовил им файлы определенным образом (чтобы их убогий парсер не скрючило), а то и вообще писал специальные файлы на их птичьем языке (IDL, к примеру).
Просто потому, что ты можешь заточить генерацию, основываясь на реальной информации, доступной компилятору (типы, члены, имена, размеры и выравнивания полей, наличие или отсутствие чего-то с конкретным типом/сигнатурой и т.п.), а не пользоваться эвристиками (которые всегда найдут, на чем сломаться) или зубодробительными указаниями, которые требуют еще одного языка в языке специально для этих целей.
Здравствуйте, denisko, Вы писали:
D>смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.
Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, jazzer, Вы писали:
J>>Но на видео все очень понятно, рекомендую посмотреть за обедом
NB>смысла нет. до 20 года все кучу раз переделают.
Update от Саттера насчет С++20:
...there is zero chance of this being in C++20. Besides that this needs further development and trying out at increasing scales in more domains, the door for C++20 features closes in two years and this depends on two other features (reflection and compile-time programming) of which only one (reflection) is even yet in progress toward becoming a draft TS itself.
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, denisko, Вы писали:
D>>смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.
J>Сорри, ткни пальцем, где ты это увидел?
Нафига is_virtual_in_base_class вместо (this.has_base_class() && this.base_class.is_virtual(f)) и что он должен вернуть в ситуации
1) Если такой функции нет в базовом классе
2) если нет базового класса
Здравствуйте, Мёртвый Даун, Вы писали:
J>>Кто боялся — смотрите видео и не бойтесь больше. МД>Это всё баловство. Развлечение для студентов. Не будет этого в промышленном коде еще очень долго. МД>Вот столько уже всего наизобретали, но тут подавляющее большинство видимо никогда не делало промышленный код либо никогда просто не участвовало в очень огромных проектах которые начинались в очень лохматых 90-ых годах, и которые до сих пор работают.
Вот как раз в промышленном коде метапрограммирование очень нужно и востребовано, но не для генерации кода, а для наложения на него (на код) ограничений. Для каждого класса можно написать внешний по отношению к нему код проверяющий соответствие некому стандартному подходу разработки. Если постановлено, что никакой метод начинающийся на get_... не может возвращать ссылки, то пишем проверяющий данное правило код и весь неверный код перестаёт компилироваться. Т.е. мы получаем unit test времени компиляции, а не выполнения.
Здравствуйте, denisko, Вы писали:
D>>>смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.
Ну ты докопался до столба
У них вообще пока нет никакого более-менее законченного предложения про то, каким именно будет API и из каких функций он будет состоять. Это статья была (и выступление, которое на нем основано) — просто для оценки, насколько народ (и комитет) вообще готов принять такую фичу в таком виде.
Плюс оно все в любом случае будет базироваться на рефлексии, которую сейчас активно обсуждают (там в работе предложений 5 как минимум, о разных аспектах оной).
Конкретно про функции там http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0670r0.html и в нем есть пока просто is_virtual/is_pure_virtual/is_override, безо всяких base. Правда, непонятно, что там с унаследованными, но не переопределенными, но, опять же, это не финальный дизайн, естественно, такого маразма, как ты написал, никто предлагать не будет. Как вариант, должна быть просто рефлексия по всем унаследованным членам, типа
for ( auto f: $class.inherited().functions() )
{
if ( f.is_virtual() && ! $class.member[f.name()].is_override() )
error("override missing");
}
Здравствуйте, jazzer, Вы писали:
_NN>>Здравствуйте, jazzer, Вы писали: _NN>>Без упоминания сами-знаете-чего как-то скучновато J>Догадайся с полраза, почему J>http://www.rsdn.org/forum/trash/5283252 J>http://www.rsdn.org/forum/trash/5304078
Да мы все в курсе про язык который упоминать нельзя.. Но ссылки что-то не открываются, надо www убрать.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
J>>у меня в моем промышленном коде это очень даже нужно.
J>>Далее, как насчёт Qt? IDL? C++/CLI? ProtoBuf?
V>Протобаф это ужас, летящий на крыльях ночи.
Здравствуйте, Aleх, Вы писали:
A>Можешь раскрыть мысль?
ну, как минимум — тотальный тормоз, у которого хваленная компактная сериализация мало того, что не компактит, так еще и дико тормозит: https://github.com/niXman/cpp-serializers
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, jazzer, Вы писали:
J>З.Ы. Разве что кваз цитирование не помешало бы.
На 41:55 это практически оно и есть, там где инжектится кусок кода с подстановкой. Но, скорей всего, без доступа к дереву самой цитаты — то есть видимо всё что с ним можно сделать это заинжектить (что является основным use-case'ом).