Fork me on GitHub
#clojure-russia
<
2016-05-05
>
andfadeev08:05:06

я на опеншифт деплою, норм

maksimrv08:05:52

Привет, а есть возможность запустить clojure интерпретатор из командной строки на OSX? Без приседаний с java, и не создавая целый проект brew install clojure кидает ошибку что надо использовать leiningen, но в доке leiningen я не нашел как запустить repl не создавая проекта. 😞

maksimrv08:05:46

все нашел ответ

delaguardo08:05:48

lein repl ему проект не нужен

andfadeev08:05:15

но жава нужна в любом случае

delaguardo08:05:25

можно использовать planck, это cljs, но в целом просто посмотреть на синтаксис и поиграться хватает

delaguardo08:05:46

тут java не нужна и ставится просто brew install planck

maksimrv08:05:00

спасибо

niquola10:05:43

@bernik: и core.async и future будут выполняться на пуле ниток. go-block нужен для корпоративной многозадачности - когда ты пишешь в канал или читаешь из канала легковесная нитка снимается с выполнения - паркуется, уступая реальный thread следующей. Если ты каналами не пользуешься, то go block тебе не нужен.

abtv12:05:21

@andfadeev: первое у меня работает, а второе падает с OutOfMemory

abtv12:05:34

синтетика, конечно, и довольно бессмысленный тест, но все-таки показывает, что го блоки отличаются от futures

abtv12:05:09

понятно, где bottleneck (в отсутствии паркинга и порождении новых потоков)

dottedmag17:05:53

@maksimrv: Но это будет clojurescript, а не clojure, имей в виду.

dottedmag17:05:27

@abtv: Вообще, любой эрланговец смотрит на цифру "10 тыщ" в числе потоков свысока.

dottedmag17:05:02

К сожалению, эрланг — это всё-таки гетто, так что и будет смотреть свысока в одиночестве :)

bezrukov17:05:58

@dottedmag: ну любой гошник на 10k тоже так может смотреть simple_smile

mike_ananev19:05:23

Для тех, кто хочет погрузиться в дебри теории CSP вот книженция http://www.computing.surrey.ac.uk/personal/st/S.Schneider/books/CRTS.pdf

mike_ananev19:05:11

как я себе вижу c введением core.async появились примитивы более высокого уровня чем просто promise, future, delay или atom. Теперь вместо конкурентого доступа к стейту предоставляется возможность писать логику в однопоточном стиле, считая что у нас одно ядро и один поток. вместо конкурентного доступа к стейту со многих мест в коде теперь можно написать функцию, которая читает из канала одно за одним сообщение и мутирует стейт в "однопоточном" коде. Коммуникации через каналы существенно упрощают reasoning about the code.

dottedmag20:05:12

@mike1452: Ещё полезно прочитать статьи про эрланговый OTP. Там типичные поведения распределённого софта тупо вбили на уровень стандартной библиотеки.

dottedmag20:05:11

Например, gen_server. "Хочу клиент-сервера, чтобы он вот так отзывался на события". Пишешь последовательный код в хэндлерах, а вся параллельность — в библиотеке.

dottedmag20:05:33

Такая штука творит чудеса с читабельностью, поддерживаемостью и тестируемостью кода.

mike_ananev20:05:13

@dottedmag а реально ли повторить ОТР семантику на core.async? применимы ли абстракции Erlanga в Clojure?

shinych21:05:26

у нас в ходе проекта вырисовалась библиотечка otplike, скоро заоупенсорсим. @aav расскажешь на каком-нибудь из следущих хэнгаутов?

dottedmag21:05:20

@mike1452: Проблем нет, но это ж надо писать и писать. В OTP двадцать лет опыта разработки телекома вложено.

aav21:05:10

@shinych: конечно расскажу

aav21:05:47

@mike1452: вполне применимы, хотя с некоторыми оговорками, конечно