Fork me on GitHub
#clojure-russia
<
2016-02-09
>
artemyarulin08:02:02

народ а чо как скала вообще? реальне плохо? вроде бы и ФП и типы, все как заказывали не?

artemyarulin08:02:22

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

artemyarulin08:02:34

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

artemyarulin08:02:51

фреге вот вариант да, но скалу хоть кто-то юзает

vadim-tt08:02:53

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

vadim-tt08:02:36

и с библиотеками есть проблемы: sbt местами совсем слегка неадекватный)

vadim-tt08:02:09

в некоторых либах сложно понять что происходит из-за магии implicit conversion-ов

vadim-tt08:02:30

баги есть, любителя хаскеля любят городить очень такой типизированный код, аля Future[Either[Optional[Throwable], List[String]]]

vadim-tt08:02:46

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

artemyarulin08:02:29

>Future[Either[Optional[Throwable], List[String]]] хм, блин а чо это плохо да? Я думал как раз что если перейду на типизированный язык то именно так писать и буду simple_smile

artemyarulin08:02:17

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

rm08:02:49

а ты тока книжку читал или еще примеры компилял?

artemyarulin08:02:18

@rm: неа, ни строки не писал на хаскеле simple_smile На расте вот писал, там тоже всякие монадические Result|Maybe есть, но чутка совсем

rm08:02:28

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

artemyarulin08:02:24

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

be909:02:55

скала дичайше медленная. компиляция простой какой-нибудь фигни может и 30 сек занимать

be909:02:05

sbt — тот еще уродец

artemyarulin09:02:31

ну компилируешь то ты редко же?

artemyarulin09:02:39

а тьфу, там репла нет 😄

artemyarulin09:02:17

привык уже в кложуре что начал репл сессию и так неделю с ним

be909:02:08

ну и культура специфическая. если в clojure как-то приняты простые решения, то скалисты любят навернуть что-нибудь этакое, "because I can"

be909:02:17

сам язык в своей основе неплохой, но пошло это всё куда-то не туда

artemyarulin09:02:05

вот да, создалось такое-же впечатление. А ты бы @be9 чо посоветовал еще посмотреть? Такаоеж как кложура тока с нормальной системой типов?

be909:02:57

не подскажу, я сам пришёл к clojure и доволен simple_smile

be909:02:30

ну разве что вот это посмотри http://nim-lang.org/

artemyarulin09:02:08

хм, а чем он лучше раста?

Kira Sotnikov09:02:26

запилите юзкейсы для раста )

Kira Sotnikov09:02:42

а то я смотрел смотрел и не знаю чо на нем делать

vltar09:02:18

На сколько жизнеспособно не скажу

artemyarulin09:02:27

@vltar: Дак вроде оно почти не отличается от core.typed?

vadim-tt09:02:41

у Typed Racket есть такая же беда как и у core.typed

vadim-tt09:02:09

в стыках со стандартной либой типов совсем нет и это мешает

vltar09:02:24

@artemyarulin: видимо так

artemyarulin09:02:42

а чо как там с этим gradual typing? или как там его

artemyarulin09:02:54

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

vadim-tt09:02:02

ну он вроде как еще совсем in progress

vadim-tt09:02:17

и его пока нет, но звучит как то что нужно)

vltar09:02:01

@artemyarulin: еще на ум ocaml приходит

vadim-tt09:02:42

вообще нормальная система типов - это хаскель, ml, agda, coq, idris

vadim-tt09:02:56

последние правда больше доказатели теорем чем языки)

artemyarulin09:02:16

Про Nim:

Choice #2, Uniform Function Call Syntax (UFCS), allows you to write `a.someFunc(b)` or `someFunc(a, b)` interchangeably.
Choice #3 is case-insensitivity for identifiers: You can write `a.to_lower()`, `a.toLower()` or `a.tolower()` interchangeably.
Choice #4 is the ability to drop empty parens from the end of a function call: `a.len()` can be written as `a.len`. Combined with UFCS, this allows you to write `len(a)`, `a.len()` or `a.len` interchangeably.
фу, кака

artemyarulin09:02:09

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

larhat09:02:29

как у хаскль98 или со всеми гхц расширениями?

larhat09:02:45

HKT в раст вот вроде собираются запилить

artemyarulin09:02:19

@larhat: я чота тока 98 цифру понял из твоего сообщения simple_smile

