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

@bernik: всегда есть варианты старого доброго vps и dedi от гигантов вроде ovh и hetzner до мелких частников, сидящих на прямх каналах к публичным internet exchange (для россии лучше франкфурт)

savelichalex06:05:32

а я не думаю что повторить акторы на core.async просто, все таки акторы и CSP отличаются сильно, например в акторах нет никаких гарантий что сообщение дойдет

pacman08:05:13

слышал что на java вобще модель акторов нэффективно работает

pacman08:05:54

кто-то где-то упоминал про печальный опыт akka

artemyarulin08:05:47

ээ, реально? Я прям стышал что акка это прям чуть-ли не лучшее что есть у скалистов

artemyarulin08:05:15

или проблема реально с жавой как язык, а не с JVM вообще?

dottedmag08:05:45

Проблема в том, что JVM — не VM для акторных языков.

dottedmag08:05:21

Чтобы акторы работали нормально, они должны быть дешёвыми. Настолько дешёвыми, что было бы не страшно пару-другую сотен на каждое подключение запустить.

dottedmag08:05:01

HiPE и другие эрлаговые VM сделаны так, чтобы запуск нового процесса, его жизненный цикл и помирание занимали микросекунды.

dottedmag08:05:11

В JVM оттюнен жизненный цикл объектов, а в HiPE основной объект оптимизации — процессы.

artemyarulin08:05:03

эм, не очень понял - core.async работает же и создание канала дешевое за счет еще одной абстракции над потоками. Тоже самое как я понимаю у акторов

artemyarulin08:05:07

или мы о разном?

niquola08:05:14

У акторов вытесняющая многозадачность и легкие потоки на уровне VM реализованы, а не системные

dottedmag08:05:14

@artemyarulin: В акторной модели декомпозиция задачи происходит на кучи кооперирующихся процессов. Если у тебя натуральным образом обработка разлагается на 50 акторов, а ограничения VM заставляют тебя сделать 2 потока, то это не позволяет тебе писать естественный код.

artemyarulin08:05:12

а эм, а как это отличается от core.async когда я делаю 50 каналов? сори, я нуб просто в JVM самом

dottedmag08:05:26

Кто слушает эти каналы?

dottedmag08:05:53

Я сам отвечу, что какой-то код :)

dottedmag08:05:14

Если это акторная модель, то сидит на канале какой-то процесс, слушает сообщения, выполняет обработку, посылает их.

dottedmag08:05:45

Если это модель неакторная, то у тебя один процесс мультиплексирует кучу каналов и пытается выполнять много задач сразу.

artemyarulin08:05:55

ааа все упонял

artemyarulin08:05:00

спасибо

dottedmag08:05:15

Кто-нибудь щупал?

dottedmag08:05:05

@aav: @shinych: У вас на этом ^ или ручками, без зелёных потоков?

aav09:05:33

@dottedmag: ручками

pacman10:05:59

Сассман назвал две причины; впрочем, сразу замечу, что в первой из них нет ничего особенного. К 1997 году Абельсон и Сассман уже устали рассказывать практически одно и то же с 80-ых, поэтому решили оставить преподавание и предложили главе кафедры самостоятельно решить, как поступить с самим курсом. Здесь удивляться действительно нечему — что угодно может осточертерть, если заниматься им достаточно долго. Впрочем, вторая причина гораздо серьезнее. По мнению Сассмана, они с Абельсоном осознали, что учебный план SICP больше не в силах подготовить инженеров к тому, что представляет собой «инжиниринг» сегодня. В 80-ых и 90-ых инженеры строили сложные системы, комбинируя простые и хорошо изученные «части». Целью SICP было предоставить язык абстракций для рассуждений о таких системах. Сегодня дела обстоят не так. Сейчас инженеры обычно пишут код для сложного аппаратного обеспечения, которое они не до конца понимают (причем часто это происходит по причине коммерческой тайны, а не в силу лени или недостатка времени — взять ту же Apple и ее технологии). Это же утверждение справедливо и для программного обеспечения, поскольку программные окружения состоят из гигантских библиотек с широчайшей функциональностью. Согласно Сассману, сегодня его студенты большую часть своего времени тратят на чтение мануалов к этим библиотекам, чтобы разобраться в том, как связать их вместе с простой целью — чтобы всё заработало и сделало то, что им нужно. Со слов Сассмана, «Программирование сегодня больше напоминает науку: вы берете часть библиотеки и «тыкаете» в нее — смотрите на то, что она делает. Затем вы спрашиваете себя, «Могу ли я настроить это так, чтобы оно делало то, что мне нужно?». Подход «анализ через синтез», используемый в SICP, когда вы строите большую систему из простых, маленьких частей, стал неактуальным. Сегодня мы программируем «методом тыка».

