Здравствуйте, eao197, Вы писали:
E>Ну все, загнобили парня.
ну.
он там еще страшно обижается, что его приоритеты плохо в бусте упоминают.
Типа упоминают scope_exit из D, но не упоминают, что именно он — автор этой фичи (хотя сама фича известна тыщу лет, даже в перле, например, есть маленький модуль на этот счет.)
А могли ли концепты давать возможность специализировать, например, функции по типу принимаемого значения? Например, у меня у класса есть 2 шаблона конструктора: для объектов, у которых есть функция foo(), и у которых ее нет. Такая возможность планировалась?
Здравствуйте, jazzer, Вы писали:
J>он там еще страшно обижается, что его приоритеты плохо в бусте упоминают. J>Типа упоминают scope_exit из D, но не упоминают, что именно он — автор этой фичи (хотя сама фича известна тыщу лет, даже в перле, например, есть маленький модуль на этот счет.)
Да, где-то в дебрях digitalmars.D.announce подобные обиды проскакивали. У каждого есть свои маленькие недостатки...
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Went, Вы писали:
W>Здравствуйте, jazzer.
W>А могли ли концепты давать возможность специализировать, например, функции по типу принимаемого значения? Например, у меня у класса есть 2 шаблона конструктора: для объектов, у которых есть функция foo(), и у которых ее нет. Такая возможность планировалась?
Да, ты в концепции указываешь сигнатуры функций, которые должны быть у типа.
Здравствуйте, alexeiz, Вы писали:
A>Здравствуйте, Шахтер, Вы писали:
Ш>>Здравствуйте, Cyberax, Вы писали:
C>>>Уж слишком много сложности добавляется с ней.
Ш>>Какие?
A>Как насчёт того, что только на описание этой фичи в стандарте ушло 40 страниц. Это больше чем любая другая отдельная фича. Например, exception handling влезает в 10 страниц.
Речь не об этом. Какие сложности в языке возникают из-за добавления концептов? Что ухудшится, перестанет работать и.т.п?
Здравствуйте, Шахтер, Вы писали:
C>>>>Уж слишком много сложности добавляется с ней.
Ш>>>Какие?
A>>Как насчёт того, что только на описание этой фичи в стандарте ушло 40 страниц. Это больше чем любая другая отдельная фича. Например, exception handling влезает в 10 страниц.
Ш>Речь не об этом. Какие сложности в языке возникают из-за добавления концептов? Что ухудшится, перестанет работать и.т.п?
так он и говорит об увеличении сложности языка. а проблемы это создаст в том, что C++ будет требовать больше времени для изучения, повысится вероятность ошибок в компиляторах
Здравствуйте, eao197, Вы писали:
BZ>>насколько я понял, это аналог статической типизации для темплейтов. чтобы не обнаруживалось только при раскрытии темплейта что там оказывается, скажем, операция == нужна. раскрытие темплейтов в C++ сейчас фактически использует duck typing
E>Мне в C++ных шаблонах именно это и нравится (по сравнению, хотя бы с Java-вскими дженериками).
чем больше проект, тем больше бенефитов от static typing. мой идеал — язык со строгой типизацией и типом Dynamic — последнее *иногда* действительно необходимо
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, Шахтер, Вы писали:
C>>>>>Уж слишком много сложности добавляется с ней.
Ш>>>>Какие?
A>>>Как насчёт того, что только на описание этой фичи в стандарте ушло 40 страниц. Это больше чем любая другая отдельная фича. Например, exception handling влезает в 10 страниц.
Ш>>Речь не об этом. Какие сложности в языке возникают из-за добавления концептов? Что ухудшится, перестанет работать и.т.п?
BZ>так он и говорит об увеличении сложности языка.
Похоже, имеет место взаимное непонимание. Я НЕ говорю об увеличении сложности языка.
Обьясню на примере. В процессе эволюции С++ несколько раз делались harmfull decision, например, изменили область видимости для for переменных, эти изменения разрушали существующий код и, естественно, создавали сложности. Концепты не влияют на существующий код. Они добавляют новые возможности.
Т.е. я не могу сказать -- концепты создают сложности. В конце концов -- никто не заставляет их использовать.
BZ>а проблемы это создаст в том, что C++ будет требовать больше времени для изучения, повысится вероятность ошибок в компиляторах
На сколько дней? Концепция концептов не является сложной для понимания, она интуитивна понятна. Кроме того, те кто интенсивно в прошлом занимались абстрактным программированием на С++ давно этот механизм ждут, поскольку язык в нем остро нуждается. Сейчас приходится делать workaround ы.
Здравствуйте, Шахтер, Вы писали:
Ш>Здравствуйте, alexeiz, Вы писали:
A>>Как насчёт того, что только на описание этой фичи в стандарте ушло 40 страниц. Это больше чем любая другая отдельная фича. Например, exception handling влезает в 10 страниц.
Ш>Речь не об этом. Какие сложности в языке возникают из-за добавления концептов? Что ухудшится, перестанет работать и.т.п?
Вот это как раз трудно предсказать для такой большой фичи, как консепты. Ты знал, например, что сначала было два равноправных предложения для консептов, но потом неожиданно выяснилось, что одно из предложений просто не работает? И это случилось только после того, как кто-то попытался его реализовать.
Здравствуйте, Шахтер, Вы писали:
Ш>Концепция концептов не является сложной для понимания, она интуитивна понятна.
Я тоже так думал, пока не удосужился ознакомиться с тем, что же на самом деле представляют из себя консепты, как они описанны сейчас в драфте стандарта.
Здравствуйте, Шахтер, Вы писали:
C>>>>>>Уж слишком много сложности добавляется с ней. Ш>Похоже, имеет место взаимное непонимание. Я НЕ говорю об увеличении сложности языка.
а я не про тебя. впрочем, не суть важно
Ш>Обьясню на примере. В процессе эволюции С++ несколько раз делались harmfull decision, например, изменили область видимости для for переменных, эти изменения разрушали существующий код и, естественно, создавали сложности.
гы, мне они создают сложности до сих пор — компайлер предупреждает о несовместимости кода с legacy compilers
Ш>Концепты не влияют на существующий код. Они добавляют новые возможности. Ш>Т.е. я не могу сказать -- концепты создают сложности. В конце концов -- никто не заставляет их использовать.
1. уведичится сложность компиляторов. ну ты в курсе, что и так осталось всего 2 фронтэнда, у хаскела их и то больше а кроме компиляторов есть всевозможные другие тулзы
2. если возможность добавляется язык, то она будет использоваться. к примеру, в какой-то используемой вами бибилотеке — и куда вы денетесь. затем прграммисты, которых вы берёте на работу, возможно потратят время на эту неиспользуемую вами, но использовавшуюся в их предыдущих компаниях, фичу, вместо того, чтобы потратить время на более полезные вещи. т.е. вы берёте сеца с 5 годами опыта, а из них часть вами будет просто незадействована
в данном конкретном случае всё просто — эту возможность начнёт интеенсивно использовать буст/стл, так что если только вы всё пишете вручную... тогда вам действительно на все причуды комитета глубоко положить — я сам как раз в таком состоянии
BZ>>а проблемы это создаст в том, что C++ будет требовать больше времени для изучения, повысится вероятность ошибок в компиляторах
Ш>На сколько дней? Концепция концептов не является сложной для понимания, она интуитивна понятна. Кроме того, те кто интенсивно в прошлом занимались абстрактным программированием на С++ давно этот механизм ждут, поскольку язык в нем остро нуждается. Сейчас приходится делать workaround ы.
really? прям в этой ветке можно увидеть, что одни её не ждут, а другим она непонятна
далее. *концептуально* идея проста, но добавление типизации в динамический язык — это сложная штука. все эти детали кокретной реализации и придётся изучать. или вы думаете, что достаточно сказать "статическая типизация" и любой грамотный с++ник сразу грокнет то, что они описывали на 40 страницах?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>1. уведичится сложность компиляторов. ну ты в курсе, что и так осталось всего 2 фронтэнда, у хаскела их и то больше
Здравствуйте, alexeiz, Вы писали:
A>Здравствуйте, Шахтер, Вы писали:
Ш>>Концепция концептов не является сложной для понимания, она интуитивна понятна.
A>Я тоже так думал, пока не удосужился ознакомиться с тем, что же на самом деле представляют из себя консепты, как они описанны сейчас в драфте стандарта.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>1. уведичится сложность компиляторов. ну ты в курсе, что и так осталось всего 2 фронтэнда, у хаскела их и то больше а кроме компиляторов есть всевозможные другие тулзы
Это не моя головная боль.
BZ>2. если возможность добавляется язык, то она будет использоваться. к примеру, в какой-то используемой вами бибилотеке — и куда вы денетесь. затем прграммисты, которых вы берёте на работу, возможно потратят время на эту неиспользуемую вами, но использовавшуюся в их предыдущих компаниях, фичу, вместо того, чтобы потратить время на более полезные вещи. т.е. вы берёте сеца с 5 годами опыта, а из них часть вами будет просто незадействована
BZ>в данном конкретном случае всё просто — эту возможность начнёт интеенсивно использовать буст/стл,
Это должно быть прозрачно для пользователя. Даже наоборот -- появится ранняя диагностика неправильного использования, что поможет пользователям.
BZ>так что если только вы всё пишете вручную... тогда вам действительно на все причуды комитета глубоко положить — я сам как раз в таком состоянии
Не, мне не наплевать. Я хочу консепты. NOW!
BZ>>>а проблемы это создаст в том, что C++ будет требовать больше времени для изучения, повысится вероятность ошибок в компиляторах
Ш>>На сколько дней? Концепция концептов не является сложной для понимания, она интуитивна понятна. Кроме того, те кто интенсивно в прошлом занимались абстрактным программированием на С++ давно этот механизм ждут, поскольку язык в нем остро нуждается. Сейчас приходится делать workaround ы.
BZ>really? прям в этой ветке можно увидеть, что одни её не ждут, а другим она непонятна
Надо ФАК написать.
BZ>далее. *концептуально* идея проста, но добавление типизации в динамический язык — это сложная штука. все эти детали кокретной реализации и придётся изучать. или вы думаете, что достаточно сказать "статическая типизация" и любой грамотный с++ник сразу грокнет то, что они описывали на 40 страницах?
Здравствуйте, alexeiz, Вы писали:
BZ>>1. уведичится сложность компиляторов. ну ты в курсе, что и так осталось всего 2 фронтэнда, у хаскела их и то больше A>3 фронтэнда: VC, GCC, EDG
Ещё растёт clang, так что 4 штуки скоро будет. И Borland чего-то тоже ещё шевелится.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, alexeiz, Вы писали:
BZ>>>1. уведичится сложность компиляторов. ну ты в курсе, что и так осталось всего 2 фронтэнда, у хаскела их и то больше A>>3 фронтэнда: VC, GCC, EDG C>Ещё растёт clang, так что 4 штуки скоро будет. И Borland чего-то тоже ещё шевелится.
Ах да, clang. Но мы-то знаем, кто его пишет: Douglas Gregor, который добавил консепты в GCC (ConceptGCC). А борланд уже скорее мертв, чем жив.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, jazzer, Вы писали:
J>>Одно другому не мешает. J>>Там, где имеет смысл констрейнтов насовать, их лучше насовать.
К>Ну вот Грегори Хаус^W Комо насовал констрейнтов в STL, и что из этого вышло
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, jazzer, Вы писали:
J>>Одно другому не мешает. J>>Там, где имеет смысл констрейнтов насовать, их лучше насовать.
К>Ну вот Грегори Хаус^W Комо насовал констрейнтов в STL, и что из этого вышло
кстати, я искренне не понимаю, почему массивы до сих пор не Assignable и CopyConstructible.
Ведь никаких же проблем нет сделать их такими, вон в качестве членов структур они себя замечательно ведут, как ожидается: и присваиваются, и конструируются.
Почему с ними голыми нельзя работать так же, не понимаю.