Clojure impresses

Dec 10, 2012 14:58

Нашему Clojure-проекту исполнилось полгода, из них последние три месяца его используют заказчики. Пора подводить промежуточные итоги ( Read more... )

наглядный пример, девелопмент, инструментарий, clojure, fp, и такое было

Leave a comment

Comments 469

sorhed December 10 2012, 11:26:01 UTC
> Скобки перестают напрягать и парить через несколько дней

Увы, это не так. Так и не перестали.

Всё остальное же есть и в Scala. Правда, надо отдать кложе должное, её автор - прагматик, и любит решать насущные проблемы, а не рассуждать теоретически. И ещё трудоголик.

(симуляция колонии муравьёв делается на скале несколькими разными способами и очень компактно, хотя дело не в этом - мы не каждый день пишем симуляторы колоний муравьёв).

Reply

tonsky December 10 2012, 13:20:56 UTC
Это как пример нетривиальной распределенной задачи над шареным стейтом, требующий координации и производительности.

Reply

raydac December 10 2012, 18:56:47 UTC
да, скобки очень жирный визуальный элемент, сильно раздражают глаз

Reply

theiced December 10 2012, 19:50:19 UTC
в той же жабе в аналогичном коде скобок будет раза в полтора больше чем в кложуре

Reply


ko_bx December 10 2012, 12:00:52 UTC
> Вот чему я научился бы, свяжи я свою карьеру с Питоном? Джанге, WSGI и PyPi? А если бы с Руби, так вообще нахватался бы плохого.

Не очень понятен смысл этой фразы, если честно. Как-то она положительное впечатление обо всём посте сразу уничтожает.

Reply

tonsky December 10 2012, 12:13:34 UTC
Ну вы смотрите не на впечатления, а на факты. Я как бы впечатлить никого особо не хотел.

Reply

ko_bx December 10 2012, 12:21:06 UTC
Как-то практически не вижу фактов, сплошное "Кложа одновременно и правильная Джава", глупо как-то сидеть и выискивать два с половиной факта в длинном посте, который весь про впечатления.

Reply

glorphindale December 12 2012, 15:42:26 UTC
Python, а особенно IPython - отличное введение в REPL-driven-development, особенно для людей на стыке науки и разработки ПО.

Reply


ext_1405098 December 10 2012, 12:01:27 UTC
"""Макросы - простые и понятные пушистые зверьки, позволяющие кое-где срезать углы или отложить вычисления."""

Отложить вычисления можно через замыкания. Бывают какие-нибудь полезные применения макросов, не сводящиеся к замыканиям?

Reply

sorhed December 10 2012, 12:07:14 UTC
1) type providers, хотя к Кложуре это не относится.

2) настройка синтаксиса под себя, создание DSL. Замыканиями тупо неудобно пользоваться.

То есть так рассуждать, то можно докатиться до «всё равно всё процессор исполняет, давайте писать тупо на ассемблере». И некоторые ведь пишут, что самое ужасное.

Reply

tonsky December 10 2012, 12:24:16 UTC
Не создавать замыкания.

Плюс, я ж говорю - срезать углы. Есть разница между:

(->> (f x)
json/parse-json
(map #(g %))
(remove nil?))
и

(let [y (f x)
y1 (json/parse-json y)
y2 (map #(g %) y1)
y3 (remove nil? y2)]
y3)

Reply

lionet December 10 2012, 12:48:17 UTC
Haskell

Было:

f . g = \x -> f (g x) -- Часть стандартной библиотеки

-- Наш код, data flow справа налево
proc = filter (not null) . map g . JSON.parseJson . f

Стало (развернули):

infixr 9 →
f → g = \x -> g (f x) -- Придумали сами такое

-- Переписали код, чтобы data flow шёл слева направо.
proc = f → JSON.parseJson → map g → filter (not null)

Итого, простейшая функция меняет control flow. Почему это важно? Потому что показывает, что в твоём примере макрос не имеет большого смысла, достаточно просто функции. Даже не замыкания, а простейшей функции.

Reply


ext_1348283 December 10 2012, 12:06:39 UTC
Руби -> jruby -> jvm. Возможности те же в этом отношении.

Reply

tonsky December 10 2012, 12:11:15 UTC
Мне кажется, ты пропустил параграф про «важны инструменты и абстракции языка, а не то, на чем это в итоге исполняется».

Reply

ext_1348283 December 10 2012, 12:18:30 UTC
Не пропускал, просто я не вкладывал этот смысл в свой коммент. Он только о том что есть jruby, он живет используется и jvm.

А фп, абстракции и все остальное это да. У нас на кложуре написан сервак аля elastic search (естессно тоже юзает люсину).

Reply

alexott December 10 2012, 12:21:29 UTC
а биндинги к люсине не выкладывали? а то я собирался свои выложить, но как-то руки не дошли, чтобы довести их до "красивого" вида. хотя у меня оно для специфических целей используется...

Reply


glorphindale December 10 2012, 12:22:50 UTC
Стоит отметить, что в Python тоже есть простые способы добавить производительности, см. ctypes и cython.

Reply

tonsky December 10 2012, 12:37:46 UTC
Это то что называется «переписать на C»?

Reply

glorphindale December 10 2012, 13:39:41 UTC
Нет. Переписать на С это переписать на С.

Reply

p1r4nh4 December 10 2012, 14:17:31 UTC
Ну ctypes - это переписать на Си всë-таки.

Reply


Leave a comment

Up