LINUX.ORG.RU

Кто-нибудь пробовал clojure?

 


0

4

Кто-нибудь пробовал clojure?

Посмотрел что там есть статическая типизация как в haskell, каналы и корутины как в go, унификация как в prolog, макросы как в racket!

И можно писать под android, браузер, сервер и gui!

Вроде всё круто, но хочется услышать вашего мнения.



Последнее исправление: holuiitipun (всего исправлений: 1)
Ответ на: комментарий от unlog1c

Ну здрасте. Как раз каналы и корутины решают сейчас больше всех, покрывая много юзкейсов где раньше использовались фьючеры/промисы.

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

Алсо, что в Clojure понимается под корутинами?

Kostafey
()
Ответ на: комментарий от zz

https://github.com/clojure/core.async ящитаю

Ну наверно, просто как-то нелогично выглядело же. Каналы тоже в основном в контексте core.async существуют. Т.е. получается сказать «каналы и корутины» то же самое, что сказать «ботинки и обувь».

Kostafey
()
Ответ на: комментарий от Kostafey

Ну наверно, просто как-то нелогично выглядело же. Каналы тоже в основном в контексте core.async существуют. Т.е. получается сказать «каналы и корутины» то же самое, что сказать «ботинки и обувь».

Канал суть очередь. Корутина суть дешевый тред. Это два разные концепта и совершенно друг от друга не зависимые, хотя в конексте кложуры и взаимодействующие.

unlog1c ★★★
()
Ответ на: комментарий от Kostafey

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

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

Плюс в ClojureScript ты промисами никак не подовольствуешься.

unlog1c ★★★
()
Ответ на: комментарий от unlog1c

Корутина суть дешевый тред.

Если речь, о так называемых дешевых тредах из core.async, то я там дешевизны никакой не увидел. Обычные JVM-ные треды, которые, в свою очередь, есть полноценные треды ОС. Т.е. все равно надо лечить ограниченим тред-пула. Я что-то не так делаю?

Kostafey
()
Последнее исправление: Kostafey (всего исправлений: 1)
Ответ на: комментарий от unlog1c

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

А кто ж спорит-то? Ну синтаксис покрасивее разве что :). Наоборот, ближе к plain java - чем плохо? Меньше магии, больше механики. Хорошая программа должна быть простой, тупой, надежной и эффективной. Как автомат Калашникова ;).

Kostafey
()
Последнее исправление: Kostafey (всего исправлений: 1)
Ответ на: комментарий от Kostafey

Если речь, о так называемых дешевых тредах из core.async, то я там дешевизны никакой не увидел. Обычные JVM-ные треды

Нет, там CSP-шные зеленые треды. Ты видимо не дочитал/дослушал до конца.

А кто ж спорит-то? Ну синтаксис покрасивее разве что :). Наоборот, ближе к plain java - чем плохо? Меньше магии, больше механики. Хорошая программа должна быть простой, тупой, надежной и эффективной. Как автомат Калашникова.

Нет, ну что это за аргумент вообще. С таким успехом никакая кложурная либо скаловская магия вообще не нужна, можно продолжать писать на автомате Гослинга.

unlog1c ★★★
()
Ответ на: комментарий от unlog1c

Нет, там CSP-шные зеленые треды. Ты видимо не дочитал/дослушал до конца.

Э-э-э, чукча не читатель, чукча писатель. Моя сразу код писать и при этом на поведение JVM смотреть, тама треды считать. Много насчитать... :). Ну ладно, завтра будет аргументация с кодом и цифрами :).

Нет, ну что это за аргумент вообще. С таким успехом никакая кложурная либо скаловская магия вообще не нужна, можно продолжать писать на автомате Гослинга.

Ну да :). Хотя не совсем об этом речь. Вот мне нравится такой пример: swing и seesaw. Вроде в seesaw ничего не изобрели. Обычный враппер для swing. Но его API прекрасен. Приятно писать. Чего не скажешь о swing на java.

Kostafey
()
Последнее исправление: Kostafey (всего исправлений: 1)
Ответ на: комментарий от Kostafey

Э-э-э, чукча не читатель, чукча писатель. Моя сразу код писать и при этом на поведение JVM смотреть, тама треды считать. Много насчитать... :). Ну ладно, завтра будет аргументация с кодом и цифрами :).

Ты видимо использовал макро thread (который таки создает нити ОС) вместо go.

Пример понятен, но не всегда худые врапперы решают проблему. Возвращаясь к теме кложуровских промисов, они совершенно убогие по сравнению со скаловскими. И если бы не магический core.async, то clojure скале бы сливал всухую в вопросах решения сложных конкуррентных задач.

unlog1c ★★★
()
Ответ на: комментарий от Kostafey

Э-э-э, чукча не читатель, чукча писатель. Моя сразу код писать и при этом на поведение JVM смотреть, тама треды считать. Много насчитать... :). Ну ладно, завтра будет аргументация с кодом и цифрами :).

В браужере вполне зелено. В самой кложуре - это детали реализации.

https://github.com/clojure/core.async/blob/master/src/main/clojure/clojure/co...

zz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.