artemyarulin10:05:41

блин так и не успел прочитать, а уже неактуально стало(

pacman10:05:52

Еще как актуально

pacman10:05:01

просто рынок изменил условия

pacman10:05:43

когда вы захотите создавать что-то свое с нуля , творческое и интересное... какую-то свою идею вплощать начиная с матаппарата и принципов то будете мыслить с стиле SICP

pacman10:05:01

синтезировать что-то

pacman10:05:19

Если большинство просто юзает готовое и что-то комбинирует то это не значит что теперь везде так. Рич синтезировал clojure и он крут... теперь это просто другой уровень

pacman10:05:04

те кто наигрался фреимврками.. думаю меня поймут))))

artemyarulin10:05:32

да я пошутил конечно.

artemyarulin10:05:14

чутка оффтопа - а чо как скала вообще? Совсем прям г? Если по рукам бить и не юзать все подряд то можно писать нормальный код? А то прям везде все ноют что там ад и садомия, сложно и куча всего что ток можно, может это все неосиляторы?

bezrukov10:05:41

Если по рукам сильно бить, Java получится, я думаю)

pacman10:05:03

скала? я на ней не пишу.. Но слышал что года 2 назад Пауль, второй разработчик после Одерского дал понять что скала это большой кусок говна... а также два года назад мне сказали что система типов с первой скалы не будет бинарно совместима со второй... ну что-то в этом духе.. что вообще выглядело для меня полной задницей... короче с тех пор принял решение обходить скалу стороной)))

artemyarulin10:05:33

дада, я тоже видел ту презентацию)

artemyarulin10:05:58

просто у них там скала.жс, интересно посмотреть как чо там

pacman10:05:03

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

artemyarulin10:05:15

дада immutable list of mutable values 😄

artemyarulin10:05:55

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

pacman10:05:44

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

artemyarulin10:05:49

ну там да, как я понимаю она и так и так умеет

artemyarulin10:05:06

все умеет. "immutability by convention”(c)

pacman10:05:33

хотя сами упоротые из лагеря джихадистов статической типизации частенько грешат насильственным приведением типов )))))

dottedmag10:05:16

immutability by convention и в C можно сделать :)

artemyarulin10:05:44

ага, вот это и останавливает все

artemyarulin10:05:29

я тут просто с хаскелем игрался 2 недели и прям так душевно-душевно, прям даже ах. Вот теперь думаю дальше с ним играться, или попробовать взять скалу, приделать к ней что-то под названием Scalaz (грят что крутая) чтоб можно было уже и в своих проектах поюзать, с кложурой скрестить

pacman10:05:59

Продолжайте играться с хаскелем

pacman10:05:25

на худой конец еще ерланга поковыряйте для расширения сознания

artemyarulin10:05:31

@malch: Ага спасибо, я уже прочитал пару книжек - счас руку набивать надо чтоб прочувствовать все эти монады) За ерланг спасибо, тоже смотрел его как-то. Ну ок - буду значит дальше хаскель капать simple_smile

pacman10:05:01

я вот кложу с ерлангом успешно скрестил... весьма интересная химера получилась... а главное удобная))) можен и вы кложу но уже с хаскелем скрестите.

pacman10:05:29

бизнес логика и вся основная муть в кложе... как надо с оборудованием работать или еще с какой низкоуровневой мутью... тут же вызвал из кложи процедуры ерланг ноды..

artemyarulin10:05:36

вот как раз про это и думаю ага - нашел уже компилятор в жс, спросил в ирке - сказали можно юзать

artemyarulin10:05:59

оо, вот отлично. У меня похожая идея - логику в кложуре, а весь IO на хаскеле

pacman10:05:00

а вы планируете какой-то сервис держать на хаскеле?

pacman10:05:27

интересно очень как обмен данными осуществляться будет и как взаимодействовать?

artemyarulin10:05:58

можно на ты, а то прям не удобно) Нене, у меня react-native приложение на ClojureScript

artemyarulin10:05:16

