Программирование


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
509 41 191

Clojure(Script) тред /clojure/ Аноним 15/02/18 Чтв 20:49:24 11395971
Clojurelogo.svg.png (88Кб, 1200x1200)
1200x1200
TL;DR
Читать: https://www.braveclojure.com
Решать: http://www.4clojure.com
Онлайн: https://repl.it/site/languages/clojure
Офлайн: https://leiningen.org
Зомби: http://www.parens-of-the-dead.com/
https://clojure.org/guides/getting_started
https://clojure.org/reference/documentation
https://github.com/bbatsov/clojure-style-guide

Clojurescript
https://clojurescript.org
https://github.com/bhauman/lein-figwheel
https://github.com/emezeske/lein-cljsbuild

Документация
https://clojuredocs.org/
https://clojure.org/api/cheatsheet && https://cljs.info/cheatsheet/
https://clojure.org/reference/documentation

Задачи
http://www.4clojure.com
http://clojurekoans.com
http://clojurescriptkoans.com
http://exercism.io/languages/clojure/about

Видео
https://github.com/tallesl/Rich-Hickey-fanclub#talks
https://www.youtube.com/user/ClojureTV

Комьюнити
#clojure@irc.freenode.net
http://clojurians.slack.com/
https://groups.google.com/forum/#!forum/clojure
https://clojureverse.org/
https://stackoverflow.com/questions/tagged/clojure

Блоги
Еженедельник: https://therepl.net
Все блоги: http://planet.clojure.in
Производительность: http://clojure-goes-fast.com

IDE
https://cursive-ide.com
http://lighttable.com
http://nightcoders.net
https://sekao.net/nightcode && https://sekao.net/lightmod
https://cider.readthedocs.io/en/latest

Библиотеки
https://clojars.org && https://www.clojure-toolbox.com
Web: http://www.luminusweb.net || https://github.com/weavejester/compojure
App Server: http://immutant.org || http://aleph.io
DI: https://github.com/stuartsierra/component
SQL: https://github.com/layerware/hugsql
UI (cljs): https://github.com/Day8/re-frame || https://github.com/omcljs/om
HTML: https://github.com/weavejester/hiccup
Macros: https://github.com/cgrand/macrovich
Spec: https://github.com/bhb/expound && https://github.com/jeaye/orchestra
Test: https://github.com/clojure/test.generative && https://github.com/bensu/doo (cljs)


FAQ

— СКОБКИ!!11
http://clochure.org/

— Кейворды?..
https://clojure.org/guides/faq#why_keywords

— Common Lisp же есть, нинужна!!1
Просто съеби.

— Что нужно для вкатывания?
Знать английский, не быть тупым, иметь опыт программирования.

— Хочу начать изучать программирование, clojure мне подойдет?
Лучше сперва возьми PLT Racket и читай SICP + http://htdp.org

— Обязательно знать джаву и жс?
На уровне чтения документации.

— Как без классов представлять бизнес-сущности?
Используй хэшмапы, namespaced keywords и spec. Не поддавайся искушению создавать рекорды на каждый чих. Все есть данные.

— Что по скорости?
Зависит от задачи. В среднем - медленнее скалы, быстрее рубипитонов.

— Печатаю элементы последовательности, а они не печатаются, ЧЯДНТ?
Ленивость + сайд-эффекты => используй doall или dorun.

— Итерируюсь по большой последовательности и получаю OutOfMemoryException, ЧЯДНТ?
https://clojure.org/reference/lazy#_don_t_hang_onto_your_head

— DSL - круто! Можно теперь все API делать на макросах?
The first rule of macro club is: "Don't write macros".

— Кто использует clojure в продакшне?
Walmart, Netflix, Soundcloud, Spotify, Facebook, Groupon, CircleCI, Heroku, Puppet, Red Hat, Oracle.

— Какие приложения написаны на clojure?
Walmart eReceipts - бэкенд обработки данных о покупках во всех отделениях Walmart для их мобильного приложения.
https://www.datomic.com - распределенная транзакционная база данных с языком запросов на основе datalog.
http://lighttable.com - расширяемая интерактивная IDE для clojure, python и javascript.
https://precursorapp.com - инструмент для коллективного прототипирования онлайн (рекомендую попробовать, зависимость есть).
http://circleci.com - Continuous Integration and Delivery. Бэкенд и фронтенд на clojure+clojurescript.
Аноним 15/02/18 Чтв 20:53:13 11396002
nahooy.jpg (101Кб, 500x375)
500x375
Аноним 15/02/18 Чтв 21:17:00 11396243
угорел по метапрограммированию и коммонлисп тут кажется первопроходец. А так как иных тредов с лиспом кажись нет, спрошу тут.

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

д
Аноним 15/02/18 Чтв 21:35:25 11396514
>>1139624
Что именно такого ты подразумеваешь под метапрограммированием, что тебя беспокоит ресурсопотребляемость при компиляции?
Аноним 15/02/18 Чтв 23:21:56 11398195
Как-то ты охуел всех остальных пробросить. Ну да ладно, говнякались на кложу - ловите ответочку.
Аноним 16/02/18 Птн 00:40:13 11399056
>>1139819
М? Еще в утонувшем реквестировали отдельный кложетред же - вот я и запилил. Я не оп утонувшего. Алсо: >>1139611
Аноним 16/02/18 Птн 13:04:37 11401507
Аноним 16/02/18 Птн 13:14:58 11401608
IMG201712071118[...].jpg (150Кб, 1080x1045)
1080x1045
Вкатился. Прочитал первые пять глав в brave clojure, хочу теперь запилить простенький круд. Посоветуйте либы плз для фронта и бека.
Аноним 16/02/18 Птн 19:26:22 11404289
>>1140150
В мозг ебешься? >>1139611

>>1140160
Ну а шапку-то для кого запилили, ну же?
>Библиотеки
Аноним 17/02/18 Суб 15:11:24 114081010
>>1139624
>как снизить ресурсопотребляемость при компиляции?
Крестовик чтоле сука? За пределами крестов таких проблем больше нигде вроде бы и нет.
>есть интересные проекты?
Хз, что тебе будет интересным.
Ну, например, можешь поглядеть это:
http://redlinernotes.com/docs/cl-6502.pdf и код полностью: https://github.com/kingcons/cl-6502
Тут тебе и пример использования макросов неплохой (например, как опкоды задаются), и код легковоспринимаемый, и в описании всё разжевано.
Аноним 19/02/18 Пнд 00:19:32 114177111
Аноним 19/02/18 Пнд 11:28:55 114190712
>>1141771
>4 кложи
>1 го
Что и требовалось доказать, 4 обертки над рабочим кодом.
Аноним 19/02/18 Пнд 19:35:18 114232913
>>1141907
>обертки
"Как из goвна сделать конфетку".
Аноним 24/02/18 Суб 22:28:26 114550214
Аноним 25/02/18 Вск 12:31:18 114569715
Анон, объясни плз как дела обстоят с работой на кложе? Сюдя по хх вакансий практически нет. На functional works основные вакансии только в Лондоне и Америке. Стоит ли вообще вкатываться ради работы?
Аноним 25/02/18 Вск 13:24:05 114572716
>>1145697
Ну и на какой ответ ты рассчитываешь?
Ожидаешь, что тебе покажут суперсекретный сайт clojure-rabota-mukhosransk.io, где каждый день выставляется по сотне вакансий на кложе в твоей мухосрани, и все работодатели готовы выждать неделю-месяц-год-сколько нужно, пока ты, жемчужина рынка труда, раздуплишься, освоишь язык да наконец вылезешь из своей раковины?
Аноним 25/02/18 Вск 14:44:41 114575917
>>1145697
В прошлом треде задавали похожий вопрос: >>1128571

Ну и двачую оратора выше.
Аноним 25/02/18 Вск 16:27:14 114580918
>>1145697
по версии stackoverflow за clojure платят больше всего в мире. Но вакансий почти нет, это да
Аноним 25/02/18 Вск 16:32:44 114581219
>>1145809
>по версии stackoverflow за clojure платят больше всего в мире
Слабо верится, что за кложу платят больше, чем, скажем, за сап.
Аноним 25/02/18 Вск 17:05:15 114582920
Аноним 25/02/18 Вск 18:07:08 114587521
>>1145829
Надо в оп-пик треда добавить, кхе-кхе.

Впрочем, оно и понятно: кложа за деньги == сеньор (и притом топовый) в 86% случаев.
Аноним 25/02/18 Вск 20:32:21 114594422
topusa.png (22Кб, 530x428)
530x428
>>1145829
Охлол. На самом деле, лучше этого никому не показывать. По остальным табличкам несложно догадаться, что большинство из этих очень немногочисленных кложе-везунчиков работает в США и получает средненькие деньги по их меркам.
>tfw даже пхпшники получают больше
Аноним 25/02/18 Вск 20:36:20 114594523
>>1145829
А с работой, судя по тем данным, все очень грустно. Даже с хаскелем устроиться легче.
Аноним 25/02/18 Вск 20:50:03 114595024
>>1145945
На самом деле, с оккупацией там какие-то очень сомнительные данные. По ним получается, что среди дата сцайентистов ассемблер и вижуал бейсик более популярны, чем кложа. И при этом на каждой кложе-конфе по 5 презенташек от всяких дата-стартапов - что-то тут не сходится, Ватсон.

>>1145944
Из тех же данных можно сделать вывод о том, что кложедевелоперы равномерно размазаны по всему миру и получают зарплату на международном уровне сеньоров. Вопрос интерпретации.

И да, я видел в интернетах кложе-стартапы из Азербайджана и автора кложекнижек из Индии, так что тут не все так однозначно.
Аноним 25/02/18 Вск 21:31:19 114597525
>>1145950
>равномерно размазаны
Очень сомневаюсь о применимости этих слов к группе людей количеством <300
>и получают зарплату на международном уровне сеньоров
Тогда бы это отразилось в таблицах оплаты по регионам.
Хотя можно преположить, что их отмели по малочисленности
>в интернетах кложе-стартапы из Азербайджана и автора кложекнижек из Индии
У этих-то точно не сеньорского уровня оплата.
Аноним 25/02/18 Вск 21:35:59 114597926
>>1145975
>количеством <300
Откуда ты это взял?

>Хотя можно преположить
Я под словом "размазаны" как раз это подразумевал. Тонкой пленкой.

>У этих-то точно не сеньорского уровня оплата.
Почему?
Аноним 25/02/18 Вск 22:09:39 114599127
>>1145979
>Откуда ты это взял?
По процентам прикинул от общего числа опрошенных прикинул.
>Тонкой пленкой.
Ты сейчас об энтузиастах или о трудоустройстве? Если второе, то по вакансиям хорошо видно, что пленкой там и не пахнет: один сгусток в США и немного какой-то активности в Британии.
>Почему?
>азербайджанский стартап на хипстерском языке
А ты сам как думаешь? У таких стартапов только один путь к успеху - засветиться на конференции и попасть в контору к белым людям.
>И при этом на каждой кложе-конфе по 5 презенташек от всяких дата-стартапов - что-то тут не сходится, Ватсон.
И вот тут-то как раз всё сходится.
Аноним 25/02/18 Вск 22:40:22 114599928
>>1145991
>По процентам прикинул от общего числа опрошенных прикинул.
Ну так это ~300 опрошенных, а не 300 разработчиков, ведь так?
Аноним 25/02/18 Вск 22:43:45 114600329
Упс, случайно отправил.

>>1145991
>Ты сейчас об энтузиастах или о трудоустройстве?
Я о работе. Они же, насколько я понимаю, опрос про деньги делали среди тех, кто уже работает, а не по открытым вакансиям - так? А это разные вещи.

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

>И вот тут-то как раз всё сходится.
Каким образом?
Аноним 25/02/18 Вск 23:43:15 114603230
>>1146003
> А это разные вещи.
Коррелирующие.
>Так, и как из этого следует, что у них там не сеньорская зарплата?
Кто ж им платить-то будет? В лучшем случае к себе завербуют.
>Каким образом?
Таким, что все эти стартапы-презентации за единичными исключениями идут в мусорку.
Аноним 26/02/18 Пнд 00:36:19 114605131
>>1146032
>Коррелирующие.
Да, пожалуй. Насчет степени этой корреляции мы можем только спекулировать, так что в итоге это все же вопрос интерпретации.

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

>идут в мусорку.
Обычно все-таки на дев-конференциях презентации делают в форме отчета об успешно завершенном\развиваемом проекте.

Вообще, я тебя услышал и согласен с тем, что твоя точка зрения валидна (но не единственна), надо наверное закругляться с оффтопом.
Аноним 26/02/18 Пнд 22:09:11 114662832
Аноним 28/02/18 Срд 19:51:55 114764533
Аноним 28/02/18 Срд 19:56:13 114764634
>>1145975
группе людей количеством <300

в кложурианском слаке сидят около 12к человек. в чисто русскоязычном канале over 500
Аноним 28/02/18 Срд 20:00:23 114765035
>>1146628

чтобы сделать что-то годное надо быть вынужденным страдать, видимо... в 13-14 годах я троллил es5, с тех пор ежики обкололись, но упоролись до бабеля и молодцы имо. вывод - надо сжечь мавен на компах когнитекта :)
Аноним 28/02/18 Срд 21:43:16 114770036
>>1147645
Что-то знакомое. Бля, надо покупать эфир, чому я такой слоупок((

>>1147646
Ну он тебе щас ответит, что это типа ЭНТУЗИАСТЫ, а за деньги там 300 человек из 12к работает.

>>1147650
Да нет, мавен няшка (если не писать пом вручную). У джавы в этом плане вообще наиболее единственная вменяемая инфраструктура. Просто до того, о чем говорил 2 года назад хикка и что теперь внедряют гуглогоферы, никто как-то раньше не додумался.

Хотя вот вроде бы на поверхности же все лежит, и в смежных областях (веб-апи) этим давно пользуются, и технически все средства уже есть (вопрос соглашений), но - нет, никто не додумался. Как так-то? Вот уж действительно - чтобы сделать что-то годное, надо страдать, тут не поспоришь. Ноу пейн ноу гейн, ех.
Аноним 02/03/18 Птн 14:15:07 114847737
двощ, смотри, какую вакансию я тебе принёс: https://moikrug.ru/vacancies/1000040445
с "Поездки на автомобиле бизнес класса" в бонусах обсерунькался в голос
Аноним 02/03/18 Птн 15:58:18 114851838
>>1148477
>Никакого legacy кода, приложение разрабатывается с нуля
>Функциональное программирование
>250 000 руб
>Можно удаленно

Боже, благослови Хикку!
Аноним 09/03/18 Птн 15:45:42 115223739
Аноним 10/03/18 Суб 13:22:53 115285340
>>1152237
А ты-то сам чего упускаешь?
Аноним 10/03/18 Суб 16:48:24 115299741
Аноним 10/03/18 Суб 20:49:51 115312342
>>1139597 (OP)
Зачем нужны замыкания, чо эта ваще такое?
Аноним 10/03/18 Суб 21:06:04 115312943
Аноним 10/03/18 Суб 21:38:19 115314044
>>1152237
Погуглил этот Codefather.
Лохотрон какой-то.
Аноним 11/03/18 Вск 16:08:56 115358745
>>1153140
В смысле? Почему? Тоже погуглил - ничего подозрительного не нашел, судя по всему пилят много всяких маркетинговых онлайн-игрушек в браузере.
Аноним 11/03/18 Вск 19:53:59 115384246
>>1153587
В смысле негров они набирают на галеры.
В лучшем случае.
Аноним 12/03/18 Пнд 08:14:56 115435347
Что сейчас считается более стильным (модным, молодёжным), leiningen или boot?

Так же, где найти третье издание Programming Clojure?
Аноним 12/03/18 Пнд 12:30:47 115440448
>>1139597 (OP)
Как её продать для бекенда команде, как основнойя язык для JVM?
1) Жава-обезьяны вообще не поймут.
2) Cкалисты дрочат на типы, считают их понацеей и жить не могут без всякой хуиты типа HKT.
3) Котлинфаги недалеко ушли от жабаприматов, или это и есть бывшие жабовики, которые пытаются пихать свои старые уебанские подходы.
Аноним 12/03/18 Пнд 12:39:40 115440949
Аноним 12/03/18 Пнд 13:24:18 115443150
>>1154353
> Что сейчас считается более стильным (модным, молодёжным), leiningen или boot?
clj а так - lein конечно

>Так же, где найти третье издание Programming Clojure?
В магазине, анон, в магазине.
Аноним 13/03/18 Втр 20:27:52 115522551
>>1154409
Ненужно на ненужно и ненужно погоняет!!!11 Лол, на самом деле прикольно, надо глянуть - почему бы и нет.

>>1154404
Интересный вопрос. Мне кажется, что как раз джависты из всех перечисленных подходят больше всего. Можно начать с написания тестов (генеративных) для джава-сервисов. На кложе это получается гораздо легче, быстрее и приятнее.
Аноним 16/03/18 Птн 17:09:44 115678852
Travel journal/task manager на сабже, опенсорсный. Жвм-бэкенд, десктоп на электроне, мобильный апп на реакт нейтив. Есть на что поглядеть:
https://github.com/matthiasn/meo
http://matthiasnehlsen.com/blog/2018/03/15/introducing-meo/

Этот же чувак запилил либу для визуализации information flow внутри приложений на его message-oriented распределенном фреймворке. Сам фреймворк я пока не курил, но идея мне нравится: полная интроспекция, распределенность, все в лучших традициях смолтока и лишпов. Интересно, что может получится, если на такое интроспектированное приложение натравить (на живой инстанс!) какой-нибудь машин лернинг. Типа JIT, только для бизнес-логики. Короче, интересно.
https://github.com/matthiasn/systems-toolbox/blob/master/doc/rationale.md
https://github.com/matthiasn/inspect

И напоследок:
https://github.com/cgrand/xforms/ - больше трансдьюсеров, хороших и разных.
https://github.com/HCADatalab/powderkeg - Spark as a transducer. Нет, правда.
Аноним 16/03/18 Птн 22:39:59 115698553
>>1156788

> meo
moar plz, нужно больше примеров живых продуктов (полупродуктов)
Аноним 16/03/18 Птн 23:33:18 115701554
>>1156788
> десктоп на электроне
Рак ПО нашего времени.
Кстати, хромэлектрон да ещё и с жвм в обвязке - не жирновато ли для простого журнальчика?
Аноним 17/03/18 Суб 00:19:05 115703455
>>1156985
Да на самом деле дохера всего такого на гитхабе, просто его отыскать трудно. Вот помню, что видел чувака, заопенсорсившего с работы какую-то ядреную опердень, и у них там тоже была очень классная мессадж-ориентированная архитектура (документооборот там, хуе-мое). Сразу толком посмотреть как-то не до того было, ну думаю не забуду же. Вот сейчас только вспомнил, лол. Надо взять за привычку все интересное лайкать, короче, а то как-то я к этому не привык.
Аноним 17/03/18 Суб 00:33:52 115703956
>>1157015
Ну, я так понимаю электрон он взял, чтобы мобильное приложение на десктопе запускать. Да и там интерфейс хитровыебанный судя по скриншотам. Жвм в обвязке - это сервер. Ну и судя по его блогпосту, это скорее не "простой журнальчик", а что-то типа электронной медкнижки, как у частных терапевтов, напополам с трелло. Он там все пишет: где находится, сколько спит, сколько шагов прошел, какое настроение у него было, скриншоты, закладки, задачи, вообще все. Я даже начинаю подозревать, что это какой-то ебаный киборг.
Аноним 17/03/18 Суб 00:35:11 115704157
1oy6sm.jpg (49Кб, 1024x768)
1024x768
Алсо, немного подгорел вот на этом моменте:

>I have heard the counterargument a few times that what someone did in their life was so mundane and boring that it would not be worth recording. Well, in that case, they have a much bigger problem…
Аноним 17/03/18 Суб 13:31:25 115721558
>>1157015
>> десктоп на электроне
>Рак ПО нашего времени.
два чаю этому, хипсторы со своим жс совсем стыд потеряли
Аноним 17/03/18 Суб 14:21:13 115726259
>>1157215
Написал бы на swt или не дай боже swing - точно так же бы ныли, так что все норм. Да и не запилишь ты ни на одном нативном тулките такой гуй, как у него. В итоге один хер поставишь вебвью, ЗАТО НИ ЭЛЕКТРОН!!1
Аноним 17/03/18 Суб 15:55:26 115734660
>>1157262
> не запилишь ты ни на одном нативном тулките такой гуй
QT
Аноним 17/03/18 Суб 16:58:48 115740661
Аноним 17/03/18 Суб 17:45:40 115743162
>>1157262
>Написал бы на swt или не дай боже swing - точно так же бы ныли
Разумеется. Джаве нехуй делать на десктопе и в гуй она не умеет совершенно.
Аноним 17/03/18 Суб 18:04:52 115744863
>>1157431
Чувак, выше вон уже писали. Jambi спасёт отца русского computer science.
Аноним 17/03/18 Суб 18:09:42 115745264
>>1157448
>Jambi
Какое-то максимальное ненужно, даже сайт официальный проебали.
Аноним 17/03/18 Суб 18:10:03 115745465
687474703a2f2f6[...].png (551Кб, 1197x801)
1197x801
>>1157406
Лiл, улыбнулся, спасибо.

>>1157346
>>1157431
Вы сами-то на кутях писали что-нибудь? Потому что если да, то вы должны представлять, сколько анальной боли причинят попытки (не шибко успешные, мимованга) запилить на них пикрелейтед гуй. Еще раз повторюсь, что все бы закончилось втюхиванием туда вебвьюхи.
Аноним 17/03/18 Суб 18:26:06 115746566
>>1157454
Зря лыбишься, на tk большая часть представленного реализуется проще, чем на qml и вебпараше.
Аноним 17/03/18 Суб 20:23:12 115757067
>>1157454
Я разработкой на Qt в общей сложности зарабатывал на хлеб 6 лет, и никакой боли там нет. Интерфейс со скрина сделаю легко за отзiв. Боль начинается, когда электроноговно с интерфейсом уровня /b/ жрёт 6 гигабайт RSS.
Аноним 17/03/18 Суб 20:42:34 115758068
>>1157465
В связи с этим давайте выпьем за его светлую память. Серьезно.

>>1157570
>Интерфейс со скрина сделаю легко
Расскажи, как? Кинь аналогичных референсов? Правда интересно.
Аноним 17/03/18 Суб 21:10:13 115758669
>>1157580
За то, что я скину сюда референсы с бывшей работы, меня посадят.
Правда, ничего сложного нет - для табов QTabWidget + щепоть QSS, для ввода rich-текста есть QTextEdit с сопутствующими примочками, ебалу с левого края я бы сделал через QTableView с кастомной (разумеется) моделью, список - тривиально через QListView, даже для календаря есть готовый виджет. Работы не больше, чем при реализации на жабаскрипте, зато не будет требовать для своего запуска 64Гб рамы.
Аноним 17/03/18 Суб 22:08:59 115762270
>>1157586
Зачем с работы? Скинь любые референсы реализации похожего интерфейса на кутяпках, я подобного вроде не видел.

>для календаря есть готовый виджет
Так я же как бы о том и говорю, что как только выходишь за пределы готовых виджетов, начинается еботня. Есть в кутэ готовый виджет для перетаскиваемых карточек, как в трелло? Какой лайоут у всей этой хуйни в целом будет?
Аноним 17/03/18 Суб 23:16:08 115768171
Анон, подскажи плз, какой нужен бекграунд, чтобы вкатиться на работу на кложе?
Аноним 18/03/18 Вск 00:10:19 115773072
>>1157681
Это зависит. Можно вкатываться во фронтенд, можно в бэкенд, можно в БИГДАТУ с МАШИН ЛЕРНИНГОМ на БЛОКЧЕЙНЕ. Лучше определи свои сильные стороны и цели и пляши от этого, а не от языка. Язык - это инструмент. Он под тебя должен подстраиваться, а не ты под него.
Аноним 19/03/18 Пнд 00:40:19 115864473
>>1157681

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

ну и в принципе - динамическая типизация, если ты из этого лагеря, то берешь и фигачишь
Аноним 19/03/18 Пнд 15:42:56 115893274
>>1158644
>та самая картинка с деньгами и опытом so говорит, что нужно лет over9000 опыта
Анон, я тебя поправлю немного. Та картинка как раз говорит, что при сравнительно небольшом опыте получаешь больше, чем в среднем по больнице.

>июнем, для которого кложа была первым языком
Такое вообще законно, лол? Пили кулстори.
Аноним 19/03/18 Пнд 20:15:03 115913275
>>1158932
Анон, я тебя поправлю немного. Та картинка ничего не показывает. Кложуристов было меньше одного процента от опрошенных (что меньше 300 человек), которые в среднем по больнице работают обычноработу в сша и получают обычноработные 70к. И будь это не так, мы бы имели совершенно другие таблицы.
>при сравнительно небольшом опыте получаешь больше
Никаких ЗНАЙ КЛОЖУ @ УМЕЙ МЕНЬШЕ @ ПОЛУЧАЙ БОЛЬШЕ там нет, не выдумывай.
>>1158644
> говорит, что нужно лет over9000 опыта
Это голоса твои говорят, потому что там такого и близко нет.

С кем, блядь, посадили? И это кложуристы? Говно-говно! За весь тред ни слова о программировании.
Аноним 20/03/18 Втр 00:04:37 115930876
>>1159132
>Та картинка ничего не показывает.
Лол, ты уже сколько по всей борде носишься и пытаешься это доказать? Get a life, bro.

Я смотрю на график и читаю то, что там написано 10000 respondents, а не фантазирую про 300 человек из США и прочую лабуду. Алсо, специально сейчас открыл: https://insights.stackoverflow.com/survey/2018/#work-salary-and-experience-by-language -

