?

Log in

No account? Create an account

Стой под стрелой

Поступки и мысли, о которых могу вспомнить не краснея

Previous Entry Поделиться Пожаловаться Next Entry
Clojure at Echo
усы2
tonsky
Провел в команде опрос на тему Кложи. Опрошено три респондента с 4-5 месячным опытом использования (основные разработчики нашего clojure-driven продукта) и двое с 1-2 месячным (переключились на другой проект). Результаты анонимизированы и подсокращены до смысловой части.

Насколько сложно читать?

— Несложно, дело привычки
— Читать сложнее Эрленга
— Python (2,3) < Java, Erlang (4) < Clojure(6,7)
— Примерно Ruby (без Rails)
— Очень зависит от автора

Насколько сложно писать?

— Очень легко
— Легче, чем в ООП языках
— Меньше кода, только суть
— Упирается в понимание кода
— Проблем с отладкой не возникает (отладочная печать она и в Африке отладочная печать)

Как быстро начинает получаться писать что-то полезное?

— Неделя
— Недели две
— От недели и больше
— С учетом, что есть опыт в ФП

Наиболее сложные области

— Concurrency примитивы
— Двухсторонний interop
— Meta параметры
— Идеология

Стала ли Clojure естественным, «своим» языком?

Все: Пока нет, но потенциально да.

Полезно

— Гибкость, лаконичность
— Особенно чувствуется при переключении на другой язык
— Скорость написания кода («опа-опа и готово»)
— Java—библиотеки
— Синтаксис удобен для файлов конфигурации

Раздражает

— Скобки (1 чел.)
— Привязанность к Java (2 чел.)
— Непрозрачность кода из-за макросов (2 чел.)
— Медленный старт, тяжеловесность платформы (2 чел.)

Общее впечатление

— Писать на Clojure очень легко. Видимо поэтому мы так много пишем и переписываем то, что пишем.

— Большая неограниченная свобода. Можно писать как угодно и в любом стиле. Код становится зеркалом разработчика.

— Clojure идеально подходит для соло проектов и достаточно плохо подходит для командной разработки.

Наиболее полезные ресурсы

clojure.org
clojuredocs.org
— The Joy of Clojure
— Clojure Programming
— Programming Clojure


  • 1
Хм, а почему "достаточно плохо подходит для командной разработки" ?
Из-за макросов и зеркала разработчика?

Ну типа да, в команде важно единообразие и простота, как в RoR. Хотя конечно смотря что команда делает.

Не обязательно "привязано к java", я где-то видел кложурь на петоне (и компилирующую в петоновый байткод)

clojure-py ещё совсем сырой, и скорее proof-of-concept. До боевой эксплуатации там как до Африки, к сожалению.

Ну это опрос конкретных разработчиков, которые работают в конкретном проекте, и там используется именно clojure on jvm.

А вообще из юзабельного сейчас только ClojureScript, соответственно, либо в браузере, либо в node.js

А как вы отладку в Clojure делаете?
А то, скажем, иногда оно с ленивостью и без типов валится с дикими стектрейсами совершенно не в том месте, где была сделана ошибка.

Добавил в пост: отладочная печать она и в Африке отладочная печать

На стектрейсы тоже жалуются.

Со стектрейсами напряг, да.
Огорчает, что невозможно коллегам объяснить, как я по стектрейсу угадываю причину ошибки, если это что-то нетривиальное.

Надо отметить, что стектрейсы по степени запутанности всё-таки значительно уступают сообщениям компилятора g++.

Ну, С++ по запутанности фору даст всем:)

У нас перед обычными тестами идет статический анализа кода через analyze. Находит кучу простой фигни, типа неопределенные переменные или несделанные тайп-хинты.

наиболее сложные области они какие-то наиболее сложные вообще, а не только для кожи, по моему.

Сколько у вас Кложи сейчас? В плане cloc-s.

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Clojure                         76           1074            111           7377
HTML                            13            183              2           1246
Javascript                       3            389           1508            762
Python                           8             95             15            482
ClojureScript                    3             48              1            263
CSS                              2             22              3             89
Bourne Shell                    14             24              5             81
-------------------------------------------------------------------------------
SUM:                           119           1835           1645          10300

А что именно вы пишите на clojure. И чем он вам помогает?

Процессинг потоков данных. Помогает тем, что мы малыми силами это делаем и достаточно быстро, и не сходим при этом с ума.

> Непрозрачность кода из-за макросов
Не очень понятно, чем макросы будут отличаться от любого внутреннего api. Мне кажется, как и везде, можно провести линию, ниже которой, можно считать сущности некими примитивами. Тут, конечно, вопрос в том, насколько компактно/выразительно/ортогонально/etc будет это
"нижнее множество", но это уже другой вопрос.
Есть, конечно, догадка, что это проблема из серии "если уж у нас лисп, зачем нам лишние evaluation rules" (а теоретически, что ни макрос, то правило), но это тоже ощущается, как вопрос компактности.

  • 1