ну еще второе приложения как идея - там уже мобайл+браузер+бек

pacman10:05:44

ааа, понял. Я это дело только на серверной стороне юзаю.. на клиенте простой clojurescript

pacman10:05:12

а как хаскель на мобилах? уже зрелый?

artemyarulin10:05:54

ну в JS мире обмениваться не проблема - оба языка умеют интероп, т.е. создать js объект совсем не проблема. На беке - ну тут я хаскель не буду смотреть, там у них конечно все есть, но тот же netty|aleph им не переплюнуть) ну хаскель умеет компилится в JS, а значит умеет и мобайл. Вот как пример https://github.com/jyrimatti/hseverywhere

pacman10:05:26

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

pacman10:05:00

если только веб ассембли там какой-то допилят и повсеместно внедрят.. тогда только

pacman10:05:00

или же имеет смысл если на клиенте и на сервере будет хаскель и меж ними чтото вроде транзита в кложе

artemyarulin10:05:24

А фиг знает, наверно и теряется ага. Но во время компиляции типы то есть - т.е. мой код по крайней мере будет согласован с друг другом

dottedmag10:05:30

"Весь IO на хаскеле" взорвало мой мозг.

pacman10:05:56

ну может человек монадами проникнуться хочет

artemyarulin11:05:09

хочу ага

dottedmag11:05:16

Все разы, когда я видел гибрид, логика была на хаскеле, а общение с внешним миром — на чём-то ещё.

artemyarulin11:05:40

ну или так тоже сойдет, я еще не продумал до конца)

dottedmag11:05:20

@pacman: Компилятор хаскела — штука очень интересная. От исходной программы не остаётся и следа.

pacman11:05:13

ну я сильно не юзал пока, хотя внутренний голос меня точит нет нет, глянуть на хаскель.. боюсь пока только.. ато как с кложей получится.

pacman11:05:20

и понесёт меня

pacman11:05:33

а тут проекты горят.. таски.. делать надо

pacman11:05:38

а в голове хаскель

pacman11:05:43

недаёт

shinych11:05:27

@pacman: а как крестил? у нас помимо otplike еще одна либа разрабатывается, как раз для того, чтобы из кложаскрипта эрланговские ноды пинать

pacman11:05:44

а я просто из кложи пинаю

dottedmag11:05:00

Через эрланговый протокол?

pacman11:05:02

а так напрямую через веб тоже можно.. только там жсоны (((

pacman11:05:11

через протокол

pacman11:05:19

поднял ерлан ноду рядом

dottedmag11:05:24

Т.е. кложа работает external node в эрланговом кластере?

dottedmag11:05:28

Как C node?

pacman11:05:08

ну у меня хаскеля нет.. у меня кложура как веб висит с бизнеслогикой. а рядом тут же нода ерланга

pacman11:05:27

ща сину код

pacman11:05:29

там немного

pacman11:05:44

под себя правда перепилил.. так как со строками иногда непонятки

pacman11:05:01

поэтому я те строки что ерланг назад выдаёт , тегами помечаю

pacman11:05:11

а там все остальное нормально конвертится

pacman11:05:09

вот клиент простенький

pacman11:05:24

для вызова процедур ерланговской ноды

pacman11:05:29

синхронно

pacman11:05:53

асинхронно тоже можно и сообщениями плеваться в обе стороны, но мне пока это ненадо было

dottedmag11:05:00

А, через Java API. Аккуратненько и чистенько.

dottedmag11:05:31

Уф как слак расплющило от открытого сниппета.

pacman11:05:33

заюзал отработанный жаваклиент

pacman11:05:54

обернул его в кложу и нормально

pacman11:05:29

снизу 2 тестовый функции для примера

artemyarulin11:05:46

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

pacman11:05:59

вот в том и прикол

pacman11:05:08

мне надо по телнету кудато слазить

pacman11:05:23

я вручную его легко реализвал на ерланге

pacman11:05:29

или пингануть чего

pacman11:05:42

и на ерланге можно сразу кучу вокеров запустить и небольно

dottedmag11:05:48

@artemyarulin: Эрланг — это зашибительный сетевой мультиплексор.

pacman11:05:00

тоесть 150 девайсов одновременно опросить

pacman11:05:10

половино из которых не пингуются может

pacman11:05:16

а ерлангу пофиг

artemyarulin11:05:32

хм, а если кор.асинк здесь поднять? Будет чем-то хуже?

pacman11:05:42

))))))))))))))))))

