Fork me on GitHub
#clojure-russia
<
2015-10-29
>
malch05:10:22

Если есть кто-нибудь из Петербурга, кто хочет поучаствовать в Clojure Cup, но еще не нашел команду, пишите в личку 😊

ul09:10:00

глупость, конечно, но таки спрошу: есть здесь адепты строгой статической типизации?

prepor09:10:28

а чоу?

gordon10:10:11

а это как в анекдоте «Коллега, что за хуйню нам тут показывают?!»

ul10:10:58

да вот думаю глянуть в эту сторону

ul10:10:12

elm там потрогать, purescript

ul10:10:25

есть какой-нибудь опыт?

ul10:10:58

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

ul10:10:12

хочу проверить, всё ли там хорошо в мире хаскелля, как нам рекламируют

ul10:10:42

@gordon: а что за анекдот?

ul10:10:15

@prepor: и как оно? 😃

ul10:10:32

@gordon: нагуглил

artemyarulin10:10:23

Мы перешли с JS на TypeScript (не совсем строго правда) не так давно для одного из проектов - скучаю по динамике( Бесконечная борьба с компилятором

artemyarulin10:10:51

Кстати, может скажу банальность, но только сейчас узнал:

(-> [jay john mike chris]
    (->> (filter (comp (partial = "new york") :current-city))
         (group-by :employer))
    (update-in [""] (partial map :name)))
(as-> [jay john mike chris] persons
    (filter (comp (partial = "new york") :current-city) persons)
    (group-by :employer persons)
    (update-in persons [""] (partial map :name)))

artemyarulin10:10:17

по сути универсальный threading macros, буду юзать его теперь везде

ul11:10:26

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

artemyarulin11:10:27

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

ul11:10:17

меня смущает подозрение, что доп проверки в критических местах не будет работать, вон CircleCI недавно на это жаловались http://blog.circleci.com/why-were-no-longer-using-core-typed/

ul11:10:13

мне почему-то кажется, что фишка всей это пляски вокруг хиндли-милнера хороши, когда проверяется всё

ul11:10:19

кроме мест куда совсем не дотянуться

kronos_vano11:10:25

есть ответ на эту статью, только поискать нужно

ul11:10:56

да, ответ я читал

prepor11:10:41

> partial некоторые языки и вовсе не поддерживают а некоторые поддерживают куда лучше. @ul: elm я попробую, но как язык оно довольно убогое. хаскель сильно академичен, не надо ожидать, что придешь туда и начнешь ебошить, надо овладеть базой сначала ) а вот окамл, например, тупой, там можно сразу начать фигачить, но коммьюнити небольшое.

ul11:10:59

хм-хм... а почему убогое? из-за экосистемы, или в самом языке дырки?

prepor11:10:45

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

ul11:10:50

и какие у хаскеля над окамлом преимущества, ради которых стоит «овладевать базой»?

prepor11:10:56

фундаментально куда более интересный тип выполнения (ленивый) в теории позволяющий компилятору делать много крутых оптимизаций, полное отделение io от чистых функций (собственно следует из ленивости), весь код строится вокруг нескольких абстракций, которые компоузятся друг с другом иногда хорошо (те самые монады, функторы (не ml-функторы), аппликативные функторы, ленсы) и не очень хорошо (тонны монад трансформеров) и эти абстракции повсюду, жисончик не прочитать без понимания что с чем нужно соединять. Зато если поймешь, наверно, получишь от этого бенефиты simple_smile Из коробки неблокирующий IO в сокет-операциях. Активное комьюнити.

ul11:10:13

спасибо

artemyarulin12:10:09

а как насчет Go? Вроде и типы, и стандартная библиотека хороша - да и горутины что core.async одна малина

prepor12:10:10

более убогий язык трудно себе представить

artemyarulin12:10:46

оо, а можно попродробней? Просто сейчас как раз уходим с node.js на беке и вроде как на Go

prepor12:10:54

ну а чего тут говорить? ) система типов убогая, сколько уже нытья про отсутсвие хотя бы чего-то похожего на генерики, чего добавлять-то. В итоге все библиотеки говно, программируешь на interface{}, тайп сейфети на уровне динамических языков, обработка ошибок — говно, по той же причине. нет нормальных типов => нет result-типа => нет composable обработки ошибок. Как итого получаем тысячу строк кода вместо ста, соответсвующее количество багов и скорость разработки. Как сайд-эффект даже невозможность такой банальной техники как метод-чейнинг. Повсюду стейтменты вместро экспрешионов. Нафига было select ограничивать известными в компайл-тайме каналами? ну т.п.

prepor12:10:39

Как остроумно заметил один парень Го болье похоже на диверсию от гугла против всего остального мира, а внутри они давно на C++17 пишут

prepor12:10:57

Реализация CSP в том или ином виде есть почти во всех нормальных языках (включая вышеупомянутые хаскель и окамл)

artemyarulin13:10:37