vadim-tt09:02:27

это стандарт

larhat09:02:45

просто GHC ОЧЕНЬ много расширений имеет, которые типа не в стандарте

artemyarulin09:02:53

понял ага

artemyarulin09:02:35

продолжая про Nim - там GC, кой смысл делать системный язык с GC? Раст лучше выглядит

vadim-tt09:02:36

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

artemyarulin09:02:20

в кложуре макросы - у хаскеля экстеншены компилятора. Эх, лисп классный всеже...

vadim-tt09:02:09

у хаскеля тоже есть макросы, реализованые как одно из расширений GHC) Template Haskell

vadim-tt09:02:43

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

artemyarulin09:02:10

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

artemyarulin09:02:26

в кложуре же кста есть type hints

(defn length-of [^String text]
  (.length text))
чо никто не придумал их заюзать для проверок при компиляции

larhat09:02:44

а чего в хипере не хватает вам?

artemyarulin09:02:54

чтобы был быстрее всех simple_smile

artemyarulin09:02:38

вот это как допилят - тогда ништячок будет

larhat09:02:10

да мио ж сам по себе днище

artemyarulin09:02:31

оу правда? а чо так? есть что-еще кроме мио?

larhat09:02:38

ну это просто реактор

larhat09:02:43

однотредовый

larhat09:02:55

в c++ уже async/await вот-вот будет

larhat09:02:06

надо смотреть, что поверх запилят, там есть mioco и ещё что-то про корутины

larhat09:02:14

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

larhat09:02:23

чем on_read/on_write

artemyarulin09:02:24

неа, с++ я не осилю

larhat09:02:27

и прочее

artemyarulin09:02:45

ну пилят да, народ трудится

abtv10:02:23

@artemyarulin: вроде как Nim можно и без GC, если очень надо

abtv10:02:25

У меня с Clojure только одна проблема: когда проекты большие и тем более, если нет тестов, то становится сложно

larhat10:02:46

я чот не увидел фишку в Ниме по сравнению с растом

abtv10:02:45

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

be910:02:28

фишка нима — например, в компиляции в жабоскрипт

be910:02:00

т.е. можно устроить nim everywhere, как с clojure

abtv10:02:21

@b9, вряд ли взлетит

be910:02:46

а то я посмотрю, как раст с его концепцией borrow будут в JS затаскивать simple_smile

be910:02:03

да взлетит или не взлетит, вопрос десятый

abtv10:02:36

Не, раст в js не надо, зачем?

abtv10:02:24

Там же скорость разработки больше важна, а у раста с этим плохо

be910:02:48

"because I can"

abtv10:02:01

Так как в скале)))

be910:02:26

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

be910:02:29

сейчас вообще с языками непонятно. каждый день появляется какой-то новый язык (+ 1 новый фреймворк для js 😄 ) что такое «взлететь» сейчас, в 2016-м?

abtv10:02:06

Нишу Java, php и ruby займёт go, например)) это взлёт))

abtv10:02:31

Или потеснит хотя бы

abtv10:02:46

А с Nim непонятна ниша

abtv10:02:08

Почитайте Nim in action первую главу, я не понял зачем он сейчас, а не 10 лет назад

abtv10:02:49

Первая глава качается бесплатно, кстати))

be910:02:35

вот это про go щас смешно было 😄

alwx10:02:45

особенно круто про php-программистов, которые осилили go

Kira Sotnikov11:02:52

нахуй го )

be911:02:21

«нах го или го нах»

Kira Sotnikov11:02:48

а в чем разница?

be911:02:49

в том, кто отправляется нах: язык go или собеседник 😛

dottedmag12:02:35

@abtv: Раст целится на место C++, а не на место кложуры, конечно.

dottedmag12:02:24

@lowl4tency: вордпресс.ком вроде как переписан на ноде, ахаха.

Kira Sotnikov12:02:59

dottedmag: то есть они сами им не пользуютсяя?)

dottedmag12:02:06

Ну да, заколебало.

dottedmag12:02:12

Взяли и втихую переписали.

Kira Sotnikov12:02:51

вот пидорасы)

Kira Sotnikov12:02:42

там в исходниках как будто гранату взорвали

Kira Sotnikov12:02:00

здесь мы жс заинлайним, а тут вынесем

Kira Sotnikov12:02:08