pacman11:05:46

не пробовал

dottedmag11:05:19

Просто попробуй реализовать на core.async и на Erlang простой код: взять 150 хостов и пингануть их, с таймаутом и параллельно. Результаты сложить и отдать.

dottedmag11:05:28

Увидишь разницу в сложности кода.

pacman11:05:00

в общем на ерланге делать грязную сетевую работу где все постоянно сыпится и меняется самое милое дело... дёшево. сердито изза синтаксиса ерланга но чертовски удобно и эффективно

pacman11:05:23

а можно там дальше и целый кластер забабахать

pacman11:05:26

тоже легко

artemyarulin11:05:27

ага, спасибо за разъеснение. Надо дочитать книжонку, а то я тока пару глав по ерлангу прочитал

pacman11:05:13

ну еще ерлангом милое дело бинарные данные пачками выкавыривать.. например подписи с файлов или еще чего

pacman11:05:11

по ftp чтото выкачивать или по http обращатья... дёшево получается бинарные видеопотоки транслировать к примеру

pacman11:05:50

в общем у него на борту куча всяких крутых штук есть. Но надо признать с либами частенько проблемы

pacman11:05:38

@shinych: в общем если надо из кложурскрипта юзать.. то наверное проще через http . поднять на ерланге ковбоя (веб вервер) и выполнять запросы либо вообще вебсокеты обрабатывать. В качестве протокола обмена можно юзать json или даже попробовать вот это https://github.com/isaiah/transit-erlang

pacman11:05:46

а вообще классно было бы если бы Clojure на ерланге тоже мог паразитировать

aav11:05:39

у нас есть поделие csi (ClojureScript Interface). цепляется к эрланговской машине по вебсокету. со стороны эрланга такое соединение выглядит как процесс, которому можно что-нибудь, заслать, и оно прилетит в клиенту. со стороны клиента можно послать сообщение любому процессу. вообще это +- аналог эрланговского JInterface

aav11:05:27

туда-сюда гоняем ETF (Erlang Term Format), сериализатор-десериализатор у которого у нас свой

artemyarulin11:05:22

ого, я думал кложура + ерланг это очень специфичная штука, а тут оказывается каждый второй simple_smile А вы @aav почему ерланг дополнительно юзаете с кложурой?

pacman11:05:26

@aav а у вас один процесс висит на ноде эрланга или вы там пул делаете?

aav11:05:17

@pacman: каждый коннект с клиента - это отдельный процесс, на стороне эрланга

aav11:05:32

@artemyarulin: потому что clojure - это jvm, а erlang - это erlang

aav11:05:47

@artemyarulin: и строго говоря это не не эрланг дополнительно, а clojure дополнительно. задача формулировалась “как писать ui на cljs к эрланговскому проекту"

aav11:05:18

там, еще про otplite был вопрос. по сути это симулятор (на сколько это возможно) эрланговской семантики процессов поверх core.async. т.е. наш “процесс” ничем не отличается от (go …) кроме того, что он знает такие вещи как link, monitor, trap, позволяет регистрировать такие “процессы”. на его основе есть gen_server, скоро будут супервизоры.

aav11:05:08

смысл затеи не в том чтобы повторить эрланг, в рамках jvm это не реально. а в том, чтобы повторить эрланговские patterns, в первую очередь, gen_server

pacman11:05:06

а вообще если не секрет, у вас ерланг для каких задач?

aav11:05:02

в одной - это machine vision в soft real time контексте. конкретно - распознавание лиц на видео-потоках. не кооперативное.

aav11:05:36

другая задача (я про нее гораздо меньше знаю) это, можно сказать, очень хитрый спулер для high volume printing

artemyarulin11:05:51

круто 👍

aav11:05:32

для принт-центров, которые печатают, в частности monthly statements для visa

dottedmag11:05:40

Вот всегда так, как только контора из Германии, так сразу же что-то реальное, а не хипстерчат с фоточками еды.

aav11:05:17

ну, справедливости ради, первое - это в большой степни в россии происходит

dottedmag11:05:40

Окей, офис в германии :)

aav11:05:33

а otplike - пока в не очень большом проекте, для одного немецкого авто-производителя. пока обкатываем, но вообще, нам нравится.

aav11:05:40

вот надо взять волю в кулак и csi с otplike на гитхаб выложить