>>1158644
Да, анон, вообще-то ты прав, беру свои слова назад. Там 8 лет посередине, а мне почему-то запомнилось, что было что-то в районе 5-6. Так что ты все правильно написал.
Аноним 20/03/18 Втр 00:05:59 115931177
Аноним 20/03/18 Втр 00:46:05 115932778
>>1159308
>ты уже сколько по всей борде носишься и пытаешься это доказать?
Второй раз пишу. Первый - чуть выше. ИТТ же больше обсудить нечего.
А ты по целой борде с этой ссылкой носишься?
> а не фантазирую про 300 человек
Найди табличку с количеством использующих и пофантазируй сам.
>из США
В таблицы оплачиваемости языков по регионам. А теперь думай, почему кложуристы не попали ни в одну из таблиц, кроме общемировой.

И вообще, блядь, у нас тут /pr или /hr?
Аноним 20/03/18 Втр 01:05:35 115933479
Screenshot-2018[...].png (41Кб, 893x443)
893x443
>>1159327
>Второй раз пишу.
Хватит, перестань.

>ИТТ же больше обсудить нечего.
Не заходи сюда. Нажми на кнопочку "-" рядом с номером оп-поста.

>А ты по целой борде с этой ссылкой носишься?
Нет, я ее вообще у другого анона в другом треде увидел.

>Найди табличку с количеством использующих и пофантазируй сам.
Нашел: https://insights.stackoverflow.com/survey/2018/#work-salary-and-experience-by-language

>В таблицы оплачиваемости языков по регионам.
Пикрелейтед.

>почему кложуристы не попали ни в одну из таблиц, кроме общемировой.
Наверное потому что ты таблетки забыл выпить?

>И вообще, блядь, у нас тут /pr или /hr?
Вот именно. Угомонись уже.
Аноним 20/03/18 Втр 01:42:25 115934680
>>1159334
Ну ок, за 17й год были совсем другие данные.
>Не заходи сюда.
Нет, я останусь. А вот тебя попрошу съебать в мывамперезвоним-тред.
Аноним 20/03/18 Втр 14:43:50 115958181
>>1159346
>Нет, я останусь.
Хорошо, оставайся, но в следующий раз постарайся, пожалуйста, думать и гуглить перед тем, как пытаться развести глупый срач, ок? Тут вам не там все-таки.
Аноним 20/03/18 Втр 18:16:02 115968782
Аноним 20/03/18 Втр 20:12:48 115973583
>>1157586
> зато не будет требовать для своего запуска 64Гб рамы
как показывает опыт последних десятков лет - удобство (и в том числе его влияние на качество и скорость) разработки приоритетнее потребляемых ресурсов как на фронтенде так и на бекенде (в разумных границах, все-таки 64 это преувеличение)
Аноним 20/03/18 Втр 21:03:22 115975784
15122786684220.jpg (88Кб, 1280x720)
1280x720
Пишу на реакте, хочу вкатиться в клжс. Посоветуй гайдов или блогов для вката, плз.
Аноним 20/03/18 Втр 21:54:42 115978985
>>1159735
В том-то и дело, что смузихлёбы за все разумные границы вылезают. Клиент слака, чят блять, жрёт на моём ноутбуке с 4 гигами рамы 2 гига с хуем, в 5 раз больше, чем моя IDE emacs, по-моему, это пиздец.
Аноним 20/03/18 Втр 22:39:52 115981086
>>1159757
Недавно увидел охуенную штуку: http://maria.cloud/
Там прямо с самых-самых азов - не знаю, насколько тебе это подойдет, но попробовать в любом случае стоит, охуенная штука. Ну и шапку читай, ставь лейн, добавляй конфиг фигвила и хуячь туду-лист. Алсо, из фреймворков можешь еще на https://github.com/tonsky/rum посмотреть
Аноним 20/03/18 Втр 22:42:49 115981487
>>1159789
Меня тоже слегка выбешивают все эти новомодные чятики, но ты точно не пиздишь, бро? Вот сейчас открыл вкладочку со слаком, не вижу особого потребления памяти, джвач больше жрет.
Аноним 20/03/18 Втр 23:01:24 115983588
Аноним 20/03/18 Втр 23:13:13 115984189
>>1159814
Я думаю он про десктопное приложение.
Аноним 20/03/18 Втр 23:45:30 115985190
>>1159814
В браузере оно ещё терпимо, да только речь шла о десктопном клиенте с электроном внутре.
Аноним 20/03/18 Втр 23:52:36 115986191
>>1159841
>>1159851
Ну, может я чего-то не понимаю, но оно же просто открывает тот же браузер с тем же сайтиком - чему там 2 гига жрать? У меня лиса с 10 вкладками столько не жрет.
Аноним 21/03/18 Срд 01:22:15 115989192
>>1159814
Десктопный слак вроде на электроне. Худший представитель, я бы сказал. Криворукие дебилы просто наговнили там по самые помидоры. Почему виноват не электрон? Потому что vs code тоже на электроне сделана и работает несравнимо лучше, чем слака.
Аноним 21/03/18 Срд 16:10:20 116011093
>>1159891
Я и говорю, что фигня какая-то получается: электрон не жрет ну, как..., сайтик слаковский не жрет, а сайтик в электроне - 2 гига. Пиздец безблагодатность какая-то.
Аноним 21/03/18 Срд 21:31:33 116030494
>>1159810
>http://maria.cloud/
Прошёл эту хуйню, придётся теперь устанавливать кложу, чтобы погрузиться в неё с головой. Нахуй ты это сделал, я ведь только смирился с тем, что я тупой ебанат и больше юзерскриптов на жс ничего не смогу в своей жизни.
Аноним 22/03/18 Чтв 00:14:26 116042995
>>1160304
Лол. GO INTO MY WEBS! Качай какой-нибудь лайт тейбл для начала, чтобы с имаксом не ебаться.
Аноним 22/03/18 Чтв 04:32:53 116049996
Clojureyoba!7IT.png (122Кб, 1200x600)
1200x600
Аноним 22/03/18 Чтв 05:12:28 116050097
>>1160499
Кудряшек ещё добавь
Аноним 22/03/18 Чтв 14:05:19 116067398
Аноним 22/03/18 Чтв 16:18:57 116076299
26wmwr.jpg (97Кб, 890x500)
890x500
>>1160499
Лол, схоронил. Без кудряшек не православно!!
Аноним 22/03/18 Чтв 23:22:00 1161000100
>>1160673
Спасибо, анончик. Годнота.
Аноним 23/03/18 Птн 00:15:01 1161048101
>>1159132

>За весь тред ни слова о программировании.
а давайте, сегодня копаясь в стейте из лог записей со временем захотел получить аналог "grep -n" для списка, чтобы фильтровал нужное, но отдавал мне еще и "контекст" из Х элементов до и после (ну и ессно показывал пересечения контекстов одним куском)

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

алсо, анон, я свое покажу послезавтра, а пока давай попробуем это сделать красиво, если не лень :)

чтобы не промахнуться я написал на примере натуральных чисел тесты https://ideone.com/Uchszi (благодаря вам еще и генерационные, пинайте)
Аноним 23/03/18 Птн 00:22:00 1161051102
Аноним 23/03/18 Птн 16:57:23 1161343103
>>1161048
Ну так как n маленькое, можно просто идти окошечком по n×2+1 элементов и проверять средний элемент на соответствие предикату, вроде очевидно.
Аноним 23/03/18 Птн 16:57:57 1161344104
А, еще же пересечения нужны!
Аноним 24/03/18 Суб 13:25:57 1161742105
>>1161048
О, специальная олимпиадка! Что-то давно на программаче не было. Принимайте участника из соседней палаты: http://lpaste.net/532665142584803328
Как раз отличный повод опробовать series. Раньше думал, что это какой-то кусок говна из 90х, очередная библиотека ленивых последовательностей, но сейчас я не просто под впечатлением, я в ахуе. Там внутри полноценный компилятор выражений над потоками данных. Короче, к каждой функции, что обрабатывает серии, в довесок к основному коду, пердолящему танки в рантайме, добавляются метаданные (создается функция-оптимизатор), с помощью которых компилятор потом, когда будут получены все этапы конвейера от источника до назначения, генерирует охуенно эффективный код без промежуточных абстракций, который обрабатывает данные одним проходом. Пример по ссылке.
Аноним 24/03/18 Суб 13:38:28 1161748106
>>1161742
> Принимайте участника из соседней палаты: http://lpaste.net/532665142584803328
Хуя у вас там сахара. Как вы не путаетесь во всех этих <>#$^% ?

мимокрок-знаю-только-scheme
Аноним 24/03/18 Суб 14:11:27 1161782107
>>1161748
А чего в них путаться? $^ я сам же в начале определил, % - просто имя переменной, <> - метка подстановки макроса -<>>.
Начиная с 28й строки идет обессахаренный код - результат раскрытия выражения с 23й строки, все # там - uninterned символы.
Аноним 24/03/18 Суб 15:42:45 1161855108
Уже много раз задумывался попробовать кложу, но все никак не могу ответить себе на вопрос: зачем?

Сейчас моим основным инструментом является TypeScript + React. Я мог бы перейти на clojure+re-frame, но у меня все и так хорошо работает.
Тесты на JS писать удобно, псевдоиммутабельная функиональщина пишется легко, статическая типизация(+ "as any" где сильно надо) делает рефакторинг легким и безболезненным.

Ради чего мне стоило бы обмазываться скобками?
Аноним 24/03/18 Суб 15:54:00 1161861109
>>1161742

подход и сгенеренная стейт машина огонь, можешь коротко объяснить, что получилось? и еще момент про (SETF #:OUT-696 (+ 2 2)) - во первых wtf, во вторых почему не заинлайнилось?

по сабжу - выполнил тестовую функцию из примера - получил (0 1 2 3 1109 1110 1111 1112 1113 1111109), насколько я понял, оно что-то недочитывает :) еще например, если нужное в самом конце

p.s. пардон, что в тестовых примерах всегда сортированный уникальный ряд, тут я прокололся, сильно упростив тестовый набор, в жизни конечно на список нет ограничений, в результате надо было (filter f coll) c контекстом
Аноним 24/03/18 Суб 16:04:47 1161865110
>>1161855
>моим основным инструментом является TypeScript + React
в загон, животное
Аноним 24/03/18 Суб 17:40:41 1161904111
>>1161861
>можешь коротко объяснить, что получилось?
Все элементы пишутся в кольцевой список длиной N + 1 (ключевые строки 39, 70), за счет чего #:SHIFTED (72) отстает от генерируемых чисел #:NUMBERS (54) и флагов #:ITEMS (58-69, 14-17) на N элементов. Нашли подходящий элемент - отсчитываем ещё N + N, а в результирующий список добавляем #:SHIFTED (84-85), если он не nil (75, 19) и если их ещё не больше 10 (80, 25).
>про (SETF #:OUT-696 (+ 2 2)) - во первых wtf
Соответствует setf'у с 16й строки, но с подставленной переменной N.
>во вторых почему не заинлайнилось?
Заинлайнит компилятор.
>выполнил тестовую функцию из примера
Замерил time'ом? :)
>насколько я понял, оно что-то недочитывает
Не, всё правильно. Там же subseries только первые 10 элементов берёт.
>p.s. пардон, что в тестовых примерах всегда сортированный уникальный ряд
Код работает на любых данных. Разве что nil в последовательностях неправильно обрабатывает, но это легко исправимо заменой nil'а на uninterned символ.
Аноним 24/03/18 Суб 18:30:34 1161914112
>>1161855
Ради Ъ-интеректив девелопмент, ради sound семантики языка, ради нормальной архитектуры, ради иммутабельности, ради внятного асинхронного кода, ради генеративных тестов, ради других платформ, just for fun наконец. А вообще - дело твое, если у тебя возникает вопрос "зачем пробовать не перекатываться, а именно пробовать что-то новое", то может и не нужно оно тебе, зря только время перед монитором потратишь. Каждому свое.
Аноним 24/03/18 Суб 20:09:52 1161988113
>>1161861
>надо было (filter f coll) c контекстом
Как ты контексты лениво мерджишь одними мапами-фильтрами? Мне в голову только рекурсивное (lazy-seq) решение приходит.
Аноним 24/03/18 Суб 21:23:41 1162027114
>>1161904

чет да, не убрал subseries, пардон, но все равно, я имел в виду если последовательность кончается раньше (т.е. lookahead получает nil) то оно не учитывается http://lpaste.net/364017

> Замерил time'ом? :)
время офигенно хорошо, даже если я снимаю лимит, зачем он был?

Аноним 25/03/18 Вск 00:02:46 1162114115
>>1161048
в общем, всех похуй, у меня выходит вот так https://ideone.com/nggjrk

>>1161904
>Замерил time'ом? :)
с лимитом и у меня все хорошо ;) а вот если его убрать, оно будет смотреть все до конца и это довольно медленно
Аноним 25/03/18 Вск 00:08:37 1162116116
>>1161904
кстати, я совсем не в курсе, просто уточнить про ленивость - если эмулировать задержку, как у меня iterate/sleep, то оно отдает элементы лениво, как только очередное окно закрылось, или получилось в 1 проход, но энергично и будет ждать?
Аноним 25/03/18 Вск 00:32:37 1162120117
>>1161914
>ради генеративных тестов
Могут ли генеративные тесты создавать гарантированно разные значения?
Например, мне нужно написать тест для списка структур вида "[{:id generated-id ...} {:id other-generated-id ...}]" — легко ли сделать так, чтобы generated-id и other-generated-id были случайными, но никогда не совпадали?
Аноним 25/03/18 Вск 01:35:34 1162134118
Аноним 25/03/18 Вск 02:47:43 1162144119
Аноним 25/03/18 Вск 09:04:49 1162186120
>>1162144
(grep-n 1 #{0} (range 1)) должно быть (0)
нашел генерационным тестом, кстати.

ну и как писал выше по треду, на список по идее нет ограничений, так что distinct для удаления дубликации пересечений окон не годится
Аноним 25/03/18 Вск 09:21:53 1162190121
>>1162186
>(grep-n 1 #{0} (range 1)) должно быть (0)
Схуяли? По одному элементу в каждую сторону. Должен выдавать (0 1), то есть весь список. Чтобы было (0), n должен быть 0.

>distinct для удаления дубликации пересечений окон не годится
Годится, я же строки не просто так нумерую, посмотри внимательнее.
Аноним 25/03/18 Вск 10:39:11 1162204122
>>1162114
>и это довольно медленно
Да там тормозить-то нечему. Не на sbcl'е запускал что ли?
>>1162027
>то оно не учитывается http://lpaste.net/364017
А, точно. Забыл компенсировать сдвиг.
http://lpaste.net/512615483627798528
Ещё заменил nil на #:none.
>>1162116
Ленивость есть, subseries как раз для её демонстрации и был добавлялен.
http://lpaste.net/532665142584803328#line80 - в такую проверку он раскрывается.
Аноним 25/03/18 Вск 10:40:02 1162205123
>>1162190

> строки не просто так нумерую
пардон, да, клевая идея, спасибо!

>(0 1)
(range 1) это же (0). в общем, если контекста не хватает partition скипает https://ideone.com/djTYwk
я добавил хак, чтобы заработало как мне надо

в общем, это идеоматично и мне очень нравится, за исключением того, что это еще медленнее чем у меня (по моим замерам примерно в 1,5 раза, но по сравнению с CL это несущественно). я в шоке от этой вашей series

итого: теперь есть и быстрое решение и идеоматичное. анон, ты торт.
Аноним 25/03/18 Вск 10:47:38 1162209124
Аноним 25/03/18 Вск 10:56:41 1162216125
>>1162205
Ах ты, опередил слоупока.
Капча через мобильные интернеты - БОЛЬ.
>>1162209-хуй
Аноним 25/03/18 Вск 10:59:59 1162217126
>>1162204
>>и это довольно медленно
>Да там тормозить-то нечему. Не на sbcl'е запускал что ли?
к сожалению для треда, я про кложу, это у нас с другим аноном без лимитов (и если ждать прогон всего range через doall) - все плохо (на порядки)

даже больше, анон, почему вот это https://ideone.com/ijdfeX так медленно?
Аноним 25/03/18 Вск 11:20:51 1162225127
Аноним 25/03/18 Вск 12:30:19 1162250128
Аноним 25/03/18 Вск 16:44:19 1162483129
>>1162204
> там тормозить-то нечему
слушай, а оно прям на любых последовательностях так работает или только series (типа range чисел) и т.д?

анон, я упоролся и улучшил скорость. стало ужасно, императивно, для определенных случаев с контекстом меньше chunk size (32 by default) теперь в 12 раз быстрее https://ideone.com/kLp0pH и вплотную приблизилось к тупому filter на кложе. дальше копаться надо в языке, может попробовать заменить range на LongStream

но блядь эти series все равно в разы быстрее (спасибо, уже не на порядок). это пиздец :)
Аноним 25/03/18 Вск 16:53:54 1162487130
>>1162250
>IntStream
Может потому что боксинг vs примитивы?

Ну и разница в 5-6 раз для динамики - имхо некритично ¯\_(ツ)_/¯
Аноним 25/03/18 Вск 16:55:56 1162488131
>>1162483
Если хочется скорости, можешь попробовать чекнуть библиотеку specter (кстати, от того же чувака, что запилил apache storm). Но она скорее как хаскелевские линзы, больше про вложенные структуру, так что не уверен, можно ее сюда впихуть или нет.

Кстати, на трансдьюсерах было уже решение?
Аноним 25/03/18 Вск 17:17:46 1162502132
>>1162488
> specter
она хорошая, но тут вообще не при чем, у нас тупой filter тормозит

> на трансдьюсерах
применение трансдьюсера не ленивое, оно реализует коллекцию

>>1162487
>боксинг
кстати спасибо, теперь наконец-то удалось уложиться с референсным значением итераций и sbcl (100000000) в их лимит, но все же это семечки :)
Аноним 25/03/18 Вск 17:31:21 1162513133
>>1162487

кстати, ты не то процитировал. jvm норм.
расклад для 100000000 у меня локально (ноут оказывается где-то в 2 раза слабее ideone, такие дела)

- jvm тупой filter 881ms
- clojure тупой filter 8288ms

теперь grep-n
- sbcl - 800ms (WAT)
- clojure (chunked) 8836ms

Аноним 25/03/18 Вск 17:36:00 1162519134
>>1162513

пардон,
- jvm тупой filter 184ms
Аноним 25/03/18 Вск 17:57:48 1162536135
>>1162205
>(range 1) это же (0).
Что-то я тупанул, да, сори. Короче, предполагается, что n >= длины коллекции, в противном случае нужна твоя пофикшенная реализация, да.

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

>применение трансдьюсера не ленивое, оно реализует коллекцию
В смысле? Трансдьюсеры же о коллекциях ничего не знают, их можно хоть на core.async chan повесить и скармливать данные с любой нужной скоростью.

>>1162513
>кстати, ты не то процитировал. jvm норм.
В смысле? Я и имел в виду, что джава, возможно, быстрее в том числе из-за того, что ты юзаешь специализированный для примитива класс (IntStream), в то время как в кложе боксинг\анбоксинг.

>- sbcl - 800ms (WAT)
Сбцл очень часто с сишкой тягаться вполне себе может, это да.
Аноним 25/03/18 Вск 18:00:46 1162541136
Вот сейчас попробовал с трансдьюсерами + sequence - все норм, кроме filter, он начинает все считать. Бля, надо все-таки разобраться с трансдьюсерами.
Аноним 25/03/18 Вск 18:22:15 1162555137
>>1162541

я про вот такой эффект https://ideone.com/atYbCE емнип снаружи остановить consume процесс трансдьюсера нельзя, он вычитает все, единственный способ это поменять трансдьюсер и откладывать его применение. наглядно https://ideone.com/atYbCE
Аноним 25/03/18 Вск 18:27:08 1162563138
>>1162513
>- sbcl - 800ms (WAT)
Это без объявлений типов и (optimize speed (safety 0)) или с?
мимо любопытная варвара
Аноним 25/03/18 Вск 19:23:21 1162598139
>>1162555
Блин, анон, ты юзаешь transduce, он не ленивый, это как reduce. То есть ты берешь ленивый сиквенс, перегоняешь его через conj в вектор, а потом делаешь take 3 и еще раз перегоняешь результат в вектор. А надо юзать sequence, она ленивая: https://ideone.com/GyM9dU - вычисляется ровно один чанк.

Полностью аналогичная реализация будет такая: https://ideone.com/YDLVT5 (я не знаю, как там зависимости подключать; xforms - это https://github.com/cgrand/xforms/). Но тут filter вычисляет всю последовательность - я не до конца разобрался, почему. Если предикат всегда возвращает true, то вычисляется только один чанк.

Кстати, если уж говорить о ленивости, то (apply concat) в изначальной реализации тоже не ленивый и начнет считать всю последовательность.
Аноним 25/03/18 Вск 19:29:00 1162603140
Вообще, если уж рилток, то ведь скорее всего у тебя будет такая схема: есть файлы log.0, log.1, ..., тебе нужно их фильтровать и переливать например по сокету на воркеров, которые там будут считать-колдовать. То есть все-таки трансдьюсеры + core.async в этом смысле выгоднее, ведь у тебя будет чтение из нескольких лог-файлов и пул фильтровальщиков, так?
Аноним 26/03/18 Пнд 00:21:52 1162731141
>>1162563

первое
>>1161742

будет интересно, если сможешь еще затюнить, я CL только с трудом читаю
Аноним 26/03/18 Пнд 10:25:55 1162839142
>>1162731
Затюнил. На моей микроволновке время исполнения сократилось на ~75%
http://lpaste.net/7412602692305944576

Для тех, кому любопытно, как тюнится общелисп:
Время выполнения без оптимизаций - 7.100
1) Добавил (declaim (inline ?)) - сократилось до 5.080
2) Добавил optimize speed - 4.530
И получаю 5 предупреждений такого вида:
>note: forced to do GENERIC-- (cost 10)
>unable to do inline fixnum arithmetic (cost 1) because: <...>
3) Добавляю (declare (fixnum need)) - 4.350
3 предупреждения из 5 закрыты.
4) Дизассемблирую выражение, бросается в глаза, что одна лямбда не заинлайнилась (http://lpaste.net/532665142584803328 вызывается на 60й строке, #:OUT-704). Хз почему, косяк sbcl'а. С мыслью, что если передать лямбду по имени, то кодогенертрансформатор series'а не будет заталкивать её в переменную, а подставит прямо в место вызова, добавляю flet, sbcl заинлайнил (funcall #'member? X) до нескольких CMP инструкций - 2.420
5) Удаляем проверки типов в рантайме - (safety 0) - 1.800
Аноним 26/03/18 Пнд 11:12:38 1162845143
>>1162839
>2) Добавил optimize speed - 4.530
>3) Добавляю (declare (fixnum need)) - 4.350
Подозрительно маленькая разница. Перезамерил, получилось ~4.9 и ~4.3
Хуй знает, откуда эти 4.530 взялись. Наверное, опечатался при наборе 4.350, а потом записал ещё раз, но уже правильно.
Аноним 26/03/18 Пнд 18:30:41 1163061144
>>1139597 (OP)
В lein есть какое-то место, куда можно засунуть глобальные алиасы? Хочу repl :headless по lein dev запускать.
Аноним 26/03/18 Пнд 20:53:24 1163117145
>>1163061
~/.lein/profiles.clj {:user {:aliases {"dev" ["repl" ":headless"]}}}
Аноним 26/03/18 Пнд 22:45:49 1163172146
(send-off (anon >>1163117) conj (repeat 2 tea))
Аноним 26/03/18 Пнд 23:41:07 1163192147
сап 2ч, я рич, пруфов не будет
Аноним 27/03/18 Втр 04:56:59 1163283148
Аноним 27/03/18 Втр 21:40:45 1163685149
A little comparison of clojurescript and some of its competitors (extracted from slack): https://notehub.org/8hngn
Свежий минималистичный геттинг стартед для кложескрипта: https://clojurescript.org/guides/quick-start
Заебатый обзор репл-разработки: https://clojure.org/guides/repl/introduction
Дебаг через перенос локального контекста в вары: https://github.com/vvvvalvalval/scope-capture
Браузерный воркспейс с визуализацией данных, прикольная штука: http://gorilla-repl.org/index.html
РИЛТОК про репл-дривен девелопмент от бати: https://vimeo.com/223309989
Аноним 28/03/18 Срд 00:51:43 1163816150
Аноним 28/03/18 Срд 11:52:51 1163948151
Как в емаксе полностью очистить cider? ctrl + l не помогает.
Аноним 28/03/18 Срд 16:05:27 1164043152
>>1163948
Что значит "очистить cider"? Сидер - это пакет, который добавляет в имакс ide для кложи. Тебе репл нужно очистить, или что? C-c C-o удаляет последний вывод, в меню есть Clear buffer для очистки всего буфера.
Аноним 28/03/18 Срд 16:22:01 1164061153
Аноним 29/03/18 Чтв 00:05:02 1164357154
Ну чо, пацаны, D&D? Вот эта шняга написана на кложурце:
http://www.orcpub.com/
https://www.orcpub2.com/
Автор обещает скоро заопенсорсить и looking for contributors.
Аноним 30/03/18 Птн 13:42:20 1165064155
Вкатываюсь в кложу и функциональное программирование. Все выглядит очень кайфово. Понял что такое чистые функции, функции первого порядка, каррирование, композиция, трансдьюсеры. Хотел бы по-глубже разобраться в функиональщине. Посоветуй ресурсов для этого плз, анон.
только не теорию категорий
Аноним 30/03/18 Птн 16:43:25 1165197156
Аноним 30/03/18 Птн 17:24:21 1165215157
>>1165064
>функции первого порядка,
Есть first-class functions, есть higher-order functions. Ты точно все понял? :3

