Минимальное подмножество высокоуровневого языка программирования?
По аналогии с минимальным подмножеством операций, достаточных для полноты по Тьюрингу:
Существует ли минимальный набор встроенных средств для языка высокого уровня, с помощью которых можно было бы реализовать любые другие возможности, на данный момент существующие в каком-либо высокоуровневом языке?
Например, в C# есть ключевые слова async и yield return. Что должно существовать в языке, чтобы подобный функционал можно было добавить как часть стандартной библиотеки, а не встраивать в компилятор?
Мой вариант - нужны макросы, анонимные функции с замыканиями, pattern matching, обобщенные типы...
> Минимальное подмножество
> С++ это, мягко говоря, не минимальное подмножество. И до версии '11 в нем даже лямбда-выражений не было
Странная логика. Спращиваете про минимальное, а говорите, что по вашему С++ это даже не минимальное. Это тоже самое, что говорить, что жигули это не минимальное подмножество, ведь у него даже новейшей осветительной системы за сотни нефти нету.
Смотрите asm. Он точно минимален. Или prolog. Это тоже самое, что вы придете в минестерство финансов и будете им доказывать, что прожиточный минимум это 100к в день. Экий вы минималистичный. Хипстер небось?
Итог: минималистичный и прикладной это С и прочие haskel-lisp'ы.
Пожалуйста, прочитайте вопрос еще раз. Меня интересует минимальное(1) подмножество синтаксических(2) конструкций, позволяющее реализовать любые(3) остальные, так же как в BF за счет 8 операций можно выразить любое вычисление. С++ не удовлетворяет 1 и 3, asm - 2.
Prolog / haskell - интересные варианты.
Странно, что никто ещё не упомянул Rust. Его разработчики как раз и ставят перед собой задачу сделать максимально простой язык с минимальным количеством сущностей. Язык активно развивается; замыкания, pattern matching и шаблонные типы в нём есть уже теперь.