artemyarulin11:05:59

интересно - а почему решили cljs для фронта? ну т.е. рассматривали что-нить еще, или просто CLJS это самое похожее на ерланг?

aav11:05:43

@artemyarulin: ну а на чем еще? elm / purescript слишком экзотично, всякие N2O вообщем, тоже

artemyarulin11:05:13

Ха, у меня сейчас как раз куча вкладок на оба Pure/Elm открыто, да экзотика пока

aav11:05:42

@artemyarulin: для воинов духа - это вполне way to go. но нам, например, немецких автомобилистов на clojurescript уговорить некоторых усилий стоило. elm/purescript не думаю что они бы осилили.

artemyarulin11:05:19

дада, ну круто вообще cljs + erlang, няшно

pacman12:05:39

@aav вот вы упомянули распознавание лиц.. в реалтайме. у вас это все чисто средствами ерланга реализовано или какие-то вещи. которые требуют производительности положим на си написаны?

aav12:05:32

@pacman: эрланг только “управляет” - все что надо быcтро (С/С++) ну и критические вещи на GPU живут - CUDA

aav12:05:23

на низком уровне у нас есть нативные демоны, которые эрланг стартует (open_port, etc) и за ними следит. между демонами и эрланговским кодом - protobuf

pacman12:05:56

@avv благодарю за ответ... Значит все таки CUDA.

pacman12:05:12

ну впринципе классно

pacman12:05:46

а вот для CUDA, это какие-то особые сервера надо использовать?

az12:05:09

@aav что на куде считать? Пример можно?

pacman12:05:34

Ну они анализ изображений делают

pacman12:05:44

мало ли. всякое бывает

pacman12:05:55

может спектрограммы какие обсчитывать в реалтайме

aav12:05:02

@az например Face Detect, у нас своя варианция на тему каскадов Haar'a

az12:05:05

А, с телефона не долистал историю

aav12:05:07

@pacman: а запускать - да нужны gpu. можно бытовые, можно всякие дорогие профессиональные (серия Tesla)

aav12:05:49

а вообще у нас даже на таком живет - http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.html

pacman12:05:01

ну я почему спросил. просто у нас простые серваки. в стойках. вот если понадобится это надо какойто особый сервак покупать или же простой как-то можно модифицировать

aav12:05:52

@pacman: я вот тут не очень уже хорошо знаю подробности. там есть нюансы что не во всякий сервер можно gpu засунуть, и там с питанием/охлаждением тонкости есть

dartov12:05:59

на AWS дают виртуалки с GPU

aav12:05:21

@dartov: дают, и не только там. но довольно дорого выходит.

dartov12:05:36

да, это для богатеньких буратин 😞

aav12:05:52

мы вот тут кластер тестировали. но нам для эксперимента пары часов хватало.

aav12:05:24

и больше где-то 15 нод получить не выходило - говорило что “нет свободных"

dartov12:05:32

а они через openstack api дают ноды заводить?

dartov12:05:37

или только мышкой?

aav12:05:20

какое-то api там есть

aav12:05:47

но нам и “мышкой” вполне хватало

aav12:05:10

$2.80 в час сейчас нода с K40 стоит

aav12:05:25

и 3.50 с двумя

dartov12:05:19

а g2.8xlarge это эквивалент чего у них?

dartov12:05:30

High-performance NVIDIA GPUs, each with 1,536 CUDA cores and 4GB of video memory

dartov12:05:24

это как 1/3 одного К40

dartov12:05:46

да, разница приличная

dartov12:05:01

но у амазона удобно что трафик с S3 бесплатен, все рядом

dartov12:05:48

вообще спасибо, очень интересные предложения

dartov12:05:56

тачка с двумя К80 с оплатой по часам

serioga14:05:30

> чутка оффтопа - а чо как скала вообще? Совсем прям г? Если по рукам бить и не юзать все подряд то можно писать нормальный код? А то прям везде все ноют что там ад и садомия, сложно и куча всего что ток можно, может это все неосиляторы? ну вот я на скале несколько лет пишу уже. язык и язык, есть плюсы и минусы. clojure попроще, конечно.

az14:05:18

ребят, мне одному кажется, что JWT как-то не очень быстро энкодится

az14:05:59

или я чего-то не понимаю, или сейчас это самое медленное место в API

dottedmag14:05:20

@az: Подробнее, пожалуйста.