Вопрос не очень понятен - тебе теория нужна? Или что-то про фп в кложе, раз ты тут вопрос задаешь? Если первое - читни "введение в функциональное программирование" харрисона, например. Ну и всякую классику - tapl, dcpl, pfpl, hott...
Аноним 30/03/18 Птн 19:06:51 1165269158
1521672737671.jpg (55Кб, 600x900)
600x900
>>1165215
>tapl
>the core topics include untyped lambda-calculus, simple type system, type reconstruction, polymorphism ...etc
Не то.
>dcpl
>this book explore a set of programming language design dimensions like dynamic semantics(naming, state, data), static semantics(types, type reconstruction, polymorphism), pragmatics (compilation, gc)
Не то.
>pfpl
>this text develops a comprehensive theory of programming languages based on type systems and structural operation semantics.
Не то.
>hott
>только не теорию категорий
>homotype type theory
лол.
>harrison
>lambda calculus
>types
>ml
>details of ml
>effective ml
Эту книжку гляну, но оглавление не впечатлило.
>не понятен вопрос
Мне нужны advanced материалы по фп. Не по теории категорий, не по cs, а именно по функциональной парадигме. Ещё что нибудь есть, няш?
Аноним 30/03/18 Птн 21:01:42 1165358159
>>1165269
Анон, судя по этому посту, ты сам не очень понимаешь, что такое "фп" и что именно тебе нужно. Ты фактически пишешь: "хочу материалов по функциональному программированию, только чтоб без функционального программирования". Ну окасаки почитай, например. Пока не сформулируешь вопрос конкретно, я тебе помочь не смогу.
Аноним 30/03/18 Птн 21:17:21 1165370160
>>1165215
А книжку про ооп можешь посоветовать?
Аноним 30/03/18 Птн 21:58:37 1165403161
15216823741740.png (122Кб, 1200x600)
1200x600
>>1165370
Конечно, читай blue book. aka "smalltalk-80: the language and its implementation
Аноним 30/03/18 Птн 23:55:15 1165475162
>>1165358
Ну я просто не считаю что теория категорий как то к фп относится.
Аноним 31/03/18 Суб 06:42:30 1165547163
>>1165403
не понимаю я вааших мемов(
Аноним 31/03/18 Суб 17:18:55 1165803164
>>1165475
Ну так я тебе и не давал ничего по теории категорий - ну, разве что hott ее задевает. Еще раз прошу сформулировать твои цели и твой запрос, ну и что ты понимаешь под "фп" заодно.

Кстати, если окасаки прочитал, вспомнилась еще книжка "Pearls of Functional Algorithm Design" - мозгоебля, на любителя. Ну и я предполагаю, что стандартные sicp+htdp ты уже прочитал?

>>1165547
Ну ты просишь книжку про ооп - тебе советуют мануал по смолтоку. Логично!
Аноним 31/03/18 Суб 19:35:25 1165884165
>>1165803
>Логично!
Можно было ещё эрланг порекомендовать.
Аноним 02/04/18 Пнд 16:38:25 1166812166
Аноним 02/04/18 Пнд 17:03:57 1166818167
>>1166812
В пакете карп, в пакете. Меня вот сразу смущает как он может без мануального управления памятью (инб4: кожанные ублюдки тоже косячат), когда даже в расте иногда нужно делать грязные хаки, типа forget или drop.
Аноним 02/04/18 Пнд 17:20:47 1166829168
>>1166818
Сразу скажу, что я шибко не разбирался (гайд и введение прочитал, змейку еще не смотрел), но мне кажется, что там дофига ограничений должно получаться. По сути, там же такие правила (поправь, если где-то не прав):
1. В конце лет-блока дропаем все, что плохо лежит.
2. Возвращать реф из лет-блока нельзя.
3. Овнершип передается с аргументами.
4. Структуры дропают свой контент при дропе.
5. ???
6. ПРОФИТ!

Насколько я понимаю, нет сумтайпов, нет рид-онли рефов, нет лайфтаймов, нет полиморфизма (хотя definterface вроде есть, но в пример с ним я не врубился), любые опасные операции подразумевают копирование. Плюс я так понимаю списки\массивы у него в рантайме заделаны, а не на самом языке. Короче, надо посмотреть внимательнее.
Аноним 04/04/18 Срд 16:57:52 1167966169
Аноним 04/04/18 Срд 21:05:16 1168062170
Пропиарю https://github.com/halgari/fn-fx обертка а-ля реакт над JavaFX

Лучшее что изобрели для десктоп-приложений на Clojure и вообще, никакие электроны рядом не валялись. JavaFX быстрая, портабельная, с аппаратной растеризацией и вменяемым подмножеством CSS для управления внешним видом UI
Аноним 04/04/18 Срд 21:22:15 1168067171
>>1168062
>JavaFX быстрая
>Java
>быстрая

Srsly tho, не шутишь? Жавафх же вроде какая-то невзлетевшая хуита. К тому же она мне никак не поможет, если я хочу нативный лук-енд-фил, так?

мимо-когда-то-писал-да-недописал-враппер-для-свт
Аноним 04/04/18 Срд 21:46:25 1168082172
>>1168062
За что ж ты так пользователей не любишь? Им и так с браузерами досталось.
Аноним 04/04/18 Срд 22:09:23 1168094173
>>1168067
>Srsly tho
Не знаю как там в 2005 но на нынешнем железе работает быстро. А натив лук уже почти никому и не всрался, поскольку все привыкли к веб/материал дезинг/электрон и прочей андокументед алиен хуете
>свт
в JavaFX наконец отказались от идеи использовать натив-виджеты что и позволило сделать всё более или менее прямо и быстро ко второй версии

>>1168062
>За что ж ты так пользователей не любишь? Им и так с браузерами досталось.
В том то и дело что нынче JavaFX работает лучше любого броузер-UI
Аноним 04/04/18 Срд 22:22:08 1168103174
>>1168094
>но на нынешнем железе работает быстро.
>А натив лук уже почти никому и не всрался
Сука, как же я ненавижу таких мудаков! Все бы им скобочки дрочить себе на потеху, а на пользователей класть. НАХУЙ ИЗ ПРОФЕССИИ.
>поскольку все привыкли к веб/материал дезинг/электрон и прочей андокументед алиен хуете
Кто привыкли? Кто, блядь? 1% пользователей хромобука?
>В том то и дело что нынче JavaFX работает лучше любого броузер-UI
Нашел с чем сравнивать.
Аноним 04/04/18 Срд 22:28:48 1168107175
>>1168103
>а на пользователей класть
пользователи которым прямо жизненно необходим натив-лук (который кстати из примерно 10 натив-луков windows или linux?) скоро уже вымрут вместе с тобой старикашка

>Кто, блядь?
Например все у кого есть в кармане андроид или хотябы одно приложение на базе электрона
Аноним 04/04/18 Срд 22:43:58 1168120176
>>1168107
>который кстати из примерно 10 натив-луков windows или linux?
Каких 10ти? В щиндовсе нет выбора, а на линуксе живы только гтк/куте, которые, к счастью, научились выглядеть одинаково.
>скоро уже вымрут вместе с тобой старикашка
Не дождешься.
>Например все у кого есть в кармане андроид или хотябы одно приложение на базе электрона
Ни одного. ЧЯДНТ?
Аноним 04/04/18 Срд 22:53:54 1168123177
>>1168120
>Каких 10ти? В щиндовсе
Ну допустим не из 10 а из двух, всё равно ты уже вряд ли сможешь иметь THE native look если их два

Троллинг асайд идея была в том что упомянутый выше fn-fx это возможность делать нормальные быстрые UI в функциональном react-стиле не вылезая из кложурки и не сношаясь с win32 или электроном. Если вам прям обязательно необходима боль и кнопочки '99 стайл, пожалуйста но не надо блять за всех отвечать впрочем нас видимо тут только двое и есть
Аноним 04/04/18 Срд 23:53:49 1168157178
>>1168094
Так, смотри. Все приложения делятся на два типа: нативные и ненативные. Для нативных используется гтк, кутэ или винформс. Для ненативных - в основном веб.

Я не понимаю, какую нишу заполняет жавафх. Если мне нужно кроссплатформенное ненативное приложение, то я чтмлцссхуйпиздаговно, чтобы его можно было выставить в интернеты. Если мне нужно нативное приложение, то мне нужен и нативный лук - иначе см. пункт первый. Жавафх же - это такой типа веб, но только без веба. В итоге имеем все недостатки и первого, и второго подходов, без преимуществ и первого, и второго. Не понимат. ЧЯДНТ?
Аноним 04/04/18 Срд 23:58:34 1168161179
AiBooster.jpg (63Кб, 500x454)
500x454
>>1168123
>ты уже вряд ли сможешь иметь THE native look если их два
Настраиваемых. К тому же, ты упускаешь, что родным приложение определяется не только по виду, но и поведению, интегрируемости в среду.
>Троллинг асайд
Вось шо гэта за грязний рунглиш? Тутай тябе не у своем ковхозе, пяши як нармальны адукованы чалавек.
>делать нормальные быстрые UI
Один лишь старт жвм занимает от 10 секунд, а ведь ей ещё прогреться нужно. О какой быстроте ты говоришь?
>функциональном react-стиле не вылезая из кложурки
Вот об этом я и говорю. Срал ты и подобная тебе хипстота на результат, лишь бы модными скобочками поиграться.
>и не сношаясь с win32 или электроном
С винапи не нужно было сношаться ещё до твоего рождения.
>Если вам прям обязательно необходима боль и кнопочки '99 стайл
Ты прав, единобразие в интерфейсах - слишком скучно и вообще застой и ретроградство. Долой эту серость! Интерфейс должен быть неповторимым, современным! Покажи им всем своё творческое Я! Думай иначе!
Аноним 05/04/18 Чтв 00:05:33 1168165180
>>1168103
Ну вообще-то конкретно в этом он прав, ты какой-то слоупок или жирный. Все уже давно привыкли к мобилкам с вебом, как раз нативлук-приложения нужны 1% пользователей (мне в том числе).

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

>>1168120
>которые, к счастью, научились выглядеть одинаково.
Это пиздеж, кстати.

>>1168107
>который кстати из примерно 10 натив-луков windows или linux?
Тоже пиздеж, 3 штуки. На самом деле 2 (винформс и гтк).
Аноним 05/04/18 Чтв 00:07:00 1168166181
>>1168161
>Один лишь старт жвм занимает от 10 секунд
В голос проиграл. Ты реально какой-то поехавший, хоть и конкретно в этой дискуссии моя точка зрения практически совпадает с твоей.
Аноним 05/04/18 Чтв 00:32:32 1168184182
>>1168157
>это такой типа веб, но только без веба
а также без например сраного джаваскрипта
Аноним 05/04/18 Чтв 00:32:49 1168186183
>>1168165
>Ну вообще-то конкретно в этом он прав, ты какой-то слоупок или жирный.
>Все уже давно привыкли к мобилкам
В экосистемах которых как раз таки наоборот при проектирования интерфейсов принято следовать четким руководствам платформы.
>эндюзеры
Та вы хлопцы чи с одного ковхозу будете?
>Это пиздеж, кстати.
https://wiki.archlinux.org/index.php/Uniform_look_for_Qt_and_GTK_applications
>>1168166
Ну уж не обессудьте, не успел обновиться до последнего СЕРДЦЕВИНА Я7, дабы не мешать ребятам играться скобочкамидвигать прогресс.
Аноним 05/04/18 Чтв 00:34:06 1168187184
>>1168184
>без например сраного джаваскрипта
Просто без скрипта. Сраный и жава остаются.
Аноним 05/04/18 Чтв 00:34:22 1168188185
>>1168161
ты вот например в чём на кложуре пишешь, в intellij или в емаксе? который из них имеет нативный лук?
Аноним 05/04/18 Чтв 00:35:10 1168189186
>>1168187
джава туповатая конечно но хотя бы работает
Аноним 05/04/18 Чтв 00:38:57 1168191187
>>1168189
А джаваскрипт - не?
>>1168188
В gvim'е. Вполне себе нативненько выглядит.
Аноним 05/04/18 Чтв 01:31:27 1168209188
>>1168184
Не уловил. Что в8 какой-нибудь, что жвм - не вижу особой разницы. Жс вмы даже лучше для пользователя, например. Да и с точки зрения кложеразработчика жс по семантике чуть ближе по идее. Или что ты имел в виду?

>>1168186
Чувак, ну ты правда несешь что-то эдакое, лучше я не буду тебе отвечать, не обессудь.

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

Ну и вообще, иде (фотошоп, 3дсмакс, автокад, етк) - это такая штука, с ненативностью которой все-таки можно мириться.

Хотя я сейчас так прикинул и понял, что каждое из основных моих частоиспользуемых приложений имеет свой лукэндфил. Сука.
Аноним 05/04/18 Чтв 01:41:07 1168213189
javascript.png (164Кб, 737x758)
737x758
>>1168209
>Не уловил. Что в8 какой-нибудь, что жвм
Кложаскрипт не пытается изолировать меня от джавыскрипта полностью спасибо Рич, соответственно с ними так или иначе приходится иметь дело. А Java/JVM/экосистема всё же ощутимо более вменяемо устроены чем аналоги из мира JS
Аноним 05/04/18 Чтв 17:11:12 1168486190
Чем плох электрон? По мне так довольно няшный.
Аноним 05/04/18 Чтв 21:00:43 1168651191
>>1168213
Ну в этом плане я согласен, хотя и при работе с жс через клжс все-таки особо сильных экзистенциальных мучений не испытываю. Но все равно не вижу реальных весомых причин предпочитать жавуфх вебне или свиту, ну кроме удобства разработки.

>>1168486
Нужно больше одновременно запущенных браузеров!
Аноним 05/04/18 Чтв 23:58:09 1168823192
Вы тут совсем уже хуйню какую-то писать начали - v8-хуёсем, электрон-хуетрон.

Поясните лучше за эти ваши трансдьюсеры-хуюсеры.
Зачем это так назвается?
Почему об этой хуете ни слова нет в моей The Joy Of Clojure SE?
Нахуя плодить лишние сущности?
В чём принципиальная разница с обычной каррированной функцией?
Аноним 06/04/18 Птн 01:50:14 1168908193
rich-hickey.jpg (57Кб, 586x586)
586x586
>>1168823
>В чём принципиальная разница с обычной каррированной функцией?
Бляяя, ебать ты СПУТАННЫЙ...
Аноним 06/04/18 Птн 02:08:39 1168913194
>>1168908
Нахуй иди, сынок.
Я уже сам всё выяснил.
Как я и думал - это хуета.

The reason transducers were added to Clojure is that with the addition or core.async channels, Rich Hickey and friends found themselves reimplimenting all of the stanard collection functions to work with channels (map, filter, take, etc.). RH wondered if there wasn't a better way here, and went to work thinking about how to decomplect the logic of these various collection processing functions from the mechanics of the collection types at hand.

Лисп такой лисп, лол.
Главное, щи посложнее сделать.
Тансдьюсеры-хуюсеры, всё как у взрослых.
Аноним 06/04/18 Птн 02:27:24 1168915195
>>1168913
>Я уже сам всё выяснил.
Молодчинка :3

Только из твоего поста ясно, что ты ничего не выяснил, лол. Если таки захочешь выяснить - наверни классику, "A tutorial on the universality and expressiveness of fold" (Hutton) и https://clojure.org/reference/transducers или https://www.youtube.com/watch?v=6mTbuzafcII
tl;dr: трансдьюсеры - это комбинаторы редьюсеров.

Щи сложные делать не надо - все давно придумано, но до риалворлда доходит в лучшем случае тысячная часть этот всего.
Аноним 06/04/18 Птн 03:03:24 1168924196
>>1168915
Вот именно, что фолд.
А тут изобретают велосипеды и хуйню всякую колхозят налету, выдавая за охуенные открытия с мудрёными названиями.

>how to decomplect the logic of these various collection processing functions from the mechanics of the collection types

Ну охуеть просто.
Так они, глядишь, скоро и монады какие-нибудь изобретут.
И придётся срочно 4-е издание Programming Clojure делать.
Динамично развивающийся язык же.

Особенно забавно было наблюдать, как несколько лет везде писали, что ооп нету в кложуре потому, что это некультурно - иметь ооп в охуенно функциональном языке без фолда.
А потом - опа - и ооп наш новый лучший друг.
Хипстеры, одно слово.
Аноним 06/04/18 Птн 16:14:40 1169164197
>>1168924
Анон, извини, но ты несешь какую-то херню, совершенно не разобравшись в вопросе. Еще раз предлагаю прочитать тебе указанные выше пейпер и статью, потому что ты не понимаешь, о чем говоришь. Если после этого останутся вопросы - приходи, обсудим. Для подобных срачей можешь создать отдельный тред, если хочешь.
Аноним 06/04/18 Птн 19:50:40 1169254198
lispcycles.png (36Кб, 640x211)
640x211
>>1168924
>А тут изобретают велосипеды и хуйню всякую колхозят налету
Эта хуйня была изобретена уже в 1989 при разработке упоминавшегося ИТТ общелисповского series.
Аноним 06/04/18 Птн 20:12:23 1169263199
>>1169254
Series не имеет практически ничего общего с трансдьюсерами.
Аноним 06/04/18 Птн 20:35:10 1169271200
>>1169263
Естественно, в сериес не те же самые трансдьюсеры, но назначение то же - избавиться от создания промежуточных последовательностей.
Аноним 06/04/18 Птн 21:04:41 1169285201
>>1169271
Хотя очень возможно, что и почти те же. Нужно бы посмотреть, как оно жонглирует лямдбами, когда не удалось преобразовать в единый цикл.
Аноним 06/04/18 Птн 21:12:58 1169291202
>>1169271
Ну тогда уж давайте теперь вообще все, что хотя бы отдаленно связано с map fusion, называть трансдьюсерами)) и говорить, что эта хуйня была уже изобретена в 19xx году))0) Хотя подожди, это слабовато, можно же сказать, что любой реролл рекурсии в цикл - эт то же самое, цель же в избавлении от промежуточного мусора. Короче, давайте условимся, что трансдьюсеры были введены в промышленную разработку в 1958 году, самим батюшкой Маккарти. Ну, чтоб уж наверняка - чего мелочиться-то? /rant

Ну а если серьезно, давайте не будем хуйней страдать, а? У одного трансдьюсеры - это каррированный фолд с ооп (шта), у другого - все методы оптимизации итерации по последовательности эт примерно одно и то же. Ну блин, давайте демагогией в каком-нибудь мывамперезвоним-треде все-таки заниматься, а не здесь.
Аноним 06/04/18 Птн 21:15:40 1169292203
>>1169285
Сириес - это дсл на макросах, который переписывает функциональные трансформации в мутабельный луп. Какое тут "почти те же" может быть? У хикки же есть все ссылки на пейперы, по мотивам которых он либу пилил, - не понимаю, зачем тут что-то выдумывать, а?
Аноним 06/04/18 Птн 22:06:08 1169320204
>>1169291
Похоже ты не понял. Сам термин "трансдьюсер" можно найти в литературе за 1989.
Если бы знал, что это ТАК заденет твои религиозные чувства, то, пожалуй, не писал бы.
>>1169292
>Сириес - это дсл на макросах
Не совсем так. В сериес все трансдьюсеры - обычные функции (но с пометкой и функцией-оптимизатором в метаданных). Так вот, если все ступени конвейера определить в момент компиляции не удаётся, то никаких преобразований кода не производится: трандьюсеры честно вызываются, ебутся лямбды в рантайме, вот это вот всё. Как именно - не изучал.
Аноним 06/04/18 Птн 23:59:25 1169396205
>>1169320
>Сам термин "трансдьюсер" можно найти в литературе за 1989.
Гхм. Ну сам термин "трансдьюсер" можно вообще наверное в литературе чуть ли 19-го века найти: https://en.wikipedia.org/wiki/Transducer

>если все ступени конвейера определить в момент компиляции не удаётся, то никаких преобразований кода не производится
Хм, да? А накидай примеров, если не лень. Я только блогпост про них читал, так что тоже особо не изучал, как оно все работает.
Аноним 07/04/18 Суб 12:15:30 1169555206
Трансдьюсеры - подводим итог.

Никто так и не смог дать _внятных_ объяснений, чем это _принципиально_ отличается фолда.

Так бывает в тех случаях, когда спрашиваемый сам не понимает, и просто дрочит на чей-то авторитет.

Предложения "почитать" - не катят.
Я почитал, и итогом этих чтений стал пост >>1168924

И вообще, эта ваша кложура в целом очень напоминает известную историю про новое платье короля.
Аноним 07/04/18 Суб 16:10:40 1169659207
>>1169555
>Предложения "почитать" - не катят.
Лол, вся суть мамкиных вкатывальщиков и прочих формошлепов. Раз ты не можешь прочитать и понять одну страницу документации дай угадаю: английский еще не выучил, да?)), то тебе попросту не место в этой профессии. До свидания.

Для остальных, просто чтобы показать всю степень идиотизма этого анона, который не можешь отличить трансдьюсер от fold: фолд имеет тип (a b -> a), a, -> a; трансдьюсеры имеют тип вида (a b -> a) -> (a c -> a), в котором списки (или foldable в общем случае) вообще никак не упоминаются.

