Не в синтаксисе проблема, вообще не в нём. А в семантике. В гарантиях. Потому что мы языками пользуемся не всегда для того, чтобы получить максимальную экспрессивность. А ещё и с целью иметь возможность больше доверять проекту, который долго разрабатывает команда людей, в меньшей степени страдать от того, что код быстро устаревает (code rot) или при частом изменении становится хрупким. Пара вещей, которые позволяют это делать - это immutability и адекватная (я принципиально туманен сейчас и не говорю, динамическая или статическая; достаточно строгой динамической, наверное) типизация. С этой точки зрения вырисовываются следующие языки: Erlang (immutability, strong dynamic typing), OCaml+Haskell+F# (immutability, strong static typing). Clojure (immutability, dynamic typing). Скала в этом отношении по факту является бастардом, ибо immutability там не такая доминирующая идиома, как в Clojure, а система типов сложна и мешается программисту в большей степени, чем помогает, на примерах сколько либо отличающихся от Hello, world. Если откинуть медленный (на уровне питона) эрланг, то остаётся или ML (OCaml, Haskell, F#), или Clojure.
Reply
Reply
Leave a comment