dottedmag14:05:46

@az: JWT в смысле "JSON Web Token"? Подписанный?

dottedmag14:05:47

@az: HMAC или RSA?

az14:05:29

у меня сжирается много CPU

az14:05:00

короче в связке с eventmachine-ой так себе получается

az14:05:42

на clojure - е сыкотно пока проекты писать simple_smile

dottedmag14:05:26

% openssl speed rsa4096
Doing 4096 bit private rsa's for 10s: 1632 4096 bit private RSA's in 9.99s

dottedmag14:05:38

Потому что RSA очень медленный алгоритм с большими ключами, конечно.

dottedmag14:05:46

Маленькие ключи сильно быстрее: Doing 2048 bit private rsa's for 10s: 11872 2048 bit private RSA's in 10.00s

dottedmag14:05:51

Но пользы от них ноль.

seryh15:05:59

2048 bit уже вычисляются чтоли?

dottedmag15:05:32

Сегодня ещё нет.

seryh15:05:46

вообще если данные на сервисе не особо секьюрные то и HS256 с secretkey за глаза

dottedmag15:05:50

Ключевое слово — сегодня.

seryh15:05:56

сегодня как раз задеплоил на нем сервис в прод

seryh15:05:59

по сбору статистики

dottedmag15:05:16

У HMAC-SHA256 совсем другие секурити-свойства.

artemyarulin15:05:21

@serioga: просто как то очень смущает количество критики про скалу, особенно от адептов фп

serioga15:05:47

да потому что: хочешь писать императивно — пожалуйста, ооп? да ради бога, фп? легко

artemyarulin15:05:27

аа т.е. fp by convention

serioga15:05:40

поэтому непонятно, как «правильно», всегда проблема выбора, как сделать лучше, какой разработчик что умеет, то и пишет

artemyarulin15:05:55

дада именно это я и читал

serioga15:05:34

пришёл умник, написал код с использованием scalaz, простые парни с опытом java даже со стаканом не разберутся

artemyarulin15:05:29

а ты юзал его? я читал что прям чуть ли не хаскель получается с этим скалаз

vadim-tt15:05:59

scalaz - это попытка реализовать стандартные монады и прочие штуки из теории категорий на скале

serioga15:05:08

сам код напишешь, потом его улучшать хочется, паттерны всякие прикручивать слишком большая свобода выбора тоже плохо simple_smile

vadim-tt15:05:24

в некотором роде scalaz - это попытка из scala сделать хаскель)

artemyarulin15:05:41

удачная?

serioga15:05:45

> а ты юзал его? я читал что прям чуть ли не хаскель получается с этим скалаз я не один в команде, меня бы прокляли simple_smile так, со стороны смотрел только

vadim-tt15:05:07

в scala это выглядит все очень overcomplecated

vadim-tt15:05:17

и не очень дружелюбно)

vadim-tt15:05:03

в отличае от хаскеля, где система типов позволяет все это красиво реализовать

vadim-tt15:05:15

в scalaz городят всякие технические извороты

serioga15:05:39

зато элементарные функциональные вещи с стандартной поставке вызывают геморрой например аналог (comp f1 f2 f3)

vadim-tt15:05:04

typeclass-ы в scala реализовать так же как в хаскеле просто невозможно

serioga15:05:59

отсутствие синтаксиса для данных вида {:a {a: {:a {}}}} тоже огорчает

vadim-tt15:05:13

да, это вообще боль

vadim-tt15:05:38

работа с immutable nested структурами - это та еще задачка

artemyarulin15:05:52

спасибо за инфу. а скалу.жс вы не смотрели? как оно по сравнению с cljs?

vadim-tt15:05:55

решается как в хаскеле линзами - но это уже очень сильные колдунства для скалы)

serioga15:05:51

ну а для бизнеса version fragile серьёзная проблема, хотя я на практике сильно не страдал от этого, больше переход java7→java8 вопросов вызывал

serioga15:05:21

> а скалу.жс вы не смотрели? я не сталкивался

vadim-tt15:05:36

скалу.жс не смотрел, но я мне просто не верится что у них там все хорошо)

vadim-tt15:05:53

с самим scalac бы до конца разобрались)

vadim-tt15:05:06

и с тем как это все ворочается под jvm)

artemyarulin15:05:32

ладно останусь тогда с хаскелем пока, спасибо ребят!

serioga15:05:05