Алсо, монады в кложе были чуть ли не с самого начала (https://github.com/clojure/algo.monads), но в динамическом языке от монад самих по себе, как нетрудно догадаться, особой пользы нет - вангую, что это чучело просто крутое слово)) услышало, но разобраться в них, как и в трансдьюсерах, не осилило.
Аноним 07/04/18 Суб 16:12:10 1169660208
А, макаба же съедает квадратные скобки. Быстрофикс:
>фолд имеет тип (a b -> a), a, List<a> -> a
Аноним 07/04/18 Суб 16:15:23 1169662209
>>1169660
Лол, еще один быстрофикс - List<b>, нувыпонели.
Аноним 07/04/18 Суб 17:26:55 1169694210
>>1169659
Чувак, ты ещё раз продемонстрировал, что ты не особо далёкий паренёк.
И у тебя очевидные проблемы с пониманием обобщений, аллегорий и т.п.
Возможно, это просто в силу юного возраста.
Это также объясняет твой максимализм и то, что ты сразу начинаешь гнать в ответ на любое мнение, отличное от твоего.

Вот годная инфа (откуда и была взята цитата выше):
https://stackoverflow.com/questions/27816946/what-are-the-similarities-and-differences-between-scala-transducers-and-clojure

Примерно таких объяснений я и хотел.
Аноним 07/04/18 Суб 17:50:20 1169700211
>>1169694
Бла-бла-бла, опять обидки, вода и ничего по теме треда. Если у тебя есть менее идиотские вопросы - задавай, в противном случае - иди читай документацию, до свидания.
Аноним 07/04/18 Суб 20:31:14 1169806212
>>1169396
>Ну сам термин "трансдьюсер" можно вообще наверное в литературе чуть ли 19-го века найти
Но те трансдюсеры не про обработку последовательностей без создания промежуточных. Вообще, вполне возможно, что хикка вдохновлялся сериесами, он же, кажется, общелиспером был.
>А накидай примеров, если не лень.
Ну, самому писать мне лениво. Можешь в cltl2 посмотреть, там есть небольшие: http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html
Аноним 07/04/18 Суб 21:07:24 1169832213
>>1169806
Ну, если бы он ими вдохновлялся, то в референсах бы поставил на них ссылку, а он явно проговаривал, что вдохновлялся другим. А как раз из-за его темного общелиспового прошлого видится маловероятным, что он про сириес не в курсе. Ну, впрочем хуй знает, но все равно это не важно - трансдьюсеры вообще не про обработку последовательностей без создания промежуточных результатов, блин.

>Можешь в cltl2 посмотреть, там есть небольшие
Я имел в виду конкретно примеров, когда "никаких преобразований кода не производится".
Аноним 07/04/18 Суб 21:12:03 1169835214
А, хотя вижу, там инвариант во введении выписан, ок.
Аноним 07/04/18 Суб 21:19:46 1169838215
>>1169832
>Я имел в виду конкретно примеров, когда "никаких преобразований кода не производится".
А, ты про это. Да просто запусти любой из примеров без коллекта и оно тебе foundation-series объект вернет.
Аноним 07/04/18 Суб 21:32:22 1169848216
>>1169838
Не. Я про разворачивание в луп. В книжке пишут, что оно не разворачивает в луп, если детектит сайд-эффекты внутри.
Аноним 07/04/18 Суб 21:38:27 1169853217
>>1169848
А, это... я думал, ты хочешь посмотреть как неоптимизированная версия работает.
Аноним 07/04/18 Суб 23:36:32 1169904218
Наконец-то, нашёл исчерпывающее объяснение того, _зачем_ нужна эта хуета. И в чём таки _принципиальная_ разница с "просто фолдом" ни в чём, как я и думал.

Transducers improve efficiency, and allow you to write efficient code in a more modular way.

Compared to composing calls to the old map, filter, reduce etc. you get better performance because you don't need to build intermediate collections between each step, and repeatedly walk those collections.

Compared to reducers, or manually composing all your operations into a single expression, you get easier to use abstractions, better modularity and reuse of processing functions.


https://stackoverflow.com/questions/26317325/can-someone-explain-clojure-transducers-to-me-in-simple-terms

При этом, копая эту тему, я узнал массу интересных вещей, к кложуре отношения вообще не имеющих.

И да, речь шла не о том, как пользоваться трансдьюсерами и т.п., а о самой сути этой идеи - т.е. _зачем_, и что не так с другими вариантами. В официальной документации это не отражено вообще.

Аноним 08/04/18 Вск 00:35:24 1169910219
>>1169904
>ни в чём, как я и думал
Лол, шли третьи сутки, боец все еще считал трансдьюсеры фолдом а стулья - цементом.

>При этом, копая эту тему, я узнал массу интересных вещей
Это вообще характерная черта сабжа. А если ты вместо нытья и щитпостинга будешь задавать вопросы и читать ответы, которые тебе дают, то ты вообще охуеешь от того, сколько оказывается узнать можно (не только в этом треде, а хоть где).

>В официальной документации это не отражено вообще.
А, да, и если еще английский подучишь, блядь:

https://clojure.org/reference/transducers
Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates.

Also see the introductory blog post and this video.
Аноним 11/04/18 Срд 15:51:02 1171744220
Аноним 11/04/18 Срд 21:46:43 1171907221
>>1139597 (OP)
Можешь привести годный пример решения некоей реальной задачи на Clojure, которое было бы однозначно лучше решения той же задачи на Scala, например?
С пояснениями - почему. как и т.д.?
Аноним 11/04/18 Срд 22:41:31 1171935222
>>1171907
Не обижайся, анончик, но по-моему это какая-то хуевая постановка вопроса, не имеющая никакого смысла. Мало того, что получается один и тот же проект должен быть два раза написан, причем именно на скале и кложе, так еще и непонятно, как ты собираешься мерять, какой из них "лучше" - по количеству строчек кода, лол? Ну тогда кложа будет однозначно "лучше", лол, но это же нихуя не показатель.

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

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

А для всех задач, которые в принципе реализуемы на обоих языках, значение "лучше" зависит в первую очередь от того, какая команда будет заниматься их реализацией, имхо. Ну ладно, еще тесты и всякий дата-процессинг на кложе однозначно удобнее.
Аноним 12/04/18 Чтв 22:44:42 1172607223
>>1171907
нет но в целом разница между clojure и scala состоит в том что первая специально максимально возможно простая чтобы не занимать собой все 20 ватт TDP твоего мозга и оставить что-то на решаемую задачу кто и зачем придумал scala я не знаю, но они явно из другого биологического вида
Аноним 13/04/18 Птн 01:39:42 1172696224
>>1172607
Я полностью согласен с твоей характеристикой скалы.

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

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

И очень тяжело читать даже свой собственный, не особо сложный код, спустя несколько месяцев.
Аноним 13/04/18 Птн 09:54:53 1172808225
>>1172696
>Сложные вещи быстро становятся нечитаемыми, ибо лисп же.
Щито? Поясни за базар.

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

>И очень тяжело читать даже свой собственный, не особо сложный код, спустя несколько месяцев.
Ты точно уверен, что проблема тут в языке, на котором ты пишешь?
Аноним 13/04/18 Птн 13:47:05 1172861226
>>1172808
>косит под дурачка
Понятно.
Аноним 13/04/18 Птн 15:26:56 1172915227
srsly bro troll[...].jpg (13Кб, 289x303)
289x303
>>1172861
Зарепортил щитпостинг.
Аноним 13/04/18 Птн 20:08:04 1173111228
>>1172696
От сложности никуда не спрятаться, однако в кложуре спасибо Рич максимум усилий приложен для того чтобы уменьшить количество связей между компонентами (поскольку именно в них как правило и содержится максимальное её количество).

Например: pure функции/immutable данные (чтобы понять функцию тебе достаточно её самой плюс корректность многопоточных вычислений становится хотя бы теоретически возможной), предпочитание библиотек фреймворкам и т.п. Макросы как необходимое зло используются точно по необходимости

Всё это, насколько я могу видеть, сделано в первую очередь именно для уменьшения нагрузки на мозг (ну т.е. взяли common lisp, снизили упомянутыми выше путями нагрузку на мозг, прикрутили jvm чтобы не ебаться с библиотеками и c ffi и получили кложуру)
Аноним 13/04/18 Птн 20:34:18 1173129229
>>1171935
>кложу и на сервере, и на клиенте
не понял, на клиенте кложу? на фронте только жс же, поясни-ка
Аноним 13/04/18 Птн 21:23:29 1173157230
Аноним 14/04/18 Суб 00:56:29 1173333231
>>1173157
так и думал, что это типа тайпскрипта. На выходе всё равно жс, так что называть это кложей не совсем уместно.

Хоть кресты компилируй в жс, всё равно браузеры только жс читают на клиенте
Аноним 16/04/18 Пнд 11:05:25 1174808232
>>1173333
Ага, а на сервере у тебя только процессор, поэтому всё равно в итоге только машинный код. Хуйни не неси.
Аноним 16/04/18 Пнд 13:13:39 1174872233
>>1173333
>На выходе всё равно жс, так что называть это кложей не совсем уместно.
Наркоман? По такой логике обычную кложу следует называть "байткодом jvm" ну или машинным кодом, как анон выше справедливо заметил.
Аноним 23/04/18 Пнд 14:25:36 1178234234
>>1172808
>>>1172696
>>Сложные вещи быстро становятся нечитаемыми, ибо лисп же.
>Щито? Поясни за базар.

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

например, начинается уже когда начинаешь писать вместе map+update-in без specter (или схемы)

и хз то ли лучше прям внутри функции, с названием из бизнес логики херачить лапшу в длинных let блоках с кучей биндингов, то ли сделать фукцию с уебищным названием типа cast-field-to-x-in-relation-of, которая ну вообще ни разу не будет переиспользована.
Аноним 23/04/18 Пнд 19:19:08 1178351235
>>1178234
А лисп-то тут при чем? Как бы в любом языке для обработки сложной deeply-nested структуры придется писать код для, ээ, для обработки этой сложной deeply-nested структуры. Тут хотя бы спектер есть, да.

>которая ну вообще ни разу не будет переиспользована.
Какое отношение переиспользование имеет к разбиению кода на логические блоки? Не надо нам тут вот этого, а то щас понабежит эффективный менеджер из мывамперезвоним треда и начнет залечивать про то, что НИЗЗЯ код в отдельную функцию выносить, пока она тебе ТРИ РАЗА не понадобится (и перекреститься еще, ага), а до этого надо все в одной функции на полтора экрана писать
Аноним 23/04/18 Пнд 20:41:35 1178400236
>>1178351
>обработки сложной deeply-nested структуры

мне кажется отличительный сигнал это вообще сигнатура T -> T т.е. тот же тип с другими кишками.

например хеши: вот если забыть о спектре. у нас на каждый уровень из hashmap при сборке "обратно" после итерации будет into или пр. как с куста, но это же лишнее для понимания цели функции, машинерия. а если бы были пуристами, то и mapv бы не было, и могли бы с векторами тоже хапнуть. существование спектра по-моему уже камень в огород core

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

согласен, не очень про язык, просто наболело). пока есть план писать ns которые аля классы, где функции первым параметром принимают инстанс (привет питон). т.е. поведение все равно липнет к структурам, выходит ооп, но если не группировать так, а делать proxy или раскидывать update-map-into то в коде как будто слов много, а смысла мало.
Аноним 24/04/18 Втр 01:40:14 1178564237
>>1178400
>сигнатура T -> T т.е. тот же тип с другими кишками.
Ну как бы строго говоря в динамически-типизированном языке все функции имеют такой тип. Тут все зависит от гранулярности, с которой ты хочешь на это смотреть. Ты же не думаешь о логическом типе своих функций как о "хэшмап в хэшмап", у тебя это какая-то конкретная структура, зависящая от того, что ты внутри акцессишь (ликвид рекорд).

>у нас на каждый уровень из hashmap при сборке "обратно" после итерации будет into
Не совсем понял, при итерации чего? Хэшмапа? Это же редко бывает, и обычно хватает map-vals\map-keys. Можешь привести пример с инто, который ты имел в виду?

>это же лишнее для понимания цели функции, машинерия
Почему лишнее? Если ты используешь инто, то ты явно говоришь, что результат итерации хочешь собрать, например, в вектор. Если у тебя функция на порядок более высокого уровня, но она и не должна зависеть от деталей потока выполнения (например, ленивый итератор мы возвращаем или реализуем все в вектор). Если она от этого зависит, значит концептуально у тебя абстракция протекает, и, следовательно, эта функция на самом деле вовсе не такая "высокоуровневая", как тебе кажется. Причем "высокоуровневый" я употребляю не в смысле "хороший", а в смысле относительно операций с хэшмапами и коллекциями - и не всегда это нужно или хорошо, обычно как раз лучше думать об объектах домейна как об обычных данных.

>существование спектра по-моему уже камень в огород core
Ну хуй знает. По-моему любой практично мыслящий человек понимает, что если бы, допустим, вместо коре был бы спектер с самого начала, то точно так же сейчас бы кто-нибудь писал про другую либу Х, что существование X уже камень в огород (гипотетического спектер-)коре. Лучшее - враг хорошего. Алсо, я вот не могу сказать, что спектер однозначно предпочтительнее - для некоторых случаев он удобнее, да, но не более того.

>право, не макросить же их для семантики
Ну макросы тут как-то вообще не в тему, все эти трансформации (хоть обычные, хоть трансдьюсерами) композируются обычной композицией функций. Опять же - приведи пример, что ли. Если что, ничего плохого нет в том, чтобы думать в терминах преобразований данных.

>т.е. поведение все равно липнет к структурам, выходит ооп, но если не группировать так, а делать proxy или раскидывать update-map-into то в коде как будто слов много, а смысла мало
Честно говоря, вообще не понял, при чем тут proxy, как связана группировка кода по неймспейсам и update-map-into, и почему смысла в коде мало. По поводу группировки кода - component\integrant де-факто стандартный путь. По поводу разбиения на функции - у того же weavejester'а глянь код, например. По поводу ооп - смысл ооп в привязке состояния к функциям, а у тебя никакого состояния у функций нет (надеюсь). Алсо, никто не запрещает тебе принимать инстанс не только первым, но и вторым параметром, например (ну, если только ты не компонентный фанатик, лол).

А вообще, серьезно, если у тебя есть код, который ты можешь расшарить - вкинь, будет интересно посмотреть, какие именно места тебе не нравятся, и попробовать что-нибудь сделать.
Аноним 24/04/18 Втр 20:38:13 1179012238
Аноним 25/04/18 Срд 02:59:16 1179202239
>>1179012
А ты команду ищешь?
Аноним 03/05/18 Чтв 10:14:34 1183556240
Анон, расскажи что там сейчас у Clojure/Lein с поддержкой Java 10? В интернетах на этот счёт в основном взаимоисключающие параграфы
Аноним 03/05/18 Чтв 15:41:17 1183710241
>>1183556
Следующий же релиз будет LTS, нафига вообще о десятке беспокоиться? Считай это бета-версия.
Аноним 03/05/18 Чтв 21:05:25 1183898242
>>1183710
Я пытался какое-то время назад перевести один проект с 8 на 9, так ничего не вышло, хотел узнать как обстановка изменилась с тех пор я конечно остался таким же криворуким а так-то можно и 11 подождать
Аноним 03/05/18 Чтв 21:39:43 1183925243
>>1183898
В лейн емнип какое-то время был баг, связанный с девяткой, но вроде все уже давно починено.
Аноним 06/05/18 Вск 15:51:33 1185164244
Если и изучать Clojure, то только в спарке с Java?

Просто я начал изучать CL и он мне понравился, но он не актуален. Клоджур - это просто альтернатива JS? Или он может все тоже, что и CL. Как он чувствует себя в ML и макросах?
Аноним 06/05/18 Вск 19:40:42 1185311245
Аноним 06/05/18 Вск 19:49:04 1185317246
>>1185164
Бля. tl;dr:
>— Обязательно знать джаву и жс?
>На уровне чтения документации.

Вообще говоря, если ты изучаешь сабж, то предполагается, что ты уже умеешь программировать (то есть можешь читать\писать код на любом из мейнстримных языков). Изучать джаву не нужно, если под "изучением джавы" ты подразумеваешь спринг-хуинг и прочие хибернейты. Изучать нужно платформу. Если ты пишешь под андроид, то тебе, очевидно, придется изучить андроид сдк. Если ты пишешь под веб, то тебе, очевидно, придется изучить чтмл+цсс и веб апи. Если ты пишешь под жвм... ну, ты уловил закономерность, да?

> Как он чувствует себя в ML и макросах?
Не понял вопроса.

Макросы в кложе негигиенические, такие же как в кл, но удобнее благодаря синтаксису для автоквалификации существующих и автогенерации новых имен.

По машин лернингу смотри здесь:
https://github.com/josephmisiti/awesome-machine-learning#clojure
и здесь:
https://github.com/originrose/cortex
и здесь:
google.com/?q=clojure+machine+learning

Алсо, есть книжки по сабжу. Алсо, начать можешь с видосика: https://www.youtube.com/watch?v=eLl6_k_fZn4
Аноним 08/05/18 Втр 13:54:49 1186138247
Анон. Я пхп макака. Не хочу быть фомошлепом. Хочется каких-то перспектив.
Сейчас пробую разные области. Пока только вижу перспективу в работе с ОС, linux kernel, c programming и т.д.
Как обстоят дела в ФП, в частности с clojure? Если после пхп перекатываться в него, и пилить бэкэнд? Такое же формошлепство, только в ФП?
Я не очень хорошо представляю области применения clojure, например.
Аноним 08/05/18 Втр 14:37:57 1186155248
>>1186138
>пилить бэкэнд
>формошлепство
Гхм...

>области применения clojure
Обычно это бэкенд-сервисы, которые перемалывают данные и отдают их на фронтенд-сервер или в SPA\мобильное приложение. Если речь о clojurescript, то обычно это толстые SPA или react native приложения (http://cljsrn.org/).
Аноним 09/05/18 Срд 17:53:04 1187023249
GraphQL на кложе?
Аноним 09/05/18 Срд 18:19:27 1187053250
Аноним 20/05/18 Вск 22:34:15 1193690251
Один известный кложурист (автор lein) победил в lisp game jam: https://technomancy.us/187

Неплохой список типовых зависимостей для веб-проектов: https://dev.to/elarouss/a-beginners-journey-inside-the-clojureclojurescript-web-dev-ecosystem-1-2nm0

LambdaWerk и CircleCI (оче известные в опенсорсном кложекомьюнити конторы) хайрят:
https://functionaljobs.com/jobs/9086-software-developer-flowerpilot-m-f-at-lambdawerk-gmbh
https://functionaljobs.com/jobs/9085-senior-full-stack-software-engineer-at-circleci

Эйчар здорового человека (презенташка про то, как захантить себе уберкоманду): https://clojuresync.com/rebecca-kinsella/
Аноним 04/06/18 Пнд 10:23:34 1202436252
Котаны, вкатываюсь в сабж и после всех этих хэллоуворлдов меня настигла пиздецома. Как правильноtm и канонічно® проектировать и оранизовать код, начиная от сущностей и заканчивая файлопомойкой, тестами и прочим говном?
Может есть какие маны или гайды?
мимо переболевший ООП
Аноним 04/06/18 Пнд 13:29:00 1202536253
Молодые люди, вот душа прямо горит, прямо просит кложу, но он не типизированное гавно, чё делать?
Аноним 04/06/18 Пнд 14:41:51 1202581254
Аноним 04/06/18 Пнд 16:17:07 1202622255
Аноним 04/06/18 Пнд 17:43:30 1202679256
>>1202536
1. Используй spec.
2. Разделяй приложение на микросервисы.
3. Прекращай быть фанбоем и решай реальные задачи вместо дрочева на типы\объекты\макросы\теорию категорий\<вставить модную фичанейм здесь>.
Аноним 04/06/18 Пнд 17:48:01 1202682257
>>1202436
Почитай:
https://github.com/stuartsierra/component
https://github.com/weavejester/integrant

Файлы и тесты - в стандартном lein-темплейте же все уже разложено по полочкам. Подробнее смотри, например, здесь (создавать отдельные clj\cljs\cljc каталоги необязательно, особенно если у тебя код и так естественно делится на неймспейсы в зависимости от платформы, типа app.server, app.client, app.common):
http://www.luminusweb.net/docs#anatomy_of_a_luminus_application

Если есть конкретные вопросы - задавай, подумаем.
Аноним 04/06/18 Пнд 18:00:09 1202695258
>>1202679
><вставить модную фичанейм здесь>
clojure
Аноним 04/06/18 Пнд 19:11:32 1202763259
>>1202695
Clojure - это язык, а не фича. Скрой тред, ты здесь лишний.
Аноним 04/06/18 Пнд 20:31:06 1202837260
>>1202679
> решай реальные задачи
В следствии решения реальных задач я и понимаю что языкам нужна типизация, особенно функциональным. Типы входных и выходных данных обычно предопределены и ограничены, потому мне и хочется писать на чем-то типизированном
Аноним 04/06/18 Пнд 22:04:56 1202936261
>>1202837
>языкам нужна типизация
Не нужна.

>Типы входных и выходных данных обычно предопределены и ограничены
Для этого есть spec.

>мне и хочется писать на чем-то типизированном
Для этого есть ocaml, например.
Аноним 04/06/18 Пнд 23:07:26 1203000262
>>1202936
> Не нужна
Не мог бы ты пояснить? Я в серьёз не понимаю чего-то очевидного, видимо.

Есть у нас функция по сложению двух чисел, принимать она всегда, очевидно, будет два числа, возвращать тоже число. В чем смысл делать язык не типизированным, или хотя бы не делать какое-нибудь ебанутый ран тайм аннотейшн чек, раз уж тип данных обычно всегда предопределен?
Аноним 04/06/18 Пнд 23:45:41 1203036263
>>1203000
>ран тайм аннотейшн чек
Я что-то не припомню сходу высокоуровневых языков, в которых функция сложения двух чисел не делает никаких чеков и молча портит память при передаче каких-то странных аргументов.

Если по теме - я же говорю, для этого есть spec. Ты можешь задавать спеки любой сложности, можешь делать на них статический анализ в компайл-тайме (https://github.com/arohner/spectrum), можешь экспортировать спеки в сваггер или жсон схемы, можешь генерировать из спеков юнит-тесты или мок-данные, можешь даже автоматически выводить спеки из кода вместо того, чтобы писать их руками.

Типы - это хорошо и замечательно, и о них нужно думать, когда пишешь код, но на сегодня механизмы статической проверки типов находятся в зачаточном состоянии с точки зрения экспрессивности (если что, я говорю об ML и компании - джава\си-стайл говно вообще системами типов язык назвать не поворачивается). Кроме того, за пределами твоей программы никаких типов нет, так что это вообще что-то вроде экономии на спичках. Действительно важны интерфейсы на границах компонентов, а что внутри этих компонентов - это становится совершенно не важно, стоит хоть чуть-чуть оторвать нос от кода и подняться на уровень выше.

tl;dr: запилите в мейнстрим робастный gradual typing с завтипами, эффектами, поддержкой метапрограммирования, подключаемыми верификаторами и полной рефлексией с возможностью экспорта информации о типах в plain data - тогда и приходите.
Аноним 05/06/18 Втр 08:29:58 1203133264
Аноним 05/06/18 Втр 23:04:18 1203629265
>>1202837
Всерьез не понимаю типодрочеров. Ты сам говоришь, что типы входных и выходных данных предопределены. То есть не генерируются, а известны заранее. К чему тогда эти идиотские ограничители? Если так случается что ты не знаешь тип чего-то, спокойной проверяешь типы в репле, это же clojure.
Аноним 06/06/18 Срд 00:01:07 1203653266
>>1203629
Если у тебя стопроцентное покрытие тестами, то и без типов норм (не так удобно как с типами, но норм). Реальность же, зачастую, намного хуже.
Реальный пример: писал недавно расширение для Хрома. Понадобился parent-selector. Его в css спеке нет. Накостылил. Теперь вместо строки-селектора передается объект {selector: String, parent: Integer}. Вроде поменял везде и задеплоил (читай в продакшен). Через два дня оказалось что не везде. Был бы тогда тест - такого бы не случилось. Использовал бы typescript|flow (читай типизацию) - тоже избежал бы проблем. И это одна маленькая функция в проекте из 3-х файлов на 1к строк в сумме.
Аноним 06/06/18 Срд 00:33:16 1203667267
>>1203653
Так в том то и дело, что тесты то писать нужно. И все те преимущества, которые дает типизация решается парочкой дополнительных тестов. А забирает она намного больше.
Может я и криворукая собака, но мне намного проще и приятнее писать на кложе, чем на java.util.stream, с тремя дженериками на один метод запаянными в 2 экстендс и 4 супер. Хотя я полностью понимаю PECS принцип. Извините за джава-офтоп
Аноним 06/06/18 Срд 00:48:06 1203686268
>>1203653
Наличие типов никак не отменяет необходимости писать тесты. Более того, оно никак не сокращает количество тестов, которое нужно написать для хорошего coverage. Тесты с типами вообще никак не связаны, блядь, это совершенно ортогональные понятия. Серьезно, уже порядком подзаебала эта идиотская мантра, извините.

>Вроде поменял везде и задеплоил
Ну вообще, для такого существует https://github.com/clojure-emacs/clj-refactor.el - или на худой конец тупой греп по проекту. Изменять сигнатуру функции и потом руками искать все ее call site'ы - это просто плохая инженерная практика и твой фейл как разработчика (отсутствие тестов - туда же). Да, в этом случае статически типизированный язык стукнул бы тебя по рукам, но в виду вышеозначенных причин это не является хорошим аргументом в сраче статика-динамика (который, кстати, вообще не про отлов тривиальных фейлов, а про логические ограничения и диапазон доступных для написания программ в первую очередь).

>>1203667
В то же время, твой пост тоже не является хорошим аргументов против статики, так как система типов в джаве - это несмешная пародия, а не система типов.

А вообще, срачи статика vs динамика, как известно, очень редко бывают содержательными, так что не хотелось бы скатывать в это тред.
Аноним 06/06/18 Срд 01:43:21 1203715269
>>1203686
Я где-то написал что с типами не нужны тесты? Когда выдумываешь тезисы за собеседника, а потом их оспариваешь - это уже проблемы с головой, братиш.

Clojure, emacs. Я тебе про js пишу.
>не является хорошим аргументом
Ты сказал? Типизация бы проблему решила? Решила. Ты с этим согласен. Делают вывод что типизация полезна.
Аноним 06/06/18 Срд 02:03:16 1203722270
>>1203715
>Я где-то написал что с типами не нужны тесты?
>Если у тебя стопроцентное покрытие тестами, то и без типов норм
> => а если покрытие тестами не стопроцентное, то без типов не норм
> => покрытие тестами связано с тем, есть типы или нет
Я ровно этот поинт и прокомментировал. Читай внимательнее. "Перед тем, как заходить в этот тред, надо включать мозг. Те, кто этого не делают, будут посланы нахуй быстрее, чем они успеют сказать "не понял"

>Clojure, emacs. Я тебе про js пишу.
А что, в жс рефакторинг как-то по-другому работает? Грепать (на худой конец) по жс-исходникам Аллах запрещает? Алсо, ты в кложетреде это пишешь, поэтому я и привел пример того, какие инструменты в сабже для этого есть. Умерь свой пыл.

>Ты сказал?
Прочитай абзац целиком, я же внятно изложил факты и выразил свою позицию.

>Делают вывод что типизация полезна.
А что, кто-то с этим спорит? Когда выдумываешь тезисы за собеседника... - и далее по тексту. Формальное доказательство корректности, например, тоже полезно, но - увы! - непрактично.
Аноним 06/06/18 Срд 11:20:18 1203869271
>>1203722
=> а если покрытие тестами не стопроцентное, то типы помогает не совершить некоторые ошибки и повышают надежность кода. Сечешь? Не всегда есть возможность написать автоматический тест.

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

>Формальное доказательство корректности, например, тоже полезно, но - увы! - непрактично.
К чему здесь это? Типизация практична или нет?
Аноним 06/06/18 Срд 16:33:15 1204008272
>>1203869
>то типы помогает не совершить некоторые ошибки
...как и использование устоявшихся практик разработки, но ты это почему-то игнорируешь.

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

>Я когда что-то меняю в коде, я не хочу запускать ручками какие-то инструменты
Как будто тайпчекер ts не является инструментом и его не нужно запускать. Это пустая демагогия.

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

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

>Типизация практична или нет?
Нет какой-то одной "типизации". Системы типов а-ля Си откровенно вредны; а-ля Джава - непрактичны в большем\значительном числе случаев. Вообще, следует выбирать тот инструмент, который позволит решить данной команде поставленную перед ней задачу максимально эффективно, а не следовать всяческим религиозным догмам. Алсо, на этот вопрос я уже ответил несколькими постами выше: >>1203036
Аноним 06/06/18 Срд 17:00:20 1204027273
>>1204008
>как и
Я вижу что ты согласен с тем что типизация полезна.

>Если код можно запустить, то его можно и протестировать.
Если очень захотеть можно в космос полететь. Вопрос: какой ценой? Пример всё с тем же расширением: тестирую через puppeteer. У меня расширение добавляет пункт в контекстное меню браузера. У puppeteer, как и у многих прочих инструментов, доступа к этому меню нет. Вообще. Т.е. я просто не могу протестировать эту функциональность. Ручками могу. Но мы же про автотесты.

>Как будто тайпчекер ts не является инструментом и его не нужно запускать.
Ключевое слово было ручками. Запускается тайпчекер автоматически. Не разводи демагогию.

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

Если о чем-то можно забыть - об этом забудут. Тайпчек помогает мне не забыть и это прекрасно.

>Системы типов а-ля Си откровенно вредны; а-ля Джава - непрактичны в большем\значительном числе случаев.
Но это использование устоявшихся практик разработки, но ты это почему-то игнорируешь.
Аноним 06/06/18 Срд 17:40:33 1204050274
>>1204027
>Т.е. я просто не могу протестировать эту функциональность.
Замокать не?

> Запускается тайпчекер автоматически.
Братюнь, у меня git hook с pytest прописан, который мне автоматически при коммите тесты прогоняет. По-моему, демагог тут ты.

мимо_питоняша
Аноним 06/06/18 Срд 18:02:18 1204068275
>>1204027
>Я не путаю. Это ты отказываешься понимать проблему. С тайпчеком мне будет известно, что в других местах поломалось. Без него - нет. Не во всех случаях. Это же не серебряная пуля. А в конкретном моём примере.
>
>Если о чем-то можно забыть - об этом забудут. Тайпчек помогает мне не забыть и это прекрасно.

Забавно, что, в динамических Яп, в том же лиспе, типизация так же проверяется, только во время работы программы.
Что не иллюзорно влияет на производительность.

Профиты в итоге слабо понятны.
Мы отказались от статической проверки типов чтобы делать ее в рунтайме замедляя все в 3 раза.
Ради чего? Лаконичности кода?

Так себе в целом профит. Особенно в свете того, что большую часть типов можно выводить.
А код нужно обмазывать тоннами СПЕЦИФИКАЦИЙ и КОНТРАКТОВ.
Аноним 06/06/18 Срд 18:14:16 1204083276
>>1204068
Но, должен сказать, в лиспе есть своя магия.
Программы в большинстве случаев работают сразу.
Что странно.
Аноним 06/06/18 Срд 19:25:03 1204170277
>>1204027
>Я вижу что ты согласен с тем что типизация полезна.
Ну молодец, я об этом еще полтреда назад сказал. Пожалуйста, читай посты, на которые отвечаешь.

>Пример всё с тем же расширением: тестирую через puppeteer.
>тестирую
Ну значит цена вполне приемлема, раз тестируешь. Опять же, я не вижу смысла разводить здесь демагогию на эту тему.

>Запускается тайпчекер автоматически.
А тесты у тебя что, не автоматически запускаются, лол? А компилятор ты силой мысли запускаешь, или все-таки ручками? Бред какой-то, настрой себе билд пайплайн.

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

>Но это использование устоявшихся практик разработки, но ты это почему-то игнорируешь.
Что "это"? Что я игнорирую? Я утверждаю, что слабая типизация - говно; это очевидно любому, кто хоть немного шарит в системах типов, нет? Кроме того, я утверждаю, что checked exceptions - это фейл (что тоже common knowledge), что система типов джавы - unsound, в чем тоже нетрудно убедиться самому. Сдается мне, что ты сам плохо разбираешься в системах типов, отсюда и идут все религиозные стереотипы. Ты писал что-нибудь (пусть уровня петпроджектов) на расте, х-ле, окамле или любом другом языке с нормальной системой типов?

Впрочем, можешь не отвечать, поскольку - повторюсь еще раз - срачи статика vs динамика очень редко бывают содержательными и каждый раз повторяются буквально слово в слово. На >>1203036-пост ты ничего не ответил, во всем остальном мы идем на третий круг обсуждения, да к тому же эта дискуссия итт вообще оффтоп, так что предлагаю прекратить.

https://youtu.be/B5H6AdKUthg?t=1m55s
Аноним 06/06/18 Срд 19:34:13 1204175278
>>1204068
Common Lisp по производительности находится на уровне С++ (sbcl в некоторых синтетических тестах даже обгоняет си). Тот же js, внезапно, тоже бегает примерно на уровне нативного кода. Джава работает может работать быстро отнюдь не благодаря своей кривой системе типов. А статически типизированный х-ль зачастую всасывает по производительности питону. Иными словами - это опять какие-то религиозные стереотипы, имеющие мало общего с реальностью. Статическое указание типов позволяет проводить некоторые оптимизации, которые в противном случае невозможны; из этого никак не следует, что "динамические языки медленные" или "статические языки быстрые".

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

Наконец,
>А код нужно обмазывать тоннами СПЕЦИФИКАЦИЙ и КОНТРАКТОВ.
Наличие спецификаций и контрактов совершенно ортогонально вопросу статической\динамической типизации.
Аноним 06/06/18 Срд 20:17:39 1204208279
>>1204170
>Ну значит цена вполне приемлема
Ты о чём вообще? Братан, завязывай с тем что употребляешь. Я не смог протестировать часть приложения. Не смог. Я тебе привел пример где тестирование невозможно за приемлемую для меня цену.

>А тесты у тебя что, не автоматически запускаются, лол? А компилятор ты силой мысли запускаешь, или все-таки ручками? Бред какой-то, настрой себе билд пайплайн.
Компилятор запускает IDE после каждого изменения. Тесты запускаются для билда или ручками, конечно. Ты их запускаешь после каждого изменения в редакторе что ли?

>в общем случае неверно
Я тебе про конкретный случай уже 3 поста. Специально обозначил, что для всех случаев не сработает, а ты мне это пишешь. Братиш, это ты завязывай с веществами.

>религиозные стереотипы
Какие? Система типов в любом ЯП помогает миллионам программистов. С тем, что типизация полезна, ты согласился. Я отвечал изначально на >>1203629 и, получается, ответил.
Аноним 06/06/18 Срд 20:19:58 1204210280
>>1204050
Няша-питоняша, тайпчекер запускается при каждом изменении в исходниках. Почувствуйте разницу.
Аноним 06/06/18 Срд 21:54:59 1204258281
>>1204208
>Я не смог протестировать
>тестирую через puppeteer
>я просто не могу
>Ручками могу
Определись уже.

>Ты их запускаешь после каждого изменения в редакторе что ли?
Эм? Юнит-тесты у всех прогоняются после изменения файла на диске, с разморозкой.

>Я тебе про конкретный случай уже 3 поста.
Твою ошибку в том конкретном случае как раз 3 поста назад и разобрали, что тут еще обсуждать?

>Какие?
Гхм, см. >>1204008

>Система типов в любом ЯП помогает миллионам
Нет, в прошлом посте подробно изложил этот момент. Лол, тебе бы пропагандоном работать, с такими-то речевыми оборотами.

Вопрос про твой личный опыт ты проигнорировал, >>1203036-пост ты проигнорировал; из этого я делаю вывод, что кое-кому не мешало бы подучить матчасть, прежде чем ввязываться в такие дискуссии. Можешь читнуть митовскую "Types and Programming Languages", например.
Аноним 06/06/18 Срд 22:10:04 1204264282
>>1203000
я анон с этого вопроса, до сейчас был рид онли.

Так в итоге мы пришли к тому что рантайп чек типов нормальная тема, но нет нормальной реализации?

Ну ещё что есть куча других практик добавляющие уверенности что код работает как надо, но сейчас не об этом
Аноним 06/06/18 Срд 22:23:37 1204282283
>>1204175
>Common Lisp по производительности находится на уровне С++ (sbcl в некоторых синтетических тестах даже обгоняет си). Тот же js, внезапно, тоже бегает примерно на уровне нативного кода.
Это такой троллинг?

Это даже не смешно.

Неужели gzip реализованный на js будет на уровне сишнго эталона?


>Наличие спецификаций и контрактов совершенно ортогонально вопросу статической\динамической типизации.
Ну это вообще пушка.
Развитая система типов == спецификация+контракты.
Аноним 06/06/18 Срд 23:35:22 1204347284
>>1204258
>Определись уже.
Ты тупой? Извини за оскорбление, но я не понимаю что с тобой. Я не могу всё протестировать. Часть функционала осталась не протестирована. Об этом я и написал.

>Юнит-тесты
Хуйня без задач в большинстве случаев, если ты конечно не библиотечку пишешь. Интеграционные и функциональные тесты я так не буду запускать.

>что тут еще обсуждать?
Твою тупизну? Серьезно. Я тебе сказал конкретный случай, а ты мне про "ну в общем там...". А там не в общем. Там тайпчек помог бы.

К чему ты приплетаешь своё оценочное мнение о различиях в системах типов к вопросу о полезности системы типов (любой). Про типы не типы можешь не писать - мне всё равно что тебе там нравится или нет. Не уводи дискуссию в сторону.
Аноним 07/06/18 Чтв 00:49:33 1204368285
>>1204068
>Особенно в свете того, что большую часть типов можно выводить.
С чем, кстати, sbcl неплохо справляется.
мимо-пробегал
Аноним 07/06/18 Чтв 12:43:43 1204576286
1528364629023.png (381Кб, 1440x2560)
1440x2560
Аноним 07/06/18 Чтв 14:11:16 1204665287
>>1204576
Кидать скриншот вместо ссылки - это какой-то новый уровень идиотизма?
Аноним 07/06/18 Чтв 14:52:20 1204705288
Аноним 07/06/18 Чтв 14:54:14 1204710289
>>1204705
тем более на скриншотике есть ссылочка, можешь и сам ручками напечатать ох вейт, мы же не в го треде
Аноним 07/06/18 Чтв 15:36:52 1204746290
photo-179592.jpg (100Кб, 1024x885)
1024x885
Аноним 07/06/18 Чтв 20:13:46 1204987291
>>1204282
>Это такой троллинг?
Лол, ну разве что самую малость. Смотри, например: www.iaeng.org/IJCS/issues_v32/issue_4/IJCS_32_4_19.pdf

>Неужели gzip реализованный на js будет на уровне сишнго эталона?
js - это garbage-collected язык с ограниченными возможностями по байтоебству, так что вопрос мне видится несколько наивным.

>Развитая система типов == спецификация+контракты.
Контракты - это, грубо говоря, особая форма ассертов. Они проверяются в рантайме. Погугли. Спецификация - это вообще широкий термин, но обычно под этим подразумевается описание поведения программы на каком-то внешнем языке по отношению к тому, на котором она реализована.

>>1204347
Продемонстрировав незнание матчасти, пациент перешел к оскорблениям. Ожидаемо, но тут тебе не /b; разговор окончен.
Аноним 07/06/18 Чтв 20:16:06 1204988292
>>1204576
Как эксперимент и как личный проект ее авторов - успешная штука. Как воспомогательный инструмент - имеет ограниченное применение. Как дефолтный способ писать код - имхо, непрактично.
Аноним 07/06/18 Чтв 20:40:10 1205007293
>>1204987
>js - это garbage-collected язык с ограниченными возможностями по байтоебству, так что вопрос мне видится несколько наивным.
Товарищ Фабрис Беллард с тобой не согласится.
Аноним 07/06/18 Чтв 21:16:25 1205028294
>>1203036
>Я что-то не припомню сходу высокоуровневых языков, в которых функция сложения двух чисел не делает никаких чеков и молча портит память при передаче каких-то странных аргументов.

пардон за оффтоп, но есть такой ;)

https://www.programmingsimplified.com/c-program-add-two-numbers-using-pointers

ввел буквы - молча получил хуевое число
Аноним 07/06/18 Чтв 21:19:19 1205029295
>>1205028
или против этого и было про "высокоуровневый"?
Аноним 07/06/18 Чтв 21:26:53 1205034296
>>1203036
>джава\си-стайл говно вообще системами типов язык назвать не поворачивается

чувак, я на твоей стороне, за динамику, из статики только боролся с scalac, разверни мысль для аргументации в спорах
Аноним 07/06/18 Чтв 21:39:07 1205043297
>>1203686
>потом руками искать все ее call site'ы - это просто плохая инженерная практика и твой фейл как разработчика

кстати наболело, да.
1) grep/ack/ag считается руками?
2) поделись опытом, может какие магии (кроме тестов ессно) найдут случаи когда fn передана параметром/из нее сделан partial/используется внутри lazy-seq?
Аноним 07/06/18 Чтв 21:45:47 1205047298
>>1204008
>детонационную семантику
денотационную же?
анон не уходи, тред начинает образовывать)
Аноним 07/06/18 Чтв 23:34:56 1205138299
>>1205007
Лол, touché. Впрочем, как известно и из буханки можно сделать троллейбус - вот только зачем?
Аноним 08/06/18 Птн 00:22:30 1205178300
>>1204987
>js - это garbage-collected язык с ограниченными возможностями по байтоебству, так что вопрос мне видится несколько наивным.
C# это то-же ГАРАЖ КОЛЛЕКТЕД с ОГРАНИЧЕНИЯМИ, но на нем гзип будет по скорость почти равен сишной версии.