тут пхп так тег закроем, а тут вот так

Kira Sotnikov12:02:17

творческие люди

be912:02:39

ну, node.js тоже отчасти поддерживает гуманитарное программирование

dottedmag12:02:41

Да не творческие. Просто их было много, и не было жёсткого coding style.

be912:02:39

> Внимание: данная запись была опубликована 1 апреля 2015 года.

dottedmag12:02:20

Ах, я попался.

dottedmag12:02:28

Хотя нет, это другая.

be912:02:25

т.е. PHP-шный вордпресс у них теперь как API сервер, йо

be912:02:25

хуже сайта на PHP может быть только REST API сервер на PHP 😄

dottedmag12:02:18

Ох, я помню XML-RPC API-сервер на PHP.

dottedmag12:02:33

Была такая панелька, Plesk звалась.

artemyarulin12:02:08

народ, а как тестировать асинхронные функции с кложурой? кложурскрипт, там все понятно и есть async а с обычным clojure.test?

artemyarulin12:02:47

тащить кор.асинк чтоль только для этого? у меня функция то по сути (fn[{:keys [a]} cb] (cb {:b a}))

larhat12:02:52

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

larhat12:02:23

(а так можно ещё помокать что-нибудь, чтобы было синхронно всё with-redefs-fn или как там)

artemyarulin12:02:02

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

artemyarulin12:02:33

блина, а реально ведь ничо нету для этого. Ну епта

seryh13:02:19

@artemyarulin: future разве нельзя использовать?

artemyarulin13:02:51

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

artemyarulin13:02:48

а кста давно волновало - чем идеологически отличается Deferred|Promise|Feature? Это все разные термины одного и того-же?

seryh13:02:25

интерфейс вызова просто разный, чтоб красивей использовать в разных случаях

seryh13:02:29

я так думаю

artemyarulin14:02:33

http://stackoverflow.com/questions/12993659/why-does-scalaz-use-complex-symbols-and-no-in-code-documentation это кончно не скала, а скалаз - но епта, омг, шоза)

be914:02:54

ну тоже мне, APL переизобрели

be914:02:03

вот хорошие примеры есть https://en.wikipedia.org/wiki/APL_(programming_language)

be914:02:32

(~R∊R∘.×R)/R←1↓ιR — эта программа находит все простые числа в диапазоне от 1 до R

larhat14:02:44

ну в математике ещё с ранних классов пишут D, а говорят "дискриминант" и ничего, не Discriminant и coef_a, coef_b или ещё что-нибудь

rm15:02:14

а перед этим пояснение

rm15:02:19

между прочим

rm15:02:37

вот эти модные mathematica и прочие ipython хорошо бы пошли с APL

rm15:02:57

а то код там смотрится так себе

be915:02:57

в математике можно из одного шара сделать 2! (хак теории меры)

larhat15:02:10

только если у тебя фамилия банах!

larhat15:02:12

или тарский!

larhat15:02:19

у других не получается %)

artemyarulin15:02:07

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

be915:02:35

я про то, что не стоит равнять программирование с математикой

be915:02:43

что хорошо для банаха, не всегда хорошо для тарского!

be915:02:56

по-моему, проблема со спецсимволами в основном в том, что их не слишком-то удобно набирать

be915:02:35

в том же латехе гораздо быстрее набрать \zeta, чем искать по панелькам и окошкам символ ζ

larhat15:02:38

скалаз да, перегнули, с этим юникодом

larhat15:02:02

а так в кложе вроде тоже ->, ->>, <! и проч не особо мешают

be915:02:03

тут нужен какой-то слепой 20-пальцевый метод для набора

be915:02:22

> A key development in the ability to use APL effectively, before the widespread use of CRT terminals, was the development of a special IBM Selectric typewriter interchangeable typeball with all the special APL characters on it.

be915:02:27

т.е. нужна спецклавиатура, а это сразу до свидания

be915:02:26

а как вам вот это? quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#) https://en.wikipedia.org/wiki/J_(programming_language)

be915:02:46

язык J создан тем же Айверсоном, автором APL

artemyarulin15:02:06

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

larhat15:02:03

про это есть http://urbit.org

abtv15:02:58

@alwx: единственный программист на php, которого я знаю, переписал все на Go simple_smile у меня выборка не репрезентативная просто simple_smile

abtv15:02:05

Вру, знаю второго, который периодически на си пишет.

