Я опять за своё пердунство.
Многие существующие языки программирования очень украсило бы, если бы они были expression oriented, т.е. если бы тела функций и управляющие конструкции были бы выражениями. По сути для тех, кто пишет на JS вручную, это единственное, чего не хватает в современном JS и всяких TypeScript — даже pattern matching какой-никакой появился, а этого нет. После появления намёков на лямбды этого не хватает Плюсам.
Ну ладно, JS и Плюсы — в ногу стреляющие языки с большим количеством старого кода, и в них стрёмно дополнять семантику существующих конструкций. А TypeScript — да тоже в ногу стреляющий — поскольку на него копипастят код с JS, только типизированный.
Но ведь есть языки сравнительно новые — Go тот же самый. В него так просто сишный код не скопипастишь, переписывать надо. Почему тело функции, `if` и блок не сделать было выражениями?.. D опять же — тоже делали с нуля, тоже в последние 20 лет и кода на нём немного. Да до фига их. В которых явно надо писать `return`. Как будто это очень круто — специально писать `goto` там, где можно его не писать.
Опять же, когда управляющие конструкции — выражения, компилятору легче типы выводить, оптимизировать и т.д., потому что ненужной императивщины меньше.
Почему создатели языков так не любят делать их expression oriented?
**P.S.** Мой пост похоже примерно как звонок в редакцию журнала «За рулём» с вопросом «А почему вы не пишете **только** про BMW?» Только тот звонок был хотя бы в редакцию.