макросы я в скале не осилил, тоже ещё магия

vadim-tt15:05:06

вообще все эти их тенденции с переименованиями typesafe в lightbend-ы тоже ничего хорошего)

vadim-tt15:05:25

макросы - это адский ад)

vadim-tt15:05:51

если на template haskell народ поругивается, то уж scala макросы - это за гранью добра и зла)

serioga15:05:17

всякий hype про reactive programming мне тоже непонятен

serioga15:05:12

в clojure открываешь rationale, смотришь и видишь, зачем и почему намутили, решаешь, надо оно тебе или нет

vadim-tt15:05:14

ну вот как раз typesafe две идеи и двигают typesafe и reactive)

artemyarulin15:05:18

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

vadim-tt15:05:39

правда скала по сравнению с хаскелем типАбезопасный язык)

vadim-tt15:05:49

и видимо ребята решили от греха подальше сменить название)

serioga15:05:44

в общем я со скалой по прежнему работаю, а на clojure микросервисную архитектуру леплю

serioga15:05:30

а так сама jvm в целом устраивает, когда опыта с ней наберёшься

vadim-tt16:05:04

у скалы сейчас есть три достаточно серьезных продукта - kafka/spark/play framework

artemyarulin16:05:23

акка не?

vadim-tt16:05:40

акка все же далеко не так популярна

serioga16:05:47

> play framework не трогал. я на liftweb вырос

vadim-tt16:05:33

да, были забавные холивары в свое время почему в typesafe stack не взяли lift simple_smile

vadim-tt16:05:25

если бы в akka akka-http был действительно хорош, думаю у неё было бы гораздо больше сторонников

konukhov16:05:54

интересно, твиттер свой heron (заменитель сторма) собираются опенсорсить? он тоже на скале 100%.

konukhov16:05:24

я вот думал, что akka в скала мире как раз достаточно популярна, а тут вот оно как.

vadim-tt16:05:31

может и достаточно популярна, просто у меня опыт такой:)

serioga16:05:31

может akka в каких-то задачах и популярна лично мне распределённые акторы как-то не понадобились simple_smile

vadim-tt16:05:49

а heron вроде как на pure java

konukhov16:05:35

есть инфа? интересно почитать.

vadim-tt16:05:24

да вроде никакой инфы особо не раскрывали, давненько уже читал только что мол быстрее, выше, сильнее и да, решили на чистой джаве

konukhov16:05:02

аа, я может упустил этот момент. интересно, почему на чистой джаве решили.

vadim-tt16:05:12

потому что шустрее

vadim-tt16:05:25

jit скалу оптимизирует как повезет и результаты трудно спрогнозировать)

vadim-tt16:05:29

плюс scala - это по большому счету все равно дополнительный слой поверх джавы и оверхед привносит в любом случае

konukhov16:05:14

ну да, понятно.

serioga16:05:07

> это по большому счету все равно дополнительный слой поверх джавы и оверхед привносит в любом случае в скомпилированном байткоде нет разницы ну, если неоптимальный код не генерится simple_smile

serioga16:05:55

но вычислительный оверхед не страшен, если он улучшает жизнь разработчика

vadim-tt16:05:04

в том то и дело, что разница есть, например, если посомтреть на то как в scala были функции/лямбды реализованы до интеграции с java8 simple_smile

vadim-tt16:05:44

как раз для таких систем как heron - вычислительный оверхед не желателен, генерится куча объектов, жрется память, растет время и продолжительность gc, растет latency

vadim-tt16:05:47

все это критично

vadim-tt16:05:57

неплохой доклад, кстати на тему скалы и перфоманса http://www.youtube.com/watch?v=M7ptT_yY97U

serioga16:05:33

только гугл что-то не может мне рассказать, что heron написан на яве

serioga16:05:21

а, нашёл пдфку

vadim-tt16:05:20

да, гуглится плохо, мне почему-то так запомнилось) может я тут и нагло вру simple_smile

serioga16:05:51

в общем, там наверчено — читать страшно simple_smile

konukhov16:05:05

я тоже ее сейчас читаю – “The Heron Instances are written in Java, as they need to run user logic code (which is written in Java). There is one JVM per Heron Instance."

konukhov16:05:31

но это воркеры только – там еще метрики всякие есть и тд

dottedmag18:05:11

Какие весёлые графики в конце.

dottedmag18:05:15

"Всё лучше стало"