dottedmag15:02:01

@larhat: Ух какая штука психоделическая.

artemyarulin17:02:13

э, тока начал читать!

potapenko17:02:25

сейчас по друuому запощу

potapenko17:02:53

Тут flash-разработчиков стал агитировать на счет clojure, сам в старые времена флэшером был. Вот интересный и злобный коммент про кложуру и вообщее …...

larhat17:02:37

"приятный дух элитизма", my ass %)

artemyarulin17:02:24

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

larhat17:02:35

наклейки на макбук отклеиваются

artemyarulin17:02:36

а втор сего опуса на чем пишет? паскаль?

potapenko17:02:39

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

larhat17:02:46

а с common lisp'ом ты бы выгравировал

potapenko17:02:23

> а втор сего опуса на чем пишет? паскаль? не понятно simple_smile Мое предположение ActionScript simple_smile Флэш ведь тусовка.

potapenko17:02:33

Хотя может это копипейст

potapenko17:02:35

Я с этим товарищем года три назад пересекался, он в emacs забавную среду себе организовал, эвалютил и лайвкодил. Изыскания у него по этому поводу были интересные.

potapenko17:02:18

Текст полезный по истории кложуры, если три последних обзаца не читать….

potapenko17:02:26

@artemyarulin: я тут зарылся в couchbase. Решил а ну его re-frame, буду стейт хранить в локальной базе.

potapenko17:02:05

от mongodb тоже отказываюсь

potapenko17:02:51

пишу обертку на кложуре для Couchbase Lite REST

artemyarulin18:02:31

@potapenko: Вот и я о том же - делать бизнес не интересно, мы же инженеры 😄

potapenko18:02:05

да не, тут для продукта мега полезно

artemyarulin18:02:14

а почему нафег ре-фрейм/монгу? можешь поподробней?

potapenko18:02:29

оффлайн база, загрузилось все на устройство и пользователь рад

potapenko18:02:35

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

potapenko18:02:15

база написана (для усройства) на Си, шустрая.

artemyarulin18:02:16

дак а клиенты как это юзают? есть кой-то клиент на JS?

potapenko18:02:29

полно клиентов

potapenko18:02:04

на эту базу перешел Viber

potapenko18:02:17

есть даже для хтмл

artemyarulin18:02:37

она key/value?

potapenko18:02:39

paypal тоже внедряет

potapenko18:02:15

ага, key/value, но там еще map/reduce

artemyarulin18:02:31

хм, интересно - погуглю перед сном, спасибо

potapenko18:02:51

это к react-native

artemyarulin18:02:02

>на кложуре для Couchbase Lite REST выложишь в опенсорс?

potapenko18:02:07

еще есть коннектор PouchDB

potapenko18:02:25

выложу!

potapenko18:02:56

обкатаю на текущих проектах и выложу

artemyarulin18:02:38

хм, интересно

rmuslimov18:02:33

Мы как-то пару лет назад использовали couchbase в своем проекте

rmuslimov18:02:41

печальный какой то опыт получился

rmuslimov18:02:06

в одной из версии клиент просто начал добавлять 0.1s к каждому реквесту

rmuslimov18:02:32

и много чего подобного было, в итоге мы съехали и забыли как страшный сон

rmuslimov18:02:59

плюс у couchbase какой-то агрессивный маркетинг, который недобавляет ему моего доверия simple_smile

potapenko19:02:41

задержки были именно на клиенте или сам сервер?

potapenko19:02:44

агрессивный маркетинг - это когда enterprise использовали? я пока использую community, меня как бы не могут сильно дергать маньяки маркетинга simple_smile

potapenko19:02:21

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

rmuslimov19:02:01

именно couchbase клиент добавлял 0,1 секунду

potapenko19:02:21

на запросах к базе? query?

rmuslimov19:02:29

конечно это потом пофиксили, но согласитесь неприятно ловить такие ошибки самому

rmuslimov19:02:46

у нас были memcached-like buckets

rmuslimov19:02:51

на простых запросах

potapenko19:02:51

ну очень большая штука, может за два года пофиксили

potapenko19:02:00

меня Viber впечатлил

rmuslimov19:02:16

а с внутренними views которые были тогда

rmuslimov19:02:23

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

rmuslimov19:02:33

было достаточно все плохо

rmuslimov19:02:37

и работало медленно

