Pull to refresh

Comments 6

Отсутствие оптимизации хвостовой рекурсии в Go расстроило. Лично для меня это один из главных минусов Python.
Почему рекурсия зло можно почитать здесь: https://habrahabr.ru/post/256351/
Притом в Lua (откуда Go взял немало особенностей синтаксиса, судя по всему) хвостовая рекурсия оптимизируется.
Очень странная статья по ссылке.
Половину примеров можно привести к хвостовой рекурсии, которую компилятор либо оптимизирует, либо вы ею не будете пользоваться, особенно если вы знаете что такое хвостовая рекурсия.
Вторую же половину читабильнее, красивее и проще чем не хвостовой рекурсией описать сложно.
Даже богом забытый Nim на фоне Go функциональнее смотрится.
На плашке Go, где сейчас написано "simple, reliable and efficient" раньше было "pragmatic, concise and orthogonal", а еще раньше в самом начале "procedural language for system programming". В общем то "functional, multiparadigm" там не было никогда.
Для нормального функционального программирования необходимы (но не достаточны!) либо полноценный параметрический полиморфизм (т.е. дженерики; например, это языки ML-семейства), либо полная динамичность (лиспы, эрланг). Go не имеет ни того, ни другого, и поэтому максимум, что про него можно сказать, это то, что в нём есть функциональные элементы.
Но это, безусловно, не значит, что язык плохой — просто он задумывался для другого, и его основные практики и подходы тоже другие.
Sign up to leave a comment.

Articles