>Продемонстрировав незнание матчасти
У тебя самого познания фрагментированные и весьма теоретического плана.
А тот анон вроде как побольше шарит.
Аноним 08/06/18 Птн 09:02:06 1205249301
>>1205178
Кажется, настало время перейти от слов к реальным цифрам.
Аноним 08/06/18 Птн 09:35:55 1205253302
https://reagent-project.github.io

Кто-нибудь пробовал реагент? Насколько он живой и поддерживаемый? А так же во что можно упереться пользуясь им.
Хочу попрактиковаться в разработке простеньких рест приложений с самостоятельным беком, фронтом, с контейнерами.
Аноним 08/06/18 Птн 12:59:10 1205408303
Аноним 08/06/18 Птн 16:47:14 1205601304
>>1205408
Бля, ну все, интерпрайс и сюда добрался, куда теперь-то перекатываться?

А если серьезно, интересная вакансия. Опыт разработки от года, то есть фактически джунов считай берут.

Алсо,
>Front-end – Clojurescript, Rum
Уж не Tonsky ли в сбере вротенд тимлидит?

Алсо,
>RDF/EAVT моделирование данных
Они походу datomic используют? Прикольно.
Аноним 08/06/18 Птн 18:22:36 1205735305
>>1205601
какой джун начнет с бухты барахкты писать сразу на кложуре?
Аноним 08/06/18 Птн 19:31:53 1205847306
Аноним 09/06/18 Суб 00:00:17 1206048307
>>1205029
>portable assembler
>высокоуровневый
Ага.

>>1205034
А что разворачивать-то? Си - слаботипизированный; джава - unsound, без вывода типов, не может в expression problem и просто неудобная; в го параметрического полиморфизма нет, и так далее. Я не знаю, если человек живет в танке, ты хуй ему что объяснишь, а если нет - так он и сам в курсе, как мне кажется.

>>1205043
1) Ну, я склоняюсь к тому, что нет, не считается. Юникс-тулзы - это просто, дубово и всегда работает. Но тут мне вполне могут возразить. Вот например, если у тебя в файле есть namespaced ::keywords, и ты его разбиваешь на несколько неймспейсов, то ::keywords, очевидно, теперь будут указывать на разные неймспейсы - это может быть то, что тебе надо, а может и не быть. Не, греп в этом случае конечно тоже поможет, но только если ты не забудешь прогрепать новосозданные неймспейсы по "::". Когнитекты, кстати, вроде вообще не используют :: и всегда пишут полные неймспейсы в спеках. Алсо, имхо довольно разумным будет держать иерархию бизнес-сущностей со спеками в собственной ветви, отдельно от обрабатывающего ее кода. То есть app.data.user, например, для спеков user; затем в условном app.controller.user делаешь require [app.data.user :as user] и пишешь ::user/name для всех аттрибутов юзера. Так можно будет рефакторить app.controller.user как душа пожелает не затрагивая иерархию бизнес сущностей и не ломая интерфейс (контракты данных - это интерфейс). Алсо, прежде чем ооп-петухи начнут орать "МОДЕЛИ ПЕРЕИЗОБРЕЛИ АХАХА" - нет, это не модели, это декларация данных. Модели - толстые, декларации - пустые, в них нет логики вообще.

>>1205043
2) Ну тебе по сути нужно искать все call site'ы и фильтровать их в зависимости от лексического контекста, так ведь? В clj-refactor только обычный поиск всех вызовов есть, но можно попробовать приспособить для этой цели https://github.com/jonase/kibit - он как раз ищет паттерны в коде через core.logic. Или ты что-то другое имел в виду?

>>1205047
>денотационную же?
Да, конечно. Извиняюсь за опечатку. Детонационная, лол. Какую-нибудь шутку про НЕБОМБИТ добавить по вкусу.
Аноним 09/06/18 Суб 00:01:44 1206051308
>>1205253
Используй сразу re-frame - это более полный фреймворк поверх реагента. Очень живой, очень поддерживаемый.
Аноним 09/06/18 Суб 16:54:37 1206401309
Аноним 09/06/18 Суб 18:51:42 1206550310
>>1206401
>Java 10
Под "выводом типов" понимают decidability системы типов, а не синтаксические хаки, от которых никому ни тепло, ни холодно.

>>1206401
>http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5676&rep=rep1&type=pdf
На всякий случай напомню, что сегодня под expression problem понимается возможность расширения чужих классов на новый интерфейс. В джаве нет аналога тайпклассов, поэтому она не может в expression problem. По ссылке показаны несколько хаков, через которые можно эмулировать нужную функциональность для своих классов. Без лишних пояснений должно быть очевидно, что на отсутствие в языке аналога тайпклассов эти хаки никак не влияют.
Аноним 09/06/18 Суб 19:13:51 1206578311
>>1206550
>тайпклассов
То есть Comparable<T> не тайпклас?
Аноним 09/06/18 Суб 19:44:12 1206602312
>>1206550
>поэтому она не может в expression problem
Мамкин кложурист срывает покровы, лол.
Аноним 09/06/18 Суб 19:50:26 1206608313
Simon-Peyton-Jo[...].jpg (74Кб, 800x1187)
800x1187
>>1206550
>кложурист уличает жабу в отсутствии тайпклассов

Мультиметодам уже завезли диспатч по типу возвращаемого значения?
Аноним 09/06/18 Суб 20:36:08 1206639314
spjJun06.8rot.jpg (1707Кб, 2136x3216)
2136x3216
>>1206578
Вот здесь есть объяснения как раз с твоим примером:
https://stackoverflow.com/q/6948166
https://stackoverflow.com/a/8123973

>>1206602
А еще 2+2=4. Достаточно сорвал или продолжать?

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

Диспатч мультиметодов основан на произвольном предикате от аргументов, так что да, гипотетически им завезли диспатч по типу возвращаемого значения с момента их появления. Ты, наверное, хотел спросить то же про протоколы - тогда бы твой сарказм был более удачен. Впрочем, всерьез говорить о "диспатче по типу" в динамически типизированном языке мне в любом случае кажется немного глупым. Сохранил пик, лей еще.
Аноним 09/06/18 Суб 21:39:55 1206669315
>>1206550
Ну естественно, можно взять формулировку Вадлера и смело заявлять, что решения нет ни у кого кроме полутора инвалидов
Ты из какой слоновой башни такой? Людям нужны работающие инструменты, удобные и решающие проблему здесь и сейчас.


> Без лишних пояснений должно быть очевидно, что на отсутствие в языке аналога тайпклассов эти хаки никак не влияют.
Тавтология какая-то.
Аноним 09/06/18 Суб 22:20:01 1206699316
>>1206669
>что решения нет ни у кого
Кложа, х-ль, раст, свифт, скала (с оговорками)... продолжать?

>Людям нужны работающие инструменты, удобные и решающие проблему здесь и сейчас.
Согласен. В предыдущем параграфе я некоторые из них перечислил.

>Тавтология какая-то.
Ну я же написал, что это "должно быть очевидно". Раз ты со мной согласен, то предлагаю эту тему закрыть.
Аноним 09/06/18 Суб 22:43:25 1206721317
>>1206699
И тут ты демонстрируешь решение extension problem в твоей формулировке (ссылки достаточно) на раст/свифте по выбору.

До тех пор считаем тебя демагогом.
Аноним 09/06/18 Суб 22:49:11 1206730318
forman.jpg (61Кб, 720x951)
720x951
Аноним 09/06/18 Суб 23:27:06 1206770319
>>1206730
На всякий случай напомню, что сегодня под expression problem понимается возможность расширения чужих классов на новый интерфейс.
Аноним 09/06/18 Суб 23:38:46 1206783320
>>1206770
Анон, если ты не умеешь читать документацию, то тебе нечего делать в этом треде. Переводить и разжевывать мануалы тут тебе никто не будет если только это не мануалы по сабжу, так что еще раз предлагаю закончить этот разговор.
Аноним 09/06/18 Суб 23:41:21 1206785321
>>1206783
Даже при внимательнейшем треде он не сможет найти в ржавой документации примера создания orphan instance. А значит,
>возможность расширения чужих классов на новый интерфейс
для него останется недоступной.
И нет, newtype и аналоги — не то, что он хочет.
Аноним 09/06/18 Суб 23:41:52 1206786322
>>1206785
>Даже при внимательнейшем прочтении
Аноним 10/06/18 Вск 00:54:13 1206823323
>>1206785
А ты точно не семен? Расширение чужих классов на новый интерфейс не предполагает создание orphan instance, Капитан Очевидность на связи.

Более того, в свифте и такой трюк, если я не ошибаюсь, прокатит, так что строго говоря твое замечание в любом случае невалидно.
Аноним 10/06/18 Вск 04:02:16 1206884324
>>1205249
>Кажется, настало время перейти от слов к реальным цифрам.
Я могу предоставить наивную реализацию на шарпе.
Но сомневаюсь что мой оппонент соизволит повторить ее на JS и той-же кложе.
Аноним 11/06/18 Пнд 22:36:08 1208016325
Датомик в облаке выкатили (aws lambda, только на датомике и кложе):
http://blog.datomic.com/2018/06/datomic-ions.html
https://docs.datomic.com/cloud/ions/ions-tutorial.html

Свежий bidirectional router с прицелом на то, чтобы стать полноценным веб-стаком, от горячих финских ребят:
https://metosin.github.io/reitit/
https://github.com/metosin/reitit
https://github.com/metosin/muuntaja

Описание тут:
https://www.metosin.fi/blog/reitit/
https://www.metosin.fi/blog/reitit-ring/
Аноним 14/06/18 Чтв 20:21:58 1209953326
>>1208016
Follow-up про датомик:
Подкаст Хикки про ions: http://blog.cognitect.com/cognicast/142
Бесплатная опенсорсная реализация части датомика: https://github.com/replikativ/datahike

Плюс несколько сайтов с документацией:
https://cljdoc.xyz/ -- вот этот новый, зацените - годнота
https://www.conj.io/
https://crossclj.info/

Линтер для clojure (jvm): https://github.com/jonase/eastwood
Статический анализатор чистоты функций: https://github.com/whilo/beichte
Аноним 14/06/18 Чтв 23:16:22 1210075327
Аноним 24/06/18 Вск 13:13:31 1216264328
Анон, наткнулся сейчас на такую заметку: "Clojure is for type B personalities" https://gist.github.com/oakes/c82cd08821ce444be6bf

Зацепило, если честно. Конечно, мир не делится на черное и белое, но меня почему-то всегда больше тянуло к Clojure и подобным ей языкам, где можно делать "quick, spontaneous changes with little pre-planning".

А ты что думаешь на сей счет, анон?
Аноним 24/06/18 Вск 16:28:22 1216424329
>>1216264
>type /b personalities
Лол, ну на самом деле кое-какой смысл в этом есть. Кложа действительно отлично подходит для bottom-up и быстрого выката mvp. И многих джавистов, например, кложура привлекает именно тем, что основная ее философия - это делать рабочий, полезный код наиболее простым способом (libraries instead of frameworks и вот это все). Да и среди кложуристов с тоннами звезд на гитхабе много сторонников "хуяк-хуяк и в продакшн" (тот же tonsky приходит на ум) - в том смысле, что они не дрочат на абстрактные фабрики синглтонов и монадные трансформеры, а 1) видят задачу 2) решают задачу наиболее эффективным доступным способом.

С другой стороны, я бы себя отнес скорее к type a, например. Параграф culture shock - жиза. И да, мне тоже бомбит от кодстайла Хикки. Тем не менее, сабж - тащем-то один из моих любимых языков, например.

Короче, все эти "X is for Y" - это всегда овергенерализация, и соотношение исключений к подтверждающим ее примерам - скорее что-то в районе 40\60, чем нихуя\дохуя.
Аноним 24/06/18 Вск 18:00:43 1216509330
>>1216424
>гитхабе много сторонников "хуяк-хуяк и в продакшн"
Так тот же руби еще больше подходит для хуяк-хуяк и в продакшн
Аноним 24/06/18 Вск 18:55:11 1216573331
Пиздуйте в /s/.
Аноним 24/06/18 Вск 18:55:37 1216576332
Аноним 24/06/18 Вск 21:33:46 1216690333
>>1216424
Короче, все эти "X is for Y" - это всегда овергенерализация, и соотношение исключений к подтверждающим ее примерам - скорее что-то в районе 40\60, чем нихуя\дохуя.
Анон, ты выражаешь мои мысли.

>>1216576
А после этой хуйни я точно type /b personality.
Аноним 25/06/18 Пнд 10:27:14 1217058334
sQxELt9.jpg (515Кб, 1920x816)
1920x816
>>1216424
Кто-то сказал "Евангелион"? Потому что я думаю, я слышал, как кто-то сказал "Евангелион".
Аноним 26/06/18 Втр 20:38:43 1217843335
Тэк, что тут у нас?

Кложеская либа для умножения матриц в 40 с чем-то раз быстрее аналогичной джавной:
https://dragan.rocks/articles/18/Neanderthal-vs-ND4J-vol1
https://www.dubs.tech/blog/benchmarking-nd4j-and-neanderthal/ чувак ее пофиксил, теперь она медленнее всего в джва раза

Запилили поддержку webpack в кложескрипт:
https://clojurescript.org/guides/webpack

Алсо, там заебатый гайд для жсников есть:
https://clojurescript.org/guides/faq-js

А еще есть жс в кложурскрипт транслятор, можно тыкать в браузере:
https://roman01la.github.io/javascript-to-clojurescript/

Из странного: декларативный фреймворк для клиент-сайда на основе даталога и логического программирования, 10 йоб из 10:
https://github.com/CoNarrative/precept

Из крутого: скринкасты в плейн-тексте. Просто набираешь код, а оно делает из него псевдо-видяху (которая на самом деле не видяха, а текст):
https://asciinema.org/a/160597

Напоследок: rust for clojurists
https://gist.github.com/oakes/4af1023b6c5162c6f8f0

>>1217058
У вас онеме головного мозга, гражданин. Не усугубляйте свое положение.
Аноним 26/06/18 Втр 20:58:23 1217862336
>>1217843
>Кложеская либа для умножения матриц в 40 с чем-то раз быстрее аналогичной джавной
А для Ъ? Что там? Кложуристы открыли jni?
>чувак ее пофиксил, теперь она медленнее всего в джва раза
Лол
Аноним 26/06/18 Втр 22:49:45 1217955337
>>1217862
>Neanderthal, a Clojure library backed by custom bindings to MKL, is much faster than pure Java libraries even for rather small matrices.
>Most folks who use DL4J and ND4J take for granted that ND4J is as fast as possible, and I don't blame them, for ND4J is much faster than any previous Java matrix library. Except Neanderthal, of course :)
>Here I am measuring the approaches: given that both libraries use MKL, I assume that the raw computation speed is the same, and ascribe any differences to the overhead that the library uses in keeping data around and calling appropriate operations.
> As expected, Neanderthal is 24 times faster.
> on 1024x1024 matrices, which is already quite large, so the overhead should not be noticeable, Neanderthal is still almost twice as fast as ND4J!
> Cool. But what about huge, not-powers of 2 matrices? There is still more than 15% lead by Neanderthal! This is much better than I expected

