?

Log in

No account? Create an account
Previous Entry Поделиться Next Entry
Go, спустя 2 недели
я и кот
grey_kristy
Если не стесняться использовать interface{} в любой непонятной ситуации, то вполне динамический язык получается :) Плюс турбо скорость компиляции, вполне сравнимая с Питоном, и заметно быстрее чем большие проекты на Эрланге.

Легкость обучения и написания программ просто поразительная, настолько, что начинаешь опасаться какого-то подвоха. Но нет, он действительно очень простой. Местами до идиотизма, но это даже как-то подкупает. Чего нет - того нет, и баста.

Горутины, хотя и похожи идеологически на Эрланговские процессы, в реализации заметно отличаются. Приходится сильно перестраиваться. Некоторых фич в принципе нет. Например, горутины никак не адресуются и узнать их состояние невозможно. То есть построить нормальную иерархию супервизоров и воркеров не получится. Тем не менее базовые вещи все работают, проблемы все те же самые - гонки, локи. И решаются примерно также.

Посылка сообщения в канал, в отличие от Эрланга, по дефолту синхронная, что скорее хорошо. Средства асинхронной отправки тоже есть.

Явная обработка ошибок, отсутствие исключений и генериков конечно добавляют копипасты и бойлерплейта. Но не смертельно, жить можно. Зато closure и анонимные функции в полный рост. И классов нет, просто счастье какое-то! Методы есть, а классов нет. И наследования, слава богу нет. Как же меня задолбало ООП головного мозга в Django Rest Framework! Местами сравнимо по уровню implicit с Джавой. Удивительно, как Питон до такого дошел.

В общем, впечатления скорее положительные. А после Питона (на котором я работал последние полгода) так вообще космос.

Что, с другой стороны, не отменяет общего косоглазия Гошного сурка (или суслика? кто это вообще?). Что-то в нем есть такое перекошенное - сочетание вполне современной акторной модели многозадачности, first class function, closure, и сишного наследия в виде синтаксиса, mutable state повсюду, указателей (my god! указатели в 21 веке?), отсутствия pattern matching и алгебраических типов данных.