potapenko19:02:55

PouchDB - альтернатива на клиенте, они хранят базу в LightSQL но могут обращаться к Coucbase Sync

rmuslimov19:02:14

не, об этом ничего не знаю

potapenko19:02:50

сефчас потестировал, очень шустро, нужно погонять на большой базе

potapenko19:02:02

пару миллионов так записей

rmuslimov19:02:07

может все стало хорошо за эти два года

potapenko19:02:36

спасибо за информацию, буду иметь ввиду

potapenko19:02:54

в любом случае есть где подстелить соломки, тот же PouchDB

potapenko19:02:14

пока попытаюсь внедрить, уж очень много профитов

rmuslimov19:02:27

> агрессивный маркетинг - это когда enterprise использовали? я пока использую community, меня как бы не могут сильно дергать маньяки маркетинга : Ну когда не сообщество продвигает технологию а сейлс people

potapenko19:02:41

и почти не нужно писать application sever, и сокеты всякие можно выкинуть, синхронизируется само и channels

rmuslimov19:02:42

начинают бомбить имейлами и просить телефон

rmuslimov19:02:44

поговорить

potapenko19:02:58

а, ну это типичный американский маркетинг, да

rmuslimov19:02:17

не удивлюсь, даже если вайбер директора

rmuslimov19:02:26

связаны с директорами couchbase

rmuslimov19:02:32

обычно тут это так работает

rmuslimov19:02:03

или вообше пересекаются

potapenko19:02:04

paypal тогда тоже simple_smile

potapenko19:02:10

ну да, это так

potapenko19:02:22

рука руку моет

andre19:02:22

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

andre19:02:28

но штука прикольная, юзерфрендли достаточно, и монгу мониторит и jvm и даже из кложки можно эксепшены слать туда

rmuslimov19:02:57

это такой новый newrelic?

potapenko19:02:14

вот эти да, задолбали всех simple_smile

potapenko19:02:56

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

potapenko19:02:19

есть компании, американские, которым платишь процент, они этим террором и занимаются.

potapenko19:02:16

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

andre19:02:41

@rmuslimov: ну штука не новая вроде уже, но да для мониторинга всего и вся

rmuslimov19:02:40

тулз для девелоперов они как то иначе продаются

andre19:02:52

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

rmuslimov19:02:55

через коммьюнити в первую очередь

rmuslimov19:02:08

поэтому надо всех задолбать

rmuslimov19:02:22

чтобы на конференциях кто-то угоревший рассказал как прикрутил

rmuslimov19:02:24

датадог

rmuslimov19:02:33

к своему приложению

rmuslimov19:02:44

только так

rmuslimov19:02:28

@andre: > но зато ваши друзья вон нашли нишу, никому ничего не впаривают в топе апстор, посмотрим смогут ли заработать на этом Это Вы о ком?

andre19:02:55

это товарищи из Черногории msqrd

andre19:02:16

товарищи Евгения

andre19:02:15

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

andre19:02:55

ну верней из Белоруссии, товарищи по Черногории simple_smile

larhat19:02:34

так это ими снапчатят?

andre19:02:45

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

rmuslimov19:02:33

snapchat уже купил looksery

rmuslimov19:02:48

кажется это что-то подобное

rmuslimov19:02:54

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

andre19:02:57

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

andre19:02:34

неудачный конечно автор ролика, но показывает всю крутость технологии я считаю https://www.instagram.com/p/BBjZcKSFI6L/

potapenko20:02:03

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

potapenko20:02:59

Но и Гончар конечно крут, трудоголик страшный. Спит, работает, спит, работает simple_smile Как я simple_smile

artemyarulin20:02:01

@potapenko: А ты на себя работаешь полностью или еще где на ставке?

potapenko20:02:34

контракты. фриланс в общем. full-stack.

potapenko20:02:44

плюс свои проекты делаю

andre20:02:28

а сервис с фразами твой? крутая штука

potapenko20:02:34

ага, мой

potapenko20:02:46

пока монетизация тоже шлак

potapenko20:02:54

думаю сделаю мега-мобильное приложение

potapenko20:02:06

может пойдет, но там in-app покупки будут

artemyarulin21:02:54

https://github.com/oakmac/cuttle/issues/53#issuecomment-76121960 а я то думал это я со своим Buck build с ума схожу, ан нет - есть еще и хуже