Из ответного поста джавного чувака:
>And while the difference even in the first benchmark wasn’t as dramatic once the result array ordering is properly set, it has still shown that Neanderthal indeed has a very low overhead and that to get the full performance out of ND4J you should know what you are doing.
>There are still some points where ND4J could lose some more overhead, and we are investigating them, so I’m looking forward to repeating these benchmarks as soon as we have them figured out as well.

Мирдружбажвачка
Аноним 28/06/18 Чтв 22:26:29 1219181338
15143212702820.png (259Кб, 485x486)
485x486
The saga continues, лол:
https://dragan.rocks/articles/18/Neanderthal-vs-ND4J-vol2

Теперь кложелиба в 1000 раз быстрее джавной на более сложных бенчмарках. На порядок, лол, пиздец просто. И при этом по части синтаксиса она гораздо удобнее и ближе к numpy. Короче, запасаюсь попкорном.

Алсо, у чувака оказывается есть неплохие mini-series по линейной алгебре вообще и по реализации числодробилок в частности:
https://dragan.rocks/articles/17/Clojure-Linear-Algebra-Refresher-Vector-Spaces
https://dragan.rocks/articles/17/Clojure-Numerics-1-Use-Matrices-Efficiently
Аноним 28/06/18 Чтв 22:59:58 1219204339
>>1219181
> На порядок, лол, пиздец просто.
Тыща - это три порядка так-то
Аноним 29/06/18 Птн 07:02:17 1219305340
>>1139597 (OP)
Добавили бы в шапку блок Никиты Прокопова, м?
Аноним 29/06/18 Птн 15:05:47 1219560341
>>1219204
Верно, чего это я. Сегодня уже продолжение от nd4j:
https://www.dubs.tech/blog/benchmarking-nd4j-and-neanderthal-2/
- tl;dr: "нормально делай - будет всего в джва раза медленнее, а не в тыщу". Ну то есть основная фишка в том, что неандертал опять же из коробки делает the right thing со всеми оптимизациями, а в нд4ж надо следить за этим ручками.

>>1219305
Ну перекат будет - можно добавить. Хотя у него же вроде не про кложу в основном? Кстати, я у него еще где-то видел серию обучающих видосиков про сабж (но смотреть не осилил, там для нубов).

Алсо,
https://grumpy.website/post/0QCVRiSyP
>Nobody wants to look at white text on black background.
ПИЗДЕЦ У МЕНЯ ЗА ТАКОЕ НА РАЙОНЕ УБИВАЮТ НАХУЙ и забавно, что в гноме это давным-давно работает именно так, как он предлагает - кококо макось кококо дизайн кококо юикс
вообще, по грампи надо бы отдельный тред создать с ретранслятором постов, жаль эти пидорасы там (анонимные) комменты не включили, такой-то вентилятор с говном получился бы
Аноним 30/06/18 Суб 07:15:09 1219979342
>>1219560
Он просто думает, что понимает в дизайне. На самом деле человек почти всю свою карьеру работал в бодишопах. Если ты понимаешь о чем я.
Аноним 30/06/18 Суб 12:20:55 1220043343
>>1219560
>Nobody wants to look at white text on black background.

Он же нормальных людей имеет в виду.
Которые понимают, как работает их зрение, и не хотят ослепнуть к 30 годам.
Аноним 30/06/18 Суб 12:27:44 1220046344
>>1216264
>https://gist.github.com/oakes/c82cd08821ce444be6bf

Код на кложуре - нечитаемая мешанина.
Write only language.

Какое там может быть "quick, spontaneous changes with little pre-planning"? Ты о чём вообще?
Да ещё и без статической типизации?
Аноним 30/06/18 Суб 14:21:04 1220080345
>>1220043
Есть какие-то вменяемые исследования насчет цвета текста и фона, ну и наверное размер шрифта и яркость тоже надо учитывать?
Аноним 30/06/18 Суб 14:46:49 1220089346
>>1220080
Они были ещё миллион лет назад.
Гугол в помощь.

Кстати, яркость тут на последнем месте среди влияющих факторов. Т.е. яркость просто должна быть нормальной - примерно - уровень листа бумаги, освещённого так, чтобы читать было комфортно. С учётом фонового освещения.

Вся эта пидорская тема с чёрным фоном пошла от старых макбуков, как мне кажется.
Дело в том, что обычный хипстерский 13" макбук (во времена до-ретины) - был пиздецки мыльным говном. Т.е. рендеринг шрифтов так сделан (в отличие от windows, где всё притянуто к пикселям, и текст чёткий). Я, кстати, сейчас с такого макбука пишу, лол.

Так вот, текст мыльный, и если ещё понизить яркость (ночью), то получается вообще пиздос. А на чёрном фоне (с низкой яркостью) - получше немного. Сам я так не делаю (ибо хуйня всё равнр), но сравнивал.

Плюс, вообще дешёвые ноутбуки с говноматрицами чётче показывают текст в режиме белым по чёрному. Как и дешёвые массовые говномониторы.

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

Плюс - желание кодить в полной темноте.
Так ни в коем случае нельзя делать - это 100% пиздец глазам.

Что влияет на утомляемость глаза?
Контуры шрифта должны быть чёткими. Иначе глаз безуспешно пытается сфокусироваться, и устаёт. Не должно быть
мерцания. В тёмное время суток должны быть тёплые цвета (ставь Flux или настраивай монитор). Контрастность не должна быть слишком большой. Но и не слишком малой тоже.

И белый фон, конечно. При соответствующем фоновом освещении, обязательно.
Аноним 30/06/18 Суб 16:19:15 1220103347
>>1219979
Ну он же последние эн лет фронтендером работает, не? Тащем-то широкой публике он более известен как шрифтовик, а не как лишпер.

>>1220043
Попробуй потоньше.

>>1220089
>Они были ещё миллион лет назад.
>Гугол в помощь.
Слив засчитан.

>тема с чёрным фоном пошла от старых макбуков
Охуенные истории, лол, такой-то манямирок. А тот факт, что людям а) просто вечером неприятно на 15-дюймовую лампочку пялиться б) просто нравятся темные темы в) не хочется отвлекаться на второстепенные виджеты тебе в голову не пришел? Ютуб и гномский просмотрщик фоток наверное темную тему добавили из-за старых макбуков, ага.

>В тёмное время суток должны быть тёплые цвета
К утомляемости глаз и зрению этот факт вообще никакого отношения не имеет. Учи матчасть. Слышал звон - да не знаю где он.

>И белый фон, конечно.
>белый
Кстати, за белый (не светлый, а именно белый) фон вообще хочется убивать.
Аноним 30/06/18 Суб 16:20:18 1220105348
>>1220046
>Код на <любой-язык-которого-я-не-знаю/> - нечитаемая мешанина.
>Мой код на <языкнейм/> - нечитаемая мешанина.
Починил тебя, братан. Алсо, попробуй потоньше.
Аноним 30/06/18 Суб 17:02:21 1220116349
Аноним 30/06/18 Суб 17:17:22 1220129350
>>1220116
Ну так ты сам ссылки-то свои читал? Там написано, что людям с астигматизмом труднее читать светлый текст на темном фоне при условии отсутствия внешнего освещения.

https://ux.stackexchange.com/questions/53264/dark-or-white-color-theme-is-better-for-the-eyes
>Now there seem to be varying factors into contrast and legibility. Room ambient lighting. Brightness of the monitor. Also you can mitigate the straining effects of white (#FFF) on black (#000) by simply lessening the contrast like using a light gray (#EEE, #DDD, #CCC) on a dark background (#111, #222).

https://tatham.blog/2008/10/13/why-light-text-on-dark-background-is-a-bad-idea/
>This post was written in 2008, based on me scrounging together some complementary links at the time. It’s now 2014, and accessibility is a well thought-out problem, which is generally well solved. Use the colour scheme that makes you happy. I use a black background on my Windows Phone, a dark navy in Sublime Text, a mid-grey chrome around my Office documents, and a bright white background through Outlook and my email.

Слышал звон - да не знаю где он.

Во-первых, я ничего не пропагандирую (ты зомбоящика пересмотрел?), а во-вторых - попробуй потоньше.
Аноним 08/07/18 Вск 13:33:16 1224434351
Какое будущее у языка?
Аноним 08/07/18 Вск 14:33:58 1224460352
>>1224434
Ещё 4 треда на дваче. Потом смерть.
Аноним 09/07/18 Пнд 00:38:24 1224808353
Аноним 13/07/18 Птн 19:56:51 1227491354
Чуваки делают движок, редактор которого написан на сабже:
https://www.youtube.com/watch?v=Hbexh-Jutvs&list=PLXsXu5srjNlxI7b2smnHxDeMMwR4mVZ2m&index=2

Чувак запилил визуальную новеллу олдскульный квест на сабже, вывалил стим, позитив ревьюс, сакцесс стори, все дела (не слышал раньше про нее):
http://www.tickstales.com/dev-blog/2015/11/16/making-a-tale-tick-the-making-of-ticks-tales-part-1

Еще один чувак пилит квест визуальную новеллу на хайпе про овервотч, тоже на сабже (охуеть вообще, игры на кложе, пиздец!):
https://twitter.com/mysterysal/status/1016102877201387525

gamedev-edition
Аноним 14/07/18 Суб 22:06:18 1228336355
>>1139597 (OP)
Кто-нибудь юзает Typed Clojure с реактом?
Как-то гуглил - должно быть возможно, интересно посмотреть на какой-нибудь проект.
Аноним 14/07/18 Суб 23:17:16 1228387356
>>1228336
Тащем-то никаких препятствий нет, просто берешь и делаешь. Но ни авторы om, ни авторы re-frame не поддерживают core.typed, например - так что тебе самому придется пердолить типы к их апи, если хочешь, чтоб оно чекалось. Если же ты хочешь типы только для своей бизнес-логики - ок, никаких проблем.

Алсо, погляди на https://github.com/arohner/spectrum - я бы на твоем месте лучше спеки писал.
Аноним 15/07/18 Вск 22:41:44 1228935357
1*7W31wteVSSria[...].jpeg (264Кб, 1895x1103)
1895x1103
Аноним 16/07/18 Пнд 10:45:52 1229108358
>>1228336
найдешь такой проект - вкинь, тоже посмотрел бы
Аноним 16/07/18 Пнд 13:41:27 1229157359
>>1228935
Слайд, конечно, вызывает вопросы. Был код на говне. Его отрефакторили на другом языке и из этого делают выводы о чем-то. Не надо так.
Аноним 16/07/18 Пнд 13:49:03 1229163360
>>1228935
Хипстота какая-то, а есть что-нибудь, чтоб было ВАУ?
Аноним 16/07/18 Пнд 15:08:04 1229199361
>>1229157
>>1228935
Найс сравнение. Слева код в кучу, справа весь функционал вынесли в отдельные функции, которые даже в скрин не закинули. СМОТИТЕ КАК КОЖУНЬКА МОЖЕТ

Я тоже так же умею:
from ... <наговнокоженное_приложение_на_любом_языке>
... to
(ノಥ益ಥ)ノ main()
Аноним 16/07/18 Пнд 16:32:36 1229248362
>>1228935
>After the 2-month long big rewrite, a stable product was live. Pause. Breathe. After 3 days of releasing, no one noticed there was a new codebase/algorithm in place. That’s what success tastes like
Господи, ну что за хипсторы? Хлебом не корми, дай на новый модный язычок переписать.
Аноним 16/07/18 Пнд 16:51:59 1229258363
>>1229248
Толсто, попробуй тоньше.
Аноним 16/07/18 Пнд 18:27:27 1229326364
15106927954080.png (121Кб, 736x736)
736x736
Аноним 16/07/18 Пнд 18:35:49 1229338365
>>1229157
Тут соглашусь, по сравнению с говном почти любой язык будет выглядеть выигрышно.

>>1229199
Наркоман? На левом скрине вся логика точно также вынесена в отдельные функции, которых на скрине нет.
Аноним 16/07/18 Пнд 19:10:23 1229354366
>>1229326
>одностраничник с пафосными кричалками вместо сайта
>"революционно, новое поколение"
>вебпарашники запилили очередной чатик на кложескрипте
Из-за таких проектов создается впечатление, что кложей кроме фрониедщиков-дизайнеров никто не пользуется.
Аноним 16/07/18 Пнд 19:46:04 1229376367
>>1229354
>одностраничник
Э, у тебя гиперссылки не работают?

>чатик
А, так у тебя просто не очень хорошо с восприятием информации.
Аноним 16/07/18 Пнд 19:47:49 1229378368
Аноним 16/07/18 Пнд 20:06:00 1229392369
>>1229376
>Э, у тебя гиперссылки не работают?
Работают. А какие нужно было нажимать? Фейсбук, твиттер или сразу переходить к изучению исходников на гитхубе?
>А, так у тебя просто не очень хорошо с восприятием информации.
Да вроде не так уж и плохо, с отсечением маркетингового говна справляюсь.
Аноним 16/07/18 Пнд 20:51:38 1229422370
>>1229338
не бросилось в глаза с первого раза

левую часть все ещё можно привести к правой, поменяв сигнатуры функций и вызывая их точно так же
Аноним 16/07/18 Пнд 23:08:48 1229523371
>>1229392
>А какие нужно было нажимать?
Ты реально такой кретин или просто троллишь тупостью?
https://embark.status.im/
https://hardwallet.status.im/
https://openbounty.status.im/
https://status.im/incubate/
https://status.im/projects/

>Да вроде не так уж и плохо
Ага, то-то ты cryptowallet со своей платформой для п2п-приложений не смог от чятика отличить. Ну бывает, чо.

>>1229422
Ну вот они и привели, бггг. Если ты знаком с голангом, то знал бы, что там невозможно писать такой датафлоу как на картинке справа.
Аноним 16/07/18 Пнд 23:27:06 1229533372
>>1229523
в смысле нельзя? Достаточно сделать функции полиморфными и вызывать друг за другом. Или в го что-то не так с полиморфизмом?
Аноним 16/07/18 Пнд 23:36:56 1229539373
>>1229533
и я таки пригляделся к коду го - все я правильно изначально говорил, на скрине в гошке один цикл с ифами, каждый из которых - тип фильтрации, которые и должны быть вынесены из цикла в отдельные функции и применяться к текущему состоянию последовательности поочередно, а справа просто четыре полиморфные функции принимающие и возвещающие список - уже приведенные к этому формату. Что тут что там можно написать одинаково нормально, если я не упускаю что в го что-то не так с полиморфизмом
Аноним 16/07/18 Пнд 23:40:22 1229542374
>>1229539
Причём тут вообще полиморфизм я нихуя не могу понять?
Аноним 17/07/18 Втр 00:10:34 1229568375
>>1229533
>в го что-то не так с полиморфизмом
this
Аноним 17/07/18 Втр 08:52:05 1229680376
>>1229542
Не понимаю что тебе не ясно, полиморфизм - понятие об одинаковых интерфейсах и взаимозаменяемости, я употребил этот термин чтобы описать, что предполагаю, что справа просто описано пять функций с одинаковыми типами входных и выходных данных, и что я не представляю почему так нельзя сделать в го. На что мне ответили >>1229568 что, видимо, все не так просто.
Аноним 17/07/18 Втр 17:31:03 1229976377
>>1229680
Ну в го в принципе нельзя писать обобщенный код из-за уебищной системы типов (Пайк тупо ниасилил) например, так что там нет практически никакой стандартной библиотеки для работы с коллекциями (ты тупо не напишешь те же map\filter, для каждого типа нужно отдельную версию функции писать), все приходится каждый раз велосипедить заново, так что на том пике как раз типа идиоматичный го код
Аноним 17/07/18 Втр 17:48:43 1229989378
>>1229523
Ох, как тебя задело-то, будто святое опорочили.
>Ага, то-то ты cryptowallet со своей платформой для п2п-приложений не смог от чятика отличить.
Ты с больной на здоровую не перекладывай, они сами на главной что пишут? Мы вам тут ОС делаем, которая чатик, и еще сможете грошами кидаться.
>со своей платформой для п2п-приложений
Где она у них своя? Там же просто клиент для эфириума, не? Да еще и с чатиком.
Ну или расскажи нормально, что именно они делают.
>With the future of the decentralized Web so wide open, Status Projects was created to evolve the larger decentralized ecosystem. Our initiatives aim to inspire action, support collaboration, and lay the groundwork needed to help drive Web3 forward.
По ссылкам опять какая-то рекламщина. С тем же успехом могли бы просто lorem ipsum'ом заполнить.
Аноним 17/07/18 Втр 21:30:02 1230139379
>>1229989
>Ох, как тебя задело-то
К троллингу тупостью тут я давно привык, чини детектор.

>ОС делаем, которая чатик
))

>Ну или расскажи нормально, что именно они делают.
Мне делать больше нехуй? Тебе интересно - возьми да прочитай. Ты в английский не можешь, или что?
Аноним 18/07/18 Срд 12:02:15 1230310380
screen.png (8Кб, 261x97)
261x97
>>1230139
>>ОС делаем, которая чатик
>))
>Ultimately what we're building is a hybrid browser and messenger, this allows us to have the best chance at casting the widest net which permits us to focus on user acquisition, staying agnostic and as close as possible to the principles that Ethereum embodies.
>Status is more than a messenger. Send payments and smart contracts to friends from within chats, and enjoy encrypted messaging by default, using a peer-to-peer protocol that doesn’t rely on centralized servers.
Им-то поди виднее.
Ладно, признаю, ты меня затроллил, такой отборной хипстоты от вебмакак ещё поискать нужно.
>Тебе интересно - возьми да прочитай.
Не, спасибо, мне хватило. Уже начитался про то, что их чатик НОВОГО ПОКОЛЕНИЯ БЫСТРЕЕ ВЫШЕ СИЛЬНЕЕ БЕЗОПАСНЕЕ ДЕЦЕНТРАЛИЗОВАННЕЕ и вообще ЗА НИМИ БУДУЩЕЕ и ВЕБ3. Теперь еще неделю монитор от смуззи оттирать буду.
Аноним 18/07/18 Срд 16:54:16 1230456381
>>1230310
>Им-то поди виднее.
Ну? Блин, анон, ты походу реально тупишь, а не траллишь. Вот у тебя мобильный банк в телефоне есть? Вот они делают то же самое, только 1) п2п, без центральной авторити; 2) как открытую платформу, под которую каждый может писать свои приложения. То есть представь, что у тебя в тинькофф-банке есть кнопочка "плагины", ты заходишь туда и выбираешь, например, плагин для покупки домена. Устанавливаешь, прямо в мобильном банке покупаешь домен, и тинькоф берет на себя все риски по поводу того, чтобы все правильно купилось и работало как надо, никаким 3rd-party регистраторам номер карты не нужно палить.

Вот у них то же самое, только опенсорс\п2п\блокчейн. То, что ты называешь "чятиком", лол, - это основное приложение (криптокошелек). В нем ты можешь пересылать платежи и зашифрованные сообщения другим участникам. Плюс у них еще куча других проектов вокруг этого: хардваллет (хардварный кошелек, считай как банковская карта, только п2п), разные биржи и обменники, распределенный аналог openid\dns, п2п-микроблоги (считай как tor+diaspora, только сразу искаропки в одном мобильном приложении), аналог патреона для кодеров (коммитишь код - получаешь биткоины\эфир себе на счет) и так далее, тысячи их (вроде даже игры есть, лол). Поэтому они и называют это "mobile ethereum os" - по сути это платформа\сдк для распределенных приложений.

>Теперь еще неделю монитор от смуззи оттирать буду.
Ну как бы добро пожаловать в 2018. А еще тут ракеты на платформы в океане сажают, прикинь?
Аноним 23/07/18 Пнд 21:20:05 1233740382
Аноним 24/07/18 Втр 01:30:17 1233883383
S.png (44Кб, 600x430)
600x430
>>1233740
У них там майнер на странице шоле?
Аноним 24/07/18 Втр 11:13:03 1234050384
>>1233883
Нет, у них REACTповбывав бы ебучих жабаскрипт-хипсторов
Аноним 24/07/18 Втр 22:27:24 1234383385
>>1233883
Нет, просто у них сайт не рассчитан на всяких сноуниггеров из стран третьего мира, которые не в состоянии купить себе нормальный телефон (у тебя же на телефоне, надеюсь, это вылетает?)
Аноним 25/07/18 Срд 14:40:40 1234687386
15324379766110.jpg (84Кб, 519x604)
519x604
>>1139597 (OP)
Анон, симпатизирую кожуре, но напрягает один момент. На ней практически нет работы (даже в дс) - вакансий единицы и то часть из них это фронтовая параша на cljs (ненавижу фронт, такие дела, сорян, если обидел).
Ощущение, что большинство адептов, угорает по коже для души, а зарабатывает на хлеб другим языком. Так ли это?
И второй вопрос, продавал ли ты на своей работе кложу, как основной язык для нового проекта? Если да, то как (какая аргументация, как принанил других макак к вкатыванию в сабж, итд).
Аноним 25/07/18 Срд 15:12:24 1234701387
>>1234687
Никита Прокопов же нашел работу на кложе.
Аноним 25/07/18 Срд 16:08:23 1234724388
>>1234701
А где Никита Прокопов нашёл работу на кложе?
Аноним 25/07/18 Срд 16:18:07 1234728389
>>1234701
Воу, у нас есть человек, который нашёл работу на кложе! Теперь кложа более востребованный язык, чем idris
Аноним 25/07/18 Срд 17:55:55 1234799390
>>1234687
Каждую неделю же постятся удаленные вакансии из европки. Мониторь мейлинг лист\слак, алсо https://functionaljobs.com/ - тот же circleci вообще постоянно хайрит.

>>1234724
Сперва в Echo, сейчас вроде какой-то адовый бизнес-консалтинг-тырпрайс-генератор-оперденей пендосам пилит. У него на сайте есть кулстори по всему этому, емнип в эхо ему просто дали бабло и сказали "пили", ну пацан сделал - пацан сказал, короче он там и фулстак сеньор-помидор, и тимлид, и пиэм, ну короче и кложурец, и на дуде игрец.

>>1234728
Пидораха, плес
Аноним 26/07/18 Чтв 10:59:46 1235258391
fjobjs.png (48Кб, 893x286)
893x286
>>1234799
Ты шутник или обосрался просто?
Во-первых, фнукшнлжобс - го девелопер, девопс, очень функшнлю зе комментариев.
Во-вторых ты перечисляешь конкретные конторы, что свидельствует о маргинальности языка. У востребованных решений тысячи открытых позиций на всяких хед.хантерах и линкединах. Это выглядит в духе "ну вообще-то у нас есть 2.5 конторы, которые таки рискнули пописать на кложе". Просто признай, что кложа никому не нужна.
Ты сам то вообще кложей зарабатываешь или очередной мамкин лисп-энтузиаст?
бомбануло Аноним 30/07/18 Пнд 13:02:18 1237630392
aGREmQw700b.jpg (46Кб, 700x528)
700x528
Как-то услышал речь с конфы, что вот clojure это программирование на "мапах", ну и вообще идею в том что данные превыше всего. И в какой-то мере даже офигел, ведь всегда и сам такое думал, игнорируя ООП-боль и фокусируясь на программирование на словарях (или ассоц массивах), имея при этом куда меньше кода и мнимой абстракции (ну и куда больше полезных действий, без аутирования в классы, интерфейсы и прочий бойлерплейт шлак)

Но вот одна беда, этот синтаксис у clojure. И дело не в том, что трудно сломать мозги на новый подход, а в том что, скорее всего, такой синтаксис непригоден к большому проекту (слишком прост для современных программ). Можно спорить часами и проводить пример как большие умы написали где-то что-то и много (и на ассемблере писали большие программы многие энтузиасты), но это совсем не показатель. Синтаксис реально проблемный, неужели не очевидно? Почему нет простого скриптового языка завязанного на мап/лист-программирование? Да, можно сказать, вон жс, пхп, питон, бери и кодь, но проблема в том что там ты так будешь писать один. Люди реально готовы страдать с монструозными ORM даже в скриптовых языках, натягивая очередные данные на "классы", а потом тут же их натягивая на подобие мапы для рендеринга в html/json и при этом думать что это вообще нормально.

Люди, что с вами не так? Почему скриптовые языки упарываются в ООП и прочие радости например в пародию статической типизация, копируя друг у друга бойлерплейт. А другие языки наоборот уходят в другую крайность липспо-подобных языков и аутируют там в другом своем мирке???


Аноним 30/07/18 Пнд 14:14:59 1237662393
>>1237630
>Почему нет простого скриптового языка завязанного на мап/лист-программирование?
Perl6
Аноним 30/07/18 Пнд 19:54:27 1237825394
Screenshot-2018[...].png (12Кб, 664x110)
664x110
>>1235258
>Во-первых, фнукшнлжобс - го девелопер
Ты долбоеб или как? По-твоему НИЗЗЯ АЛЛАХ ЗОПРИТИЛ постить гофер-вакансии на сайте со словом "functional" в названии? Что за аутизм.

>Во-вторых ты перечисляешь конкретные конторы
Ну точно аутист. Анон спросил, в каких конкретных конторах работал один чувак, я ему ответил. Перечитай хоть куда отвечаешь.

>У востребованных решений тысячи открытых позиций на всяких хед.хантерах
))
По такой логике вообще кроме пхп ЖС ЧТМЛ ЦСС больше в мире ничего не существует, а, например, няшная, р, скала, да тот же го, даже 1с - "маргинальные" языки, лол.

Вон только вчера в мейллисте запостили, например:
https://groups.google.com/forum/#!topic/clojure/Vw5Hu7Ioh9o

Вон эти чуваки https://en.wikipedia.org/wiki/Sparrho ищут разраба:
https://groups.google.com/forum/#!topic/clojure/TiJS2A_FPlY

Ну и так далее:
http://clojuredocs.org/jobs
https://jobs.braveclojure.com/
https://functional.works-hub.com/jobs/clojure-developer-london-2aa24