>Нафига было select ограничивать известными в компайл-тайме каналами? это первая боль которую я увидел в го(

artemyarulin13:10:49

а что бы ты посоветовал для бекэнда? У нас у команды сейчас аллергия на не статичные языки (после ноды), так что кложуру не продвинуть ну никак

prepor13:10:06

@artemyarulin: я фиг знает, я пока личинка программиста, да и того, что совсем нравилось бы нет ) я сам пока балуюсь с окамлом переписывая https://github.com/prepor/condo/ на него в https://github.com/prepor/condo2.

artemyarulin13:10:44

эх, нет в жизни счастья. Спасибо все равно

kronos_vano13:10:13

По моим наблюдениям: если входить в go x времени. То в clojure 2x, а в ocaml 4x

prepor13:10:55

Да, на го можно начать писать говно очень быстро, с этим никто не спорит

artemyarulin13:10:24

на JS все пишется за 0.01x

(npm install jquery; jquery.addNumbers(2,2))
, но это мало что значит

artemyarulin13:10:20

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

niquola13:10:01

Типизированные ребята мечтают о зависимых типах (ala Agda, Coq). Haskell красив, мне нравиться как мост между математикой и нашей ремесленеческой возьней, но до него надо созреть видимо simple_smile

niquola13:10:34

У хаскелистов так, начал писать сайт и завис на месяц над монадическим парсером параметров simple_smile Зато если получилось, можно кандидатскую защищать.

niquola13:10:36

Математической строгости хочется, но пока не настолько - попозжеe simple_smile

ul16:10:03

эх, мне бы просто поддержку кода упростить, куда там до математической строгости...

ul16:10:11

@prepor: ocaml в емаксе фигачишь?

prepor16:10:34

@ul: угумс

ul16:10:48

какие-то нюансы настройки?

prepor16:10:54

@ul: опасайся @dottedmag !

ul16:10:10

есть канал для этого)

az16:10:21

@prepor: а ocaml тебя не пугает вот эта непоследовательность авторов? я про то, что там и фп и ооп, но при этом оно всё какое-то "особенное"

prepor16:10:21

в общем там в целом все ок, merlin вполне ок, вот только его конфигурять надо отдельно (пара строчек в спец-файле с типа списком зависимостей). в целом у меня ничего, кроме того, что есть в spacemacs не настроено

az16:10:27

отсюда куча вопросов как "правильно" писать

az16:10:53

конструкция for это что-то совсем печальное

prepor16:10:23

@az: там нет ничего особо непоследовательного и особенного, собственно ml-языки в деды годятся большинству “современных”, странно их называть “особенными”. императивности там ровно столько сколько надо. можно создать указательно и модицифировать его, да. это иногда удобно и эффективно. ровно так же как в кложе есть atom, только тут все проще, без решения проблем конкурентного доступа

prepor16:10:57

@az: не вижу ничего печального ) там императивщины очень мало и она в библиотеках. в кложе тоже есть transients, сколько раз ты их использовал?

prepor16:10:54

а, “ооп”. “ооп” там совсем не то ооп, объекты не те объекты, а классы не те классы. и опять же их никто особо не использует и применимы они в каких-то узких сферах. например, гуи рисовать

prepor16:10:34

(наверно, никогда не рисовал гуи, но примеры хорошего применения ООП обычно заканчиваются на окошечках)

az16:10:49

я вообще фп пока не использовал, я как-то попал в одно купэ с @nicola и пошло поехало … покатился по наклонной … simple_smile я пока только читаю и тд и тп, очень многое выглядит сомнительно

az16:10:45

пока такое впечатление, что всё это как "новые обои в болдженос", но написанные окадемиками

az16:10:27

*академиками simple_smile

prepor16:10:13

окамл очень прагматичный язык, а совсем не академичный. отсюда и вся императивщина. http://realworldocaml.org/ если что, годная книжка

prepor16:10:32

там на всю книжку “монада” встречается раза два всего, какие уж тут академики!

az16:10:17

спасибо

ul16:10:21

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

ul16:10:27

ну не сам окамл, а экосистему

ul16:10:33

батарейки загибаются вроде

prepor16:10:41

ну да, я сам не знаю ) Core и Async збс, лучше лвт и батареек имха. но и движухи все таки достаточно, и в либах и в языке.

az16:10:15

а россиянский слак есть?

kronos_vano16:10:54

Порог вхождения большой, я щитаю

ul16:10:58

а если в браузер пихать, вроде js_of_ocaml лучше остальных?

ul16:10:08

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

prepor16:10:13

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

prepor16:10:01

@az: есть жаббер с десятком но он мягко говоря не особо активный.

kronos_vano16:10:09

Я сужу по себе. У меня не взлетело

prepor16:10:23

@ul: про js_of_ocaml хз, по мне там интероп не очень, но я не разбирался

ul16:10:55

вообще с компиляцией в джаваскрипт не разьирался, или с этим компилятором?

prepor16:10:23

@ul: про коммунити можно скажем вот по этой подборке посудить. http://alan.petitepomme.net/cwn/2015.10.13.html это выжимка всякого происходящего за неделю в мейл-рассылке

