Здравствуйте, Евгений Музыченко, Вы писали:
S>>Цель создания C++ была в том, чтобы скрестить Симулу с Си.
ЕМ>Цель была прежде всего в том, чтобы раздвинуть возможности C в сторону ЯВУ
В 1980-х Си уже был ЯВУ. Конкретно же сам Страуструп говорил: "С++ проектировался с целью обеспечить средства организации программ, присущие языку Simula, а так же необходимую для системного программирования эффективность и гибкость, свойственные языку Си"
Это прям первый параграф введения в книге "Дизайн и эволюция языка C++".
S>>Шаблоны тоже изначально не в планах были. К ним чуть позже пришли, когда выяснилось, что обобщенное программирование на Си-шных макросах -- ну такое себе удовольствием.
S>>Это мы сейчас уже, с позиций послезнания, можем рассуждать о нереализованной возможности.
ЕМ>Уже много раз было подчеркнуто, что к тому времени было известно достаточно много способов обобщенного программирования
Ada и Clu (и ML, емнип) упомининались Страуструпом как первоисточники. При этом Страуструп негативно отзывался о реализации обобщенного программирования в Ada:
Мы написали много макросов в стиле шаблонов, чтобы понять, какие языковые средства необходимы для поддержки данного стиля программирования. Размышляя над шаблонами, я не отводил главное место языку Ada, который лишь вызывал у меня раздражение своими операторами инстанциирования шаблонов.
ЕМ>и этот механизм можно было сразу сделать и более простым, и более гибким, а потом, по мере использования, допиливать как в сторону расширения, так и в сторону ограничений.
Ну уж гибче, чем в C++, еще поискать нужно. Огласите свой список языков без сборщика мусора, в которых шаблоны гибче, чем в C++?
А то, что шаблоны не просты, так это как раз следствие их гибкости.
ЕМ>Но форма была выбрана достаточно искусственно — такое впечатление, что кому-то она просто очень сильно понравилась, и ее продавили чисто на эмоциях.
Расскажете как сделать лучше?
S>>Что касается pattern matching-а, то на первый взгляд есть серьезное противоречие между ООП-шной инкапсуляцией и возможностью разделить объект на составляющие в рамках pattern matching-а.
ЕМ>Так это ж все можно легко регулировать.
Правда? Да что вы говорите!!!
Вы хоть знаете как в C++ сделать адаптацию своего типа к structured binding?