>Ты сам то вообще кложей зарабатываешь
В данный момент уже нет.
Аноним 30/07/18 Пнд 20:10:52 1237834395
>>1237630
Что за говно у тебя на пике? Пиздец. Это твой код? Пиздец, убей себя об стену.

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

>И дело не в том, что трудно сломать мозги на новый подход
Если ты не даун-аутист, то на привыкание к (f x) вместо f(x) у тебя уйдет примерно 2 вечера.

>синтаксис непригоден к большому проекту (слишком прост для современных программ)
Чего блядь? Еще раз, синтаксис точно такой же, как у жс, только гибче и богаче (есть отдельный литерал для множеств, есть отдельный дататайп кейвордов для уникальных ключей, есть ридер теги для дат и ууид, плюс их можно расширять своими типами; нет точек с запятой). Плюс синтаксис к размеру проекта вообще отношения не имеет, блядь, что за хуйню ты несешь? Пригодность к большому проекту определяют процессы в твоей команде, платформа твоего языка и архитектура твоей системы. Бизнесу (и всему миру) вообще похуй, ставишь ты там точку с запятой в конце строки или не ставишь.

>Синтаксис реально проблемный, неужели не очевидно?
Ну если код на пике твой, то проблемы не в синтаксисе, а в голове кое у кого. Алсо, "неужели не очевидно" - это заебись технический аргумент, ага. Не страдай хуйней, короче.

>Почему нет простого скриптового языка завязанного на мап/лист-программирование?
Есть (clojurescript+lumo). Guile сюда же можно, ну и lua в принципе тоже, хотя в этих двух все печальнее конечно. Блядь, да тот же жс с андерскором.

>там ты так будешь писать один
Пиздишь, дохуя народу колются, страдают, но пишут functional js. По сути весь современный жс с вебпаками и редаксами - это примерно 3/4 того, чем кложурскрипт уже был лет 5 назад. И без жвм, кек.

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

>аутируют там в другом своем мирке
Это ты аутируешь, нет никакого "другого" мирка. Везде {} - мапы, [] - вектора, вот это все. Писать (f x) или f(x) или f x вообще нет никакой разницы (если ты не даун-аутист), за исключением того, что первое позволяет иметь удобную макро-систему.
Аноним 30/07/18 Пнд 22:02:36 1237954396
>>1237834
>Это твой код?
>Ну если код на пике твой
ватермарк глянь "рука-лицо.жыпег"

>Еще раз, синтаксис точно такой же, как у жс
Тут можно даже сразу прекратить беседу. Хоть и жс тот еще процедурный кал, но ничего общего с простынями clojure там нет. Можно конечно быть способным, чтобы найти что-то общее, но у нас же не специальная олимпиада?!

Самое забавное, если бы кложа была бы клоном js (урезанной по максимум), то код был бы куда читабельнее, просто потому что императивный стиль удобнее сопровождать, чем код написанный ввиде "дерева выражений" или как-это называется, та самая прерогатива компилятора/интерпритатора, а не программиста
Аноним 30/07/18 Пнд 23:06:13 1237987397
>>1237954
>ватермарк глянь
Лол, не обратил внимания. В чем тогда твоя претензия к синтаксису, если ты понимаешь, что на твоем пике мЕмАСиК))0)?

>Хоть и жс тот еще процедурный кал, но ничего общего с простынями clojure там нет.
С какими простынями? Объем кода на клжс по сравнению с жс в среднем будет немного меньше на тех же задачах. Можешь нормально описать, о чем ты говоришь?

>Можно конечно быть способным, чтобы найти что-то общее
Ну жс как бы изначально создавался как лисп для верстальщиков в си-подобном синтаксисе, лол. Но это так, к слову.

>код был бы куда читабельнее, просто потому что императивный стиль удобнее сопровождать, чем код написанный ввиде "дерева выражений"
У тебя какая-то каша в голове. Императивный код в общем случае сложнее сопровождать, потому что там много глобального состояния (глобальное состояние - это плохонько). Императивность\декларативность не имеет вообще никакого отношения к синтаксису и "деревьям выражений", это абсолютно ортогональные вещи. У меня такое чувство, что ты где-то начитался каких-то мЕмАсиКОв))0) или чего-то такого, но сам в теме еще не разбирался, поэтому у тебя все в куче. Давай ты приведешь конкретный пример того, что тебе не нравится, чтобы можно было что-то предметно обсуждать. Я вот не понимаю, чем
obj.foo().bar().frobnicate();
лучше
(-> obj foo bar frobnicate)
- если тебе не платят за количество символов в твоем коде, that is.
Аноним 31/07/18 Втр 14:45:37 1238282398
>>1237987
>obj.foo().bar().frobnicate();
>лучше
>(-> obj foo bar frobnicate)
Да ну конечно лучше, но коротенькие примеры не делают этот код императивнее, если начинаешь склеивать это в дерево выражений, получается лапша заканчивающаяся улыбками "))))))".

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

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

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

PS В идеале, не вижу проблем даже для одного программиста - взять идеи кложи и склепать какой-нибудь новый "жс" на коленке, на той же jvm/жс машине, но сделать программирование мапами/листами - популярнее для всех, а не натягивать сову на глобус через дерево выражений и доказывать всем что ты прав.
Аноним 31/07/18 Втр 16:33:21 1238354399
>>1238282
>Основной поинт который я раскрыл в том посте это то, что писать императивно удобнее и читабельнее, чем писать код в виде "дерева выражений"
У тебя в голове полная каша и недостаток знаний. Язык на абсолютно любом языке подвергается парсингу и представляется в виде дерева выражений перед тем, как быть оттранслированным в машкод или байткод ВМ или выполненным интерпретатором; в лиспах просто разница между этим внутренним представлением и текстом программы околонулевая. Почитай dragon book, может, после этого больше не будешь позориться на форумах, пускай даже и анонимных.
Аноним 31/07/18 Втр 17:23:09 1238379400
>>1238354
>языке подвергается парсингу и представляется в виде дерева
Я разве говорил обратное? Я говорил что это не задача программиста писать в виде дерева-выражений.
Ну не популярное это решение, не нужно даже читать книги с драконами, чтобы это заметить.
Услышь меня - идея то не плохая, реализация говно.
И если эту реализацию человек понимает только после книги с драконами или там с пони, то какой в этом смысл? Где твое критическое мышление?

>У тебя в голове полная каша
>позориться на форумах
Ты же понимаешь что переход на личности, это самый низкий показатель ума в диалоге ну или не способность человека уже вести проигранный диалог.
Зачем тебе это? Мы же не в /b/
Аноним 31/07/18 Втр 19:39:36 1238463401
>>1238282
>коротенькие примеры не делают этот код императивнее,
Анон, еще раз: ты не понимаешь, что значит слово "императивный". Погугли, пожалуйста.

>если начинаешь склеивать это в дерево выражений, получается лапша
Нет, не получается. Если получается, значит ты делаешь что-то не так (пишешь говнокод, например).

>Основной поинт который я раскрыл в том посте это то, что писать императивно удобнее
Учитывая, что под словом "императивно" ты понимаешь не то, что весь остальной мир, яснее от этого нихуя не становится.

>Можно сделать имутабельно все и императивном программирование
Цитирую википедию: "In computer science, imperative programming is a programming paradigm that uses statements that change a program's state."

>подход действительно не популярен.
Какой подход? У тебя каша в голове.

>не вижу проблем даже для одного программиста - взять идеи кложи и склепать какой-нибудь новый "жс" на коленке
Не видишь ты их оттого, что видимо не занимался разработкой языков. (Я уж молчу про то, что это никому ненужно.)

>не натягивать сову на глобус через дерево выражений и доказывать всем что ты прав
Анон, разберись с терминами и сформулируй свою мысль нормально. Пока я слышу только "f(x) лучше чем (f x)". Я еще в прошлом посте просил тебя привести конкретный пример кода, с которым у тебя проблемы. Прошу еще раз.
Аноним 31/07/18 Втр 19:45:40 1238464402
>>1238354
>в лиспах просто разница между этим внутренним представлением и текстом программы околонулевая
На самом деле это не так - разница огромная. Можешь посмотреть выхлоп аст здесь, например: https://github.com/clojure/tools.analyzer

Но посыл поста правильный: ты в любом случае строишь дерево выражений. Более того, это дерево в основном отбивается индентацией, так что разница вообще минимальна (разве что sexpr'ы удобнее структурно редактировать и\или автоматически расставлять скобки parinfer'ом на основе индентации).

>>1238379
Тебе другой анон отвечал, если что.

>И если эту реализацию человек понимает только после книги с драконами
Какую реализацию? Я уже писал и повторюсь еще раз: любой нормальный инженер, если он не даун-аутист, привыкает к новому синтаксису максимум за 2 вечера. Книги с драконами к этому отношения не имеют - их нужно читать просто чтобы представлять, как работают инструменты, которыми ты пользуешься (ну и чтобы иметь возможность их разумно обсуждать с другими людьми).
Аноним 31/07/18 Втр 20:46:46 1238498403
>>1238463
>Цитирую википедию
Не надо, я серьезно, не надо такого делать.

Если без простыни текста (крайне упрощено):
Императивный подход - это последовательное исполнение инструкций.
Функциональный подход - это процесс вычисление функций (какого-то их множества).

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

Читать (не писать) последовательный код - куда удобнее, чем математическое дерево.
Поэтому не нужно демагогию с драконами и пони разводить, пройдемся кратко:
Последовательное императивное исполнение - хорошо.
Чистые функции - хорошо
Иммутабельность - в отдельных случаях, хорошо (просто потому что не панацея)
Писать математическое дерево выражений - не прагматично, именно поэтому все ФП не популярно (а не потому что ты не такой как все, недооцененный гений андеграунда)

PS
Меня больше пугает что ты сравниваешь f(x) и (f x), то есть у тебя в голове вообще нет различия и понимания ФП и ИП подхода, ты вероятно видишь ФП как последовательность и даже не понимаешь почему тебе предлагают танцевать от математического дерева? риторический вопрос
Аноним 31/07/18 Втр 21:02:50 1238503404
>>1238498
забыл:
программировать от словарей и листов - великолепно (только не плохо было бы ввести какие-то описательные словари, потому что многие привыкли к классам и структурам, так как они изначально где-то прописаны).
Правда я обычно просто клонирую описанную ранее мапу, но это больше костыль.

Мечты
Если мы добавим последовательность в ФП мы, конечно же, получим процедурное программирование. Но что еще интерпретируемым языкам надо?? Пускай в нем есть многие фишки с ФП, иммутабельность, пускай функции это выражения... И если в таком языке можно было бы запретить таскать всякий кал типа классов и прочей ереси - язык бы стал идеальным. Причем так же везде дергались функции (но уже последовательно) и ничем особо не отличалось от той же кложи.

Аноним 31/07/18 Втр 21:15:34 1238510405
Люблю дауно срачи.

В кложе есть классы - есть годные примеры ооп кложи?
Аноним 31/07/18 Втр 21:21:45 1238514406
>>1238498
>но это не определение этой парадигмы
Ну вот в википедии - определение. У анона с двача - может и не определение. Но для таких неформальных понятий между определением анона с двачей и определением популярного и читаемого словаря лучше выбирать второе, просто чтобы не было путаницы.

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

>Последовательное императивное исполнение
(-> foo bar baz frobnicate). 90% кложекода пишется по такой модели. Последовательное, синхронное исполнение.

>Писать математическое дерево выражений
Я не знаю, что такое "математическое дерево выражений" и при чем тут вообще математика. Тебе арифметика в стиле (+ 1 2 3) не нравится, или что?

>именно поэтому все ФП не популярно
Самый популярный язык на сегодня (жабаскрип) - функциональный как бе. В более узком смысле ФП означает иммутабельность данных по умолчанию. В еще более узком смысле ФП означает иммутабельность и развитую статическую систему типов. Что такое "математическое дерево выражений" и какое отношение лисп-синтаксис имеет к ФП я все еще не знаю.

>почему тебе предлагают танцевать от математического дерева?
Мне никто не предлагает танцевать. Сформулируй уже наконец нормально свою мысль и приведи примеры кода, с которым у тебя проблемы (прошу в третий раз).

>>1238503
>ввести какие-то описательные словари, потому что многие привыкли к классам и структурам
В кложе есть 1) records 2) спеки для произвольных словарей (в теории - статически проверяемые), смотри s/keys

>я обычно просто клонирую описанную ранее мапу
Суть в том, что надо плясать не от мапов, а от rows (пар ключ-значение, ну или в общем случае тегированных типов).
Аноним 31/07/18 Втр 21:30:07 1238519407
>>1238510
В кложе классов нет (они есть в хост-платформе). Кложа - explicitly non-oop язык, это такой opinion у Хикки. Но там есть мультиметоды для ad-hoc полиморфизма, есть протоколы (считай тайпклассы\трейты) для абстракций, есть наследование реализации (реализациями можно как угодно перекидываться) и есть иерархии наследования (это когда у тебя есть некий уникальный идентификатор, например, :zoo.animals/lion, и ты говоришь, что он - потомок :zoo.animals/cat и :africa.fuckups/predator).

Все перечисленные фичи реализованы и работают полностью независимо друг от друга (иерархии никак не связаны с мультиметодами, мультиметоды никак не связаны с протоколами), но при этом play well with each other, разумеется.

Для более традиционного определения ооп (мутабельные инкапсулированные компоненты + DI), смотри:
https://github.com/stuartsierra/component
https://github.com/danielsz/system
или
https://github.com/weavejester/integrant
https://github.com/duct-framework/duct
Аноним 31/07/18 Втр 23:21:04 1238590408
Аноним 04/08/18 Суб 22:42:01 1241018409
Аноним 09/08/18 Чтв 19:04:23 1243717410
Анон, я немного разобрался с самим языком. Теперь хочу разобраться с тулингом. Особенно с емаксом. Какие плагины посоветуешь для него? После вскода очень неудобно пользоваться. Юзал только сайдер для репла. Что еще стоит поставить в него? Может есть какие нибудь годные гайды по емаксу?
Аноним 09/08/18 Чтв 19:29:44 1243730411
>>1243717
Поставь спейсмакс и не еби мозги. Базарю, ещё захочешь.
Аноним 09/08/18 Чтв 19:44:55 1243747412
>>1243730
Окей, сейчас попробую. В спейсмаксе можно оставить горячие клавиши из емакса?
Аноним 09/08/18 Чтв 22:01:25 1243828413
Аноним 09/08/18 Чтв 23:37:12 1243883414
>>1243717
>После вскода очень неудобно пользоваться.
Нахуя тебе имакс? В вскоде нормальная поддержка кложи. Если хочется чего-то самого лучшего, то ставь идею+курсив.

Имакс - это целая отдельная вещь, к сабжу треда не имеющая особого отношения. Если у тебя есть ОЧЕНЬ много свободного времени, то конечно стоит в него вкатиться (хотя бы потому, что это один из самых успешных и живучих софтваре-проектов в истории человечества), но это отдельное большое приключение.

А так - да, спейсмакс сейчас самый популярный вариант. Накатываешь cider с nrepl'ом и допиливаешь напильником (в допиливании напильником суть(тм) имакса).

Но лучше просто поставь плагин в свой вскод и не еби мозги. Если уж так хочется экзотики, накати лучше light table, заодно можешь попрактиковаться в кложе через написание плагинов.
Аноним 10/08/18 Птн 10:10:14 1244021415
>>1243747
Да, он при первом запуске спросит но горячие клавиши из vim лучше
Аноним 11/08/18 Суб 19:12:50 1245038416
DkSOtU1V4AApKsK.jpeg (103Кб, 1199x381)
1199x381
Аноним 13/08/18 Пнд 10:18:33 1245950417
Аноним 13/08/18 Пнд 13:34:01 1246021418
Анон, какую либу посоветуешь для серверсайда для ньюфань? С серверной частью никогда не работал, так как фронтэндер. Но теперь решил познакомиться.
Аноним 13/08/18 Пнд 13:56:41 1246038419
Аноним 13/08/18 Пнд 20:04:10 1246243420
>>1246021
Очевидный сompojure очевиден. Как разберешься, что к чему, можешь глянуть на luminus (это то же самое, но с батарейками). Ну и типа в целом там по хттп/рест что-нибудь почитай.
Аноним 13/08/18 Пнд 21:57:31 1246297421
Аноним 15/08/18 Срд 00:51:44 1246879422
Аноним 15/08/18 Срд 12:06:33 1247004423
>>1246879
Так, я так понимаю graal.js это жса на жабе? Только я не могу понять в какой виртуальной машине потом весь этот зоопарк будет бегать, в жсовской?
Аноним 15/08/18 Срд 18:16:39 1247263424
>>1247004
Не, грааль - это короче хуйня, которая позволяет компилировать байткод jvm в нативный код и исполнять все это с минимальным нативным рантаймом, без жвм. Ну то есть компилируешь в байткод -> компилируешь в нативный код -> подключаешь одну шаред лайбрари, условный glibgraal - и все работает.

Один чувак, например, так компилял простой веб-сервер на compojure. То есть пишешь обычный веб-апп на кложе, компиляешь, получаешь на выходе бинарник на 10 мегабайт без зависимостей и с мгновенным стартом, профит. Можно пилить микросервисы, не имея 64гб рамы для жвм.

Соответственно грааль.жс - это рантайм для жса на основе граальвм. Плюс у них там есть еще фреймворк для реализации языков на основе граальвм, и все реализации на этом фреймворке могут между собой общаться. Ну то есть как жвм, только без жвм. Раньше в жвм был жс-рантайм (rhino например), теперь можно код под него взять и засунуть в грааль.жс, и будет то же самое, только без зависимости от жвм. Плюс они вроде как хотят как-то интегрироваться с нодой, нпм и всем этим прочим.

То есть ты компилишь кложурскрипт в жс, жс исполняется внутри бинарника грааль.жс, все. Судя по гитхабу, это именно отдельная реализация рантайма, точно так же, как и нода - у них там на крестах все - но с использованием общего языкового фреймворка для граальвм (трюфеля)). Так-то было бы прикольно, если бы они просто перекомпилили тот же райно под грааль. Тогда бы получилось, что ты компилишь кложурскрипт в жс, потом жс исполняется в райно, который написан на джаве, которая скомпилена в жвм байткод, который скомпилен в нативный код, лол. А на самом деле там наверное еще не чисто нативный код, а все-таки легковесная вм-рантайм (я не разбирался, как оно внутри устроено, компилит в бинарники - вот и ладушки), короче WE NEED TO GO DEEPER, лол.
Аноним 15/08/18 Срд 18:17:47 1247266425
Короче, тлдр: профит в том, что можно делать из кложекода легковесные бинарники без зависимостей + можно в одном таком бинарнике миксовать код на жс, р, руби, питоне.
Аноним 15/08/18 Срд 18:19:39 1247268426
А, ну и на с\с++ тоже, да. Короче, one vm to bring them all.
Аноним 15/08/18 Срд 19:38:43 1247332427
ruuf9ebd70b55.9[...].jpg (49Кб, 302x258)
302x258
Долгое время я искал, как сделать свой код ультранадежным. Я угорел по формальной верификации, почти поехал на почве теории типов.
Но только сегодня я осознал: единственное, что меня волнует, это рантайм-поведение. Блядь, все так просто. Не нужны никакие завтипы, монады и прочее. Нужна лишь спецификация, проверяющая каким угодно образом это самое поведение. И что же лучше всего подходит в качестве такой спецификации? Мозговыносящие пруфы и леммы? Нет, spec'и и юнит-тесты позволяют описать ту же спецификацию, затрачивая 1% усилий.

Принимайте в секту, джентльмены.
Аноним 15/08/18 Срд 19:38:46 1247333428
>>1247263
Я просто не понял какой толк гонять кложуржс в граальжс. Если можно было бы гонять кложур в жвм с граалем, разве не быстрей бы было? А трюфл он для них общий же.
Аноним 15/08/18 Срд 19:43:57 1247338429
>>1247332
Правда, есть один вопрос, слегка смущающий меня в кложе: что будет, если Хикки/Когнитект завтра ВСЁ?

Если Брендан Айк исчезнет, с JS ничего не случится, bus factor давно перевалил за 100к.
Если Гослинг испарится, никуда не денется.
Если Страуструп слетит с катушек, то c++ не станет хуже.

А насколько кложа как язык завязана на своих создателей?
Аноним 15/08/18 Срд 20:16:31 1247359430
>>1247332
Добро пожаловать, снова :3

Алсо, монады нужны, охуел чо ли.
Алсо, в идеале нужно конечно и то, и то. Но рефлексия first, а потом уже на нее накидывать статику, желательно много разной статики.

>>1247338
А что будет с руби, если Матц все? Интересно.

Конкретно Хикка язык вообще никак не поддерживает, на него ничего не завязано. Ну то есть блядь, как бы на него все завязано (он лично должен в качестве финального шага зааппрувить каждый патч, прежде чем его примут в релиз), но по факту он не поддерживает код, он только занимается будущим (дизайном и кодингом новых крутых штук). Поддерживают и разрабатывают язык в основном работники когнитекта, это да, но что значит "все"? Это консалтинг/аутсорс контора, которая продает датомик и динамические опердени, плюс саппорт волмарту, каким-то банкам, circleci итп. Ну то есть чтобы когнитект ВСЕ, нужно, чтобы сперва кложа ВСЕ (причинно-следственную связь в твоем вопросе инвертируем-с), да и даже при этом они могут продолжить клауд джавахуйню всякую продавать.

Плюс это чисто сам язык, а комьюнити проекты поддерживает баблом некоммерческий фонд, в который когнитект донатит какие-то символические 100 баксов или что-то в таком духе. Ну то есть чисто финансово даже если завтра весь когнитект будет abducted by aliens особой трагедии не будет. Плюс они там завязаны на Software Freedom Conservancy, веб-стак immutant разрабатывается редхатом\жбосс, ну короче тырпрайс все дела.

Другое дело, мол если Хикку похитят (((рептилоиды))), будет ли такое же развитие с охуенными идеями каждые полтора года, но это как бы сам понимаешь ко всему относится в этом плане меня больше беспокоят Торвальдс и ко или Столман, например, ну и вообще вопрос философский.
Аноним 16/08/18 Чтв 18:02:26 1247856431
>>1247333
>какой толк гонять кложуржс в граальжс.
Ну это просто еще один рантайм. Можно его встраивать куда-нибудь (в оракл), можно на нем тесты гонять, етк.

>Если можно было бы гонять кложур в жвм с граалем, разве не быстрей бы было?
Так и можно же (и притом без жвм). Насчет медленнее\быстрее - не знаю, наверное быстрее. Но если у тебя УЖЕ ЕСТЬ проект на клжс, и тебе нужно вызвать из него либу на р, например, то теперь ты и это можешь сделать. То есть и клжс, и обычная кложа там поддерживаются.

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

Хотя может тима грааля быстрее добавит поддержку динамических класслоадеров в джавный грааль, лол.
Аноним 23/08/18 Чтв 18:32:03 1251573432
https://docs.google.com/forms/d/e/1FAIpQLSeouME58YDBNrs3IP5_l5xA1Z51bYLBnMcAgLTqhtxLi7Gvbw/viewform
>Describe a work situation where you had to decide between two equally appealing options. Creative work is about trade-offs. We'd like to learn about how you assessed the options and decided between them.

Сука, блядь, вот ненавижу такие вопросы, что на них отвечать? Все равно ведь и я, и читающий это оба знаем, что это будет какая-то приукрашенная сказочка, блядь, ненавижу эти трик квешчнс. Да и любой каждый день по сотне таких десижнов делает, то есть блядь надо именно привести такой кейс, где блядь ты такой охуенный супермен сделал правильный выбор и потом это вылилось в сэкономленные килобаксы для бизнеса, или какая-то подобная хуйня. Блядь, или это вопрос не на опыт, а на стиль мышления? То есть суть именно в том, как и основываясь на чем ты выбираешь? СУКА, ебаные эйчары и психолухи, ненавижу блядь
инб4: выбирал между тем, чтобы поскроллить двач или съебаться с офиса пораньше, было лень вставать из кресла, поэтому выбрал скроллить двач и залогировать это время в таску, в конце месяца дали повышение за переработку
Аноним 23/08/18 Чтв 19:01:36 1251581433
1447653275813.jpg (18Кб, 517x413)
517x413
>>1251573
> выбирал между тем, чтобы поскроллить двач или съебаться с офиса пораньше, было лень вставать из кресла, поэтому выбрал скроллить двач и залогировать это время в таску, в конце месяца дали повышение за переработку
Аноним 23/08/18 Чтв 21:47:08 1251665434
У кого-нибудь юзают организацию работы микро тасками? Как оно?
Аноним 23/08/18 Чтв 23:25:15 1251704435
Аноним 26/08/18 Вск 06:41:01 1252790436
Самый годный тред всея раздела.
Аноним 26/08/18 Вск 19:03:49 1253166437
>>1139597 (OP)
Неплохой читшит\туториал ребята для воркшопа сделали: https://github.com/friemen/cugb/blob/master/kickstart.md
Только в конце какое-то странное соглашение по именованию атомов, по-моему говно. Рядом с атомами все равно всегда либо функция с ! на конце, так что и так видно, что тут меняется состояние, либо дереференс: @atom - так что опять же видно, что мы из контейнера достаем значение. Нахуй надо еще один ! в имя самого атома добавлять? Хуй их знает.

>>1252790
Да, ето так!
Аноним 28/08/18 Втр 12:25:07 1254016438
>>1247004
Нее, на жабовской. В двух словах это еще один заход на тему соснуть у ноды и V8. Предыдущие два rhino и nashorn были просто порваны по производительности. Имхо граль граль.жс ждёт та же судьба и то же амплуа странного нинужно.
Аноним 28/08/18 Втр 16:19:56 1254146439
>>1254016
>Нее, на жабовской.
Так вся суть в том, что написано оно на жаве, но с помощью грааля компилится в нативный код. Так что они с одной стороны закрывают райно\нашорн нишу (пускать жс внутри жвм), а с другой делают и стенд-элоун жс-движок, который может в интероп со всеми остальными языками на граале (руби, кложа, r...).
Аноним 28/08/18 Втр 23:30:30 1254451440
>>1254016
>та же судьба
Ну бенчмарки довольно обнадеживающие.
Аноним 29/08/18 Срд 19:41:56 1254948441
Аноним 03/09/18 Пнд 21:54:50 1258346442
>>1139597 (OP)
https://trainline.github.io/optimus/
https://engineering.thetrainline.com/presenting-optimus-an-open-source-data-store-838115d7d98c
>We, at Trainline, are delighted to announce Optimus, an open-source data store which provides transaction isolation semantics and version control mechanism on top of a traditional key-value store. Optimus is designed to be used by Data Scientists to store and retrieve reference data and model co-efficients calculated across millions of keys.Optimus is a key component of our data platform which is designed to enable Data Scientists to build and deploy data products with highly predictive features, driven by data, that save our customers time, hassle and money. Optimus is the data store that powers Trainline features like BusyBot and Price Prediction.
Аноним 05/09/18 Срд 19:32:30 1259700443
Аноним 09/09/18 Вск 19:02:15 1261446444
Аноним 19/09/18 Срд 00:19:30 1266381445
Тут это, выложили видосики с новой кложеконфы в Финляндии в Финляндии, блядь! Скоро во Львiве будут евроконфы проводить, блеать, в этом году проводилась в первый раз:
https://www.youtube.com/channel/UC1lFJanm5Wp6IpNk-2C1Sxw
Аноним 29/09/18 Суб 15:51:41 1271890446
Аноним 03/10/18 Срд 17:24:42 1273997447
Так ребят, на связи вротендер погромист. Знание жабаскрипт и основы Джавы. Хочу совершенствования ради начать Clojure изучать.
Ответьте пожалуйста на несколько вопросов.
1. Насколько перспективно это для веб разработки? Для бэкенда? Для фронта?
2. Востребован ли Clojure среди работодателей или как Haskell больше для личного развития?
3. За пределами ДС реально найти галеры где его использует? СРавнивая весь СНГ.
Аноним 03/10/18 Срд 22:30:24 1274179448
>>1271890
Бля, уже который раз вижу ссылку на этот видос, видимо все-таки придется посмотреть, лол.

>>1273997
1. define "перспективно". В плане потенциального роста скилла и зарплаты - да, однозначно перспективно.
2. Держи короче пасту из соседнего треда: https://pastebin.com/raw/TLpP80y9
3. Подписан в твиттере на пару кложуристов из зажопинсков, так что реально, но это все по знакомствам, разумеется.
Аноним 06/10/18 Суб 18:27:31 1275648449
>>1273997
В проде на работе сокет сервер чудесно пашет, 0 проблемо.
Дома торговый бот на кложке, иммутабельность помогает быстро по потокам каждую секунду раскидать не беспокоясь о сайд-эффектах.
Работа регулярно встречается в профильных темах, и удалёнка и CTO, Англия, Германия, США.
Приятный язык, на фронте всё ж предпочту vue ибо быстрее. А вот ноду на бёк - ну иво нахуй. Однопоточная, хоть и асинхронная - в моём деле не помощник.
Аноним 06/10/18 Суб 21:06:12 1275703450
>>1275648
>Дома торговый бот на кложке
Расскажешь?
Аноним 07/10/18 Вск 00:49:45 1275778451
Аноним 07/10/18 Вск 00:55:33 1275783452
>>1275703
В смысле не потому, что нет, а что рассказал уже.
Многопоточность нужна для посекундного обсчёта ситуации.
Подробнее - это уже о финансах, то есть от задачи, а это не очень по теме. По теме - ну, то, что раньше оно было на питоне и не устраивало скоростью обсчёта и вот этим всем гемором с многопоточностью и было медленнее оттого в 15 раз.
Аноним 07/10/18 Вск 10:56:28 1275858453
>>1275703
А так, раскидал валюты, индикаторы, по тредам, причём очень просто, в (futures обернуть). Мало того, ход выполнения можно наблюдать постоянно делая deref у атомов - этого чудесного средства общения потокобезопасного. И потом собрать всё в кучку через подобие await, я макросы юзаю для такого, в этом случае удобно.

<pre>
(ns tr.lib.futures)

(defmacro futures
[n & exprs]
(vec (for [_ (range n)
expr exprs]
`(future ~expr))))

(defmacro wait-futures
[& args]
`(doseq [f# (futures ~@args)]
@f#))

;; HOWTO USE

;(defn sleeper []
; (Thread/sleep 1000))

;; Threaded code, will run 1 second

;(defn test-futures []
; (wait-futures 1
; (sleeper)
; (sleeper)
; (sleeper)
; (sleeper)))
;(time (test-futures))

;; Original single thread code, 3 seconds

;(defn test-simple []
; (sleeper)
; (sleeper)
; (sleeper))
;
;(time (test-simple))

</pre>

Ещё удобно, конечно, залипания сокета у биржи убирать (ни exceptions, ничего не выкидывается( просто рестартуя части программы через mount из scheduler внутреннего, тоже классно. Живая просто штука)
Аноним 08/10/18 Пнд 18:52:25 1276503454
>>1275783
>>1275858
Прикольно. В общем-то да, насчет "не очень по теме" ты прав, я нихуя в финансах не шарю (всегда думал, что там все дрочат на наносекундные задержки и машинлернинг). А так - круто, про рестарт вживую это годное замечание.
Аноним 08/10/18 Пнд 20:57:43 1276559455
>>1276503

Да, тема интересная, финансы, обучался с потерями где-то полгода, делал ML на tensorflow, но в итоге для себя сделал вывод, что оно там не работает. Гонял по истории - будь здоров. То есть оно будет постоянно учиться, это супер, а я буду терять) В целом рынки манипулятивны и не созданы, чтобы зарабатывать, а чтобы терять и человек в этом смысле завсегда похитрее машины будет. Старая добрая торговля с плечом, но только не в промежутках 5-10-15 минут, а секунды сейчас решают, даже до 30 секунд норм. Есть интересный проект на эту тему в ML https://cryptomon.io/chart/bitstamp/btcusd/day#knneighhbors (я наблюдаю и тоже не алё, правда сейчас не доступен что ли уже, издохли...) Самое интересное было алгоритмы портировать на кложу, достаточно быстро. Но большая вариативность реализаций ещё оставляет задел на скорость, то есть я не использовал пока lazy, всё достаточно тупенько, тк я не гуру в кложе.
Аноним 08/10/18 Пнд 21:01:37 1276566456
>>1276503
Сейчас дочитываю Joy of Clojure (на половине), второе издание, мозгодробительная книжка, очень вставляет и подача и уже что не для новичков. Наконец-то всосал теорию что такое трансдьюсеры, раньше как-то не ложилось в голову обычного императивного программиста. А всего-то делов - этож именованый набор трансформирующих функций без коллекций (map, reduce итп) Самое сложное было сознание изменить от ООП к data flow, на первых этапах даже apply вызывал непонимание, не говоря уже о juxt. Но как-то рассосалось.
Аноним 08/10/18 Пнд 21:02:49 1276568457
>>1276503
В joy of clojure этот метод обучения назывался "Пить из пожарного гидранта", когда читаешь всё подряд по теме жадно. А оно там само потом всплывает или осознаётся позже.
Аноним 09/10/18 Втр 00:25:49 1276625458
Что вот накипело сказать про кложуру из бека с basic->pascal->(php|python)->js->clojure

Напишите ваш опыт... а то я одинок в целом, свои задачи решаю и ок.

Язык обалденно вставляет в первые дни, много времени потратил на emacs, хотя может и зря, он мне был нужен реально только в мегасложных отладках (cider) но это было нужно три раза. Обычно не заморачиваясь, cursive + repl было бы вполне достаточно (+ dbg макросы могу поделиться, наверное они распостранены). Сейчас emacs бы пропустил, хотя многие не согласятся, но полгода, ебать, мне уже сорокет лет, мне не до того.

Язык внешне обманчив, он глубок. Во-первых, я не зная java и jvm полез. Это вообще не обломало, interop хорош, тот же знакомый ООП, мне какая разница - есть интерфейсы и есть. гугли либы которые нужны, а там видно будет. Мне нужно решение задач, а не дрочка. Но сама кложка ой как глубокое озеро. 5 часов пишешь 20 строчек, но какие 20 строчек! Да, иногда сложнее для рефактора, но надо больше читать чужого кода, он всегда читается понятно. Любой чужой код на кложе читается легко, благодаря ns правильному. Такого я ранее не видал.
Аноним 09/10/18 Втр 00:28:53 1276626459
Потом code as data = это же просто подрыв мозга. Код - это просто list, где на первом месте функция всегда. Всё мега консистентно. Соответственно, раз код как данные, то это просто открывает настолько огромные возможности, что я чуть не поседел.
Аноним 09/10/18 Втр 00:30:02 1276628460
в обычных языках function () = x это да, может быть first class citizen, но это не code as data
Аноним 09/10/18 Втр 00:38:23 1276630461
Главный прорыв - это сам подход к редактированию кода, я осознал, что такое slurp, barf, когда тебе скобки не мешают, а помогают.
Аноним 09/10/18 Втр 00:40:37 1276631462
короч я могу продолжить, но поскольку я тут приплыл недавно, то не хочу спамить вне дискуссии. Может оно и не надо никому.
Аноним 09/10/18 Втр 10:18:07 1276711463
>>1276631
Нет-нет, твоё мнение очень интересно для нас правда

>>1276626
Скажи, а что это, собственно, даёт, кроме макросов (которые, как я слышал, в кложе по сравнению с CL кастрированные)?
Аноним 09/10/18 Втр 16:58:57 1276846464
>>1276711
ох, как радостно и приятно слышать заинтересованность в русском комьюнити, у нас там слака активная, но мне некогда общаться, я из тех людей, что любят тишину и документацию. Прошу принять, что я нахожусь на определенном этапе понимания кложки, который может не совпадать с вашим и прошу простить заблуждения и готов учиться.

ну про тип list я готов много рассказывать. это басис лиспов
и то не факт, что я всё понял еще. Это просто данные, можно сказать, что это "code forms"

(code form) -> волшебное дрочево, самая мякотка, писечка лиспов
Многие люди понимают неверно лисп подобные языки как последовательность операций, как везде,
но нет! Это просто данные (* x y) = это просто список с функцией в самом начале и аргументами далее

А почему? что вообще есть лист? Я тут сделал для себя небольшую шпаргалку, ну как сделал, она в разработке по всем типам данных, но вот по листу - это https://i.gyazo.com/7bdb2497fdc80787ef95ae411ecc43d3.png
то есть у листа нет индекса, в отличие от вектора.
Примитив нам дан простой - это по сути стек


list - это все, что "между скобочек", мне нравится как называется функция (calling position)

и что есть по сути list? Это список, который отдаётся ну пусть эвалуатору (омг), и он его процессит.
Да, в кложке просто принято брать первое x в листе как функцию и применять ее к последующим аргументам, но это не обязательно.
Мы можем и просто отдать как есть с помощью апострофа - это значит евалуатить не надо '(x)

Как с точки зрения языка - это просто огонь - передавать языковые конструкции имхо как данные, и делать с ними что хошь. Нигде нет таких вольностей. Это же просто списки! просто тип данных. Это для меня было просто бомбезно - просто взять и передать кодоформы как данные куда-то в другой модуль. Похоже, на eval в других языках, но это не так. ведь данные можно трансформировать, да еще и иммутабельно, серъезно? Прям передать класс кодом? хаха
Вот это вот вещь! Метапрограммировыание.


Аноним 09/10/18 Втр 18:28:29 1276885465
>>1276846
Макросы в кложке тоже подлая тема, по сути, чем реже они используются, тем читабельнее код. Ну заюзал я из для многопоточности, всё, харе.

Конечно, и в core много макросов, например, let очень интересно почитать, но по сути в работе оно не особо и надо.
Аноним 09/10/18 Втр 19:12:59 1276908466
>>1276846
>у нас там слака активная
Ты про clojurians? Я там гдет полгода назад был, и в русском канале там было довольно тихо.

> мне некогда общаться, я из тех людей, что любят тишину и документацию.
Понимаю, сам такой.

> Вот это вот вещь! Метапрограммировыание.
Ну, твоё писание кипятком от форм лиспа я могу понять, у меня такое же было при обучении по SICP, но теперь я хочу понять, где эту мякотку можно реально применить, помимо "мам, смотри, как я могу!". Как я понимаю, одно из применений - макросы, но про макросы в SICP'е ничего нет.
Аноним 09/10/18 Втр 20:26:39 1276974467
>>1276559
Блядь, сперва прочитал как "cryptomoron", кек. Отличное название для стартапа.

>>1276566
Джой оф кложи - это не для начинающих, угу. Как вторая книжка зато отлично заходит.

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

>>1276568
>читаешь всё подряд по теме жадно. А оно там само потом всплывает
STOP... HAMMOCK TIME
Аноним 09/10/18 Втр 20:34:52 1276982468
>>1276625
Про имакс согласен, в принципе он нахер не нужен, когда кложу изучаешь. У многих такое впечатление создается, что типа без имакса на кложе писать - это не то, ну так это хуйня полная. Емнип, сами чуваки из когнитекта пишут как раз в курсиве. Но я на имакс подсел еще до кложи, и это разумеется единственная среда разработки белого человека :3

>Но сама кложка ой как глубокое озеро.
Мне нравится, что там все фичи отделены друг от друга. Например, ты можешь спокойно писать код, вообще не зная, что такое макросы. Или стм\агенты\волатайл. Или полиморфизм - ты можешь даже не знать про протоколы и юзать мультиметоды, или наоборот, и у тебя ничего не сломается, все это отдельно. То есть нет такого, как в джаве (или хаскеле), где все фичи языка завязаны на одну конструкцию, и тебе надо сразу все в себя впихать, и только после этого ты можешь писать хоть какой-то код. А тут можно делать по принципу "херачишь код, понадобилась фича - разобрался". По сути самые основы языка (тот же синтаксис) можно рассказать за пару часов, ну и плюс конечно еще надо задрочить стандартную библиотеку и преобразования данных в функциональном стиле. А после этого просто берешь и делаешь, минимум ненужной хуиты, ебли с типами, абстрактбинфакторифасадсинглтонов и т.п. Берешь и делаешь.
Аноним 09/10/18 Втр 20:36:54 1276987469
>>1276630
Вот это кстати самое главное, что потом бросается в глаза в других языках, лол. Особенно когда какой-нибудь чтмл не в хиккап-синтаксисе править - это же просто пиздец, сидишь и думаешь: какой мудак это все придумал? Есть же очевидное, простое, удобное решение - нет, не хочу скобочки, хочу говно жрать. Хипсторы ебаные...
Аноним 09/10/18 Втр 20:46:20 1276998470
>>1276711
В кложе точно такие же макросы, как в кл (негигиенические), плюс немного сахарка для удобства (типа автодженсимов). Ты наверное со схемой перепутал, там "кастрированные" на самом деле нет по сравнению с кл\кложей макросы.

>>1276885
По-моему макросы нужны в первую очередь для либописателей. Ну и просто без них либо бы все тормозило, как в руби, либо была бы куча бойлерплейта. С ними довольно легко выстрелить себе в ногу и сделать протекающую абстракцию, но в том и фишка, что на кложе они по сути не нужны просто для написания программ - ты их будешь только использовать в основном, а писать их будут всякие ребята, которые запилили тебе core.async, core.match, core.logic, тот же om, ну и т.п. Плюс мне нравится, что допустим вот есть либа, которая что-то делает, и там в ридми автор говорит мол вот у нас есть основная абстракция qux, мы все через нее делаем, и потом в коде ты берешь и пишешь: (defqux ...) - то есть индирекции меньше, читать проще, все straight to the point. Есть такое мнение, что типа чем более низкоуровневый язык, тем больше в коде на нем упоминаний не относящихся к домейну вещей, ну и наоборот соответственно. Вот тут как раз про это.

>>1276908
tl;dr: макросы - это штука, которая позволяет добавить в язык поддержку асинхронности библиотекой, а не изменением компилятора. То есть повышается модульность программ.
Аноним 11/10/18 Чтв 15:49:55 1277699471
>>1276711
К теме гомоиконности, из соседнего треда:

>И что за хуйня у вас там с макросами творится https://www.scala-lang.org/blog/2017/10/09/scalamacros.html ? Типа scala.reflect нахуй потому что Dotty в них не может, Idea тоже не может, поэтому Scalameta. Но теперь и Scalameta нахуй, переписываем всё по новой под scala.macros? Может уже подсмотрите, как правильно делать, чтобы не перехуячивать всю кодобазу по два раза за год?

кек
Аноним 11/10/18 Чтв 20:27:27 1277844472
Я тот, который всё ещё обучается по жизни)

>>1276998

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

>>1276908

Я из архива её всю прочитал на одном дыхании за несколько дней https://clojurians-log.clojureverse.org/clojure-russia

Когда это было там, пару лет назад я упарывался за фронтенд и сделал биндинги к chrome-reduxdevtools
https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=ru

тут https://gitlab.xet.ru/publicpr/clojurescript-redux/tree/master (там весь редукс на пару строк на самом деле на мультиметодах), больше пробмел передавать всё в chrome js extension, имитация иммутабельности, блин

но после этого, я понял, что значительно охладел к фронту, всё же слишком много иботни было с переиспользованием реакт компонентов, а писать всё с нуля...
Аноним 11/10/18 Чтв 21:06:23 1277856473
>>1277844
Ну то есть из практического для фронтендеров: есть такая штука, как http://cljsjs.github.io/ но по факту там старьё и надо самому импортить.
Аноним 11/10/18 Чтв 23:15:55 1277908474
>>1277844
>В куче видео смотрел и в целом понятно, что макросы - это протекающая штука
Ну я бы не сказал что это обязательно так (when вроде нигде не протекает, лол), но ее очень легко сделать протекающей. А так да, основное правило макрописателей - don't write macros ну или don't write a macro if a function will do, если для зануд

>>1277856
В последних версиях ужеж вроде впилили поддержку es6 импортов и npm (ну и плюс в shadow-cljs это давно было, но она какая-то больно жручая, я ее толком не пробовал)
Аноним 14/10/18 Вск 15:38:50 1278934475
14/10/18 Вск 18:26:33 1279008476
>>1278934
Хуйню какую то обсуждают.
Аноним 14/10/18 Вск 19:36:53 1279039477
Аноним 14/10/18 Вск 20:17:58 1279077478
>>1278934
О, видел этот подкаст, прикольные ребята там.

>>1279008
Это как в первом выпуске хост там заливал всякие довольно абстрактные вещи, подробно объяснял все минут 10, а потом его собеседник в ответ: "ээ... ну, да" - вот ты мне тот момент напомнил, лол
14/10/18 Вск 23:55:39 1279176479
>>1279077
>абстрактные вещи
>подробно объяснял все минут 10
> а потом его собеседник в ответ -

Апи не нужно
@
А вот у нас экшены это функции
@
Ух бля, давайте джунов пообсуждамаем, а давай
@
Кто убил джунов
@
Как джуну найти первую работу
@
Хороши ли джуны
@
И т.д.

Я хз кому это может быть интересно...
Аноним 15/10/18 Пнд 15:55:51 1279506480
autism.jpg (22Кб, 312x360)
312x360
>>1279176
Я про первый выпуск говорил, але.
Аноним 16/10/18 Втр 16:23:27 1280005481
Аноним 17/10/18 Срд 19:18:32 1280669482
Аноним 17/10/18 Срд 20:46:59 1280712483
>>1280669
> https://moikrug.ru/vacancies/1000040445
Они же, если мне память не изменяет, несколько месяцев тому кложуриста искали. Видать, тот, которого они нашли, понял, что придётся не пиздеть всем, как же хороша кложа, а реально писать на ней кот, и тихо слился.
Аноним 17/10/18 Срд 21:42:53 1280743484
JVM Ecosystem R[...].png (150Кб, 834x739)
834x739
Аноним 17/10/18 Срд 22:15:39 1280767485
>>1280712
Кложуристы, конечно, сверхлюди, тут спору нет, но ты правда считаешь, что ровно одного кложуриста достаточно, чтобы пермаментно тащить все проекты компании?
Аноним 17/10/18 Срд 22:17:33 1280768486
>>1280743
>kotlin
So much for the hype, кек. Скалку конечно жалко (алсо, так вроде и не скажешь). Хотя в принципе меня устраивает: java8 + clojure, больше на жвм ничего и ненужно.
Аноним 28/10/18 Вск 15:09:47 1285882487
>>1280743
Скорее вин, чем фейл.
Аноним 05/11/18 Пнд 00:23:53 1289855488
Что-то уже второй день подряд кложа на главной HN.
Анон, зайди, бампни, (по-братски)

Сегодня Learning Clojure: comparing with Java streams
https://blog.frankel.ch/learning-clojure/5/
Аноним 05/11/18 Пнд 23:46:35 1290344489
Аноним 06/11/18 Втр 20:40:19 1290822490
Аноним 08/12/18 Суб 17:18:21 1308067491
добавьте в шапку, чтобы скобконенавистникам было проще набрасывать https://www.youtube.com/watch?v=jlPaby7suOc
"лучше чем сам никто тебя не затроллит"
Аноним 09/12/18 Вск 02:12:45 1308344492
image.png (105Кб, 1603x434)
1603x434
решил угареть и зибашить пюрешных функций на вижуал крестах, но данные полюбому нужно сохранять

вот так вот - это тру?

Аноним 09/12/18 Вск 02:41:43 1308351493
image.png (281Кб, 1920x1080)
1920x1080
вот что б попонятней
Аноним 04/01/19 Птн 16:34:39 1320718494
Аноним 08/01/19 Втр 19:07:15 1323338495
(clojurescript)
понравился ряд постов относительно свежих чувака с medium
https://medium.com/@kirill.ishanov там посты посвящённые re-frame + spec, очень полезно, я переписал свой стек вдохновясь.
Аноним 08/01/19 Втр 19:49:46 1323352496
>>1323338
Кирилл, залогинься.
Аноним 08/01/19 Втр 19:58:02 1323356497
>>1323352
Я не Кирилл, дай бг ему здоровья) Сделал хорошо, чо ты.
Аноним 08/01/19 Втр 21:08:28 1323395498
Немношко прозу жизни:

Взял халтурку, на C#, xamarin, чот пописываю на новогодние праздники, делать нечего, пребываю в унынии оттого, как c# рпники пруцца от своего LINQ, Типа вот мы по данным ищем как по SQL, запросами. Удовольствия - 0, но бабки есть бабки, подписался, думал, поищу что-то новое.

ООО, это просто нечто, хыхы, типа https://ru.wikipedia.org/wiki/Language_Integrated_Query

WHAT??? И это на таком примитивном уровне находится до сих пор в 2019 году.

А если у тебя всё данные, и код, (спасибо кложке)то уж явно проблемы такие были решены, тащусь от
https://github.com/nathanmarz/specter
или
https://github.com/boxed/instar

объективно жаль сишарпников, надо отрыгнуть.




Аноним 08/01/19 Втр 21:33:01 1323416499
Но опять же, отрыгнуть некуда, clojure в мобилках лоха (лоха - это глагол)

Есть интересный проект, https://github.com/arcadia-unity/Arcadia
unity кложурка, откуда я собственно, и приперся с с#
но в целом, это пока не территория кложуры.

Аноним 29/01/19 Втр 14:28:40 1337371500
Есть кто живой? решил попробовать кложурскрипт, но есть проблема, делаю все по https://clojurescript.org/guides/quick-start, запускаю это приветмир, страница в браузере открывается, обновляется, repl печатает hello world, но на мои команды repl не реагирует, пишу например (+ 1 1), или HUI, ничего не происходит. Как фиксить?
Аноним 30/01/19 Срд 16:54:57 1337952501
>>1323416
cljs+react-native на мобилках норм (но дев-экспириенс - уг), у статус.им именно так все крутится (и они еще пилят порт реактнейтива для десктопа, их мобильная прога уже даже запускается под линуксом)

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

Чо, перекат пилить?
Аноним 30/01/19 Срд 21:32:44 1338220502
>>1337952
Накатил figwheel, там все работает.
Аноним 30/01/19 Срд 21:47:57 1338231503
http://www.4clojure.com/login там живой? Не могу залониться, сбросил пароль, все равно ошибка
Аноним 30/01/19 Срд 23:11:18 1338323504
>>1337952
Пили перекат, ящитаю
Аноним 31/01/19 Чтв 20:01:06 1338798505
>>1338231
А нахер там регаться? Оно ж и так работает.

>>1338323
Бля, чет лень сегодня лишние телодвижения совершать, на выходных запилю :3
Аноним 04/02/19 Пнд 21:14:34 1341882506
>>1
Ну и где перекат?
Аноним 05/02/19 Втр 01:30:40 1342033507
>>1338798
Перекатывай!
PS заебал абу двачи ломать, перекатывай, что бы его макаки кодить учились
Аноним 05/02/19 Втр 18:36:34 1342410508
15187171935050.jpg (101Кб, 500x375)
500x375
Аноним 15/02/19 Птн 21:20:18 1348450509
3e0135fc8f18ff8[...].jpg (22Кб, 506x453)
506x453
Общий лиспотред куда-то проебался, поэтому запощщу сюда.
Пикрелейтед - моё актуальное лицо, когда прочитал про макрос loop в Common Lisp.
Серьёзно, что за нахуй? DSL для циклов с условием в стандарте? Не могли, как в концептуально стройной няшной Scheme сделать - вот тебе TCO, вот тебе named let, и крутись как хочешь. Нет блядь, надо нахуевертить, чтобы как в C++ было, только со скобочками))))))))))
Аноним 15/02/19 Птн 21:21:54 1348453510
>>1348450
Ёб твою мать, ещё и с тредом проебался. Спасибо Абу за прекрасно свёрстанный каталог тредов, блядть.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Топ тредов
Избранное