prepor16:10:18

@ul: ну я хз, вроде как наоборот те же ребята из Core и Async доразделяли свои либы что б не быть привязанным к линуксу, а что бы работало в разных платформах, таких как js и mirage (юникернел)

a.espolov16:10:15

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

prepor16:10:30

кому не хватило? )

a.espolov16:10:50

или у Вас just for fun?

a.espolov16:10:24

весь день обсуждаете )

prepor16:10:28

ну тут кто-то спросил, попало на благодатную почву simple_smile

ul16:10:05

с быстрой и удобной разработкой у кложи всё хорошо

ul16:10:19

вот когда наразрабатывал

ul16:10:26

немного скрипеть начинает

ul16:10:48

хотя всёравно намного меньше чем в пачке других языков

ul16:10:55

но хочется ведь грааля как всегда

kronos_vano16:10:51

так на хабре завещали что Nim грааль

ul16:10:07

та не

rm16:10:13

> на хабре

ul16:10:32

@prepor: а вот я и не могу найти ничего, кроме js_of_ocaml, чтоб оно было активным и компилировало окамл в джс

ul16:10:41

всё брошенное какое-то

prepor16:10:58

ну да, окамл в жс это js_of_ocaml

az17:10:11

https://github.com/s3team/uroboros Uroboros: Infrastructure for Reassembleable Disassembling and Transformation да что они там курят?

niquola17:10:24

OCaml слишком французкий для меня simple_smile Язык все же определяет мышление.

az17:10:53

французский - сложный?

niquola17:10:16

OCaml французский просто simple_smile

niquola17:10:16

И старенький, такой Жан-Поль Сартр

niquola17:10:04

сцуко он еще и косой был simple_smile

az17:10:11

жуть

az17:10:16

как это развидеть

niquola17:10:06

А грааль мужчина из Мск вот здесь создает - https://github.com/saniv/symta

az17:10:25

qsort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#) ok

rm17:10:21

du tri rapide

kxepal17:10:38

перл какой-то

prepor17:10:18

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

ul17:10:06

вот к лиспам со статической типизацией http://shenlanguage.org/

niquola17:10:49

Ocaml - c++ для функциональщиков, кстати он переехал официально на github

ul17:10:50

ну раз пошёл разговор за языки вообще, я вот на эту штуку поглядываю http://purelang.bitbucket.org/

az17:10:55

надо создать репу на github, назвать её кунсткамера

az17:10:08

писать туда ссылки на такие языки

ul18:10:30

не, ну на J пишут же люди

ul18:10:41

как его в кунсткамеру-то

ul18:10:58

(правда не уверен, что на нём читают)))))

rm18:10:18

awesome Kunstcamera -- a curated list of esoteric languages

ul18:10:09

что-то мне никто не отвечает про rewrite-clj на главном канале

ul18:10:15

кто-нибудь пользовался им?

ul18:10:20

а то я туплю от слова совсем

niquola18:10:47

А что это?

az18:10:52

https://github.com/zinenko/kunstcamera пока так, потом можно будет как-то группировать

az18:10:55

налетай simple_smile

niquola18:10:34

@ul ты хочешь сорцы процессить?

ul18:10:07

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

ul18:10:16

значит надо попробовать по-человечески

niquola18:10:10

А в тесты его смотрел?

niquola18:10:26

Он там вроде трансформирует

ul18:10:01

не-а. я ж говорю, что туплю. ушёл смотреть

ul18:10:13

фиговые там примеры, но я понял как делать

ul18:10:21

в моём коде ошибка была

ul18:10:36

я пытался из вектора вытащить детей как из дерева, а надо просто его элементы взять

niquola19:10:33

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

niquola19:10:41

Хорошая идея для ClojureCup simple_smile

ul19:10:20

что-то припоминается... codeq что ли

niquola19:10:26

ага - только не столь дерзкую, а практичную - чтоб задача вроде твоей решалась в 5 sloc

niquola19:10:37

за минуту

ul19:10:52

а нет, он про гит репы

niquola19:10:55

у нас и datascript есть под рукой simple_smile

ul19:10:20

да, хорошо было бы

ul19:10:27

а то в голове задачка совсем простая

ul19:10:43

есть лисповое аст, надо одно на другое поменять

niquola19:10:12

я тут пробовал зависимости визуализировать в svg - тоже полезно

niquola19:10:33

запускаешь как web-server и ходишь по срезам проекта

niquola19:10:28

автоматический поиск похожего кода

niquola19:10:49

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

Kira Sotnikov20:10:20

pacman: а что нормальную инит систему не использовать?

Kira Sotnikov20:10:30

Я вот героически перелез на апстарт

Kira Sotnikov20:10:42

Жду системд в убунте по дефолту

artemyarulin20:10:47

по поводу визуализаторов - вчера в clojure канале кинули: http://asterion-dev.elasticbeanstalk.com/index.html

artemyarulin20:10:57

классная штука, для приватных репо тока нету пока(