; Добро пожаловать в очередной тред самого высокооплачиваемого языка в мире!(swap! threads update-in [:clojure :count] inc)Кто использует clojure в продакшне?Сбербанк, Walmart, CircleCI, Heroku, Puppet, Netflix, Soundcloud, Spotify, Facebook, Groupon, Red Hat, Oracle.Какие приложения написаны на clojure?Walmart eReceipts - бэкенд обработки данных о покупках во всех отделениях Walmart для их мобильного приложения.https://www.datomic.com - распределенная транзакционная база данных с языком запросов на основе datalog.http://status.im/ - мобильная блокчейн ОС на основе Ethereum'а и тулкит для создания p2p-приложений.http://lighttable.com - расширяемая интерактивная IDE для clojure, python и javascript.https://precursorapp.com - инструмент для коллективного прототипирования онлайн (рекомендую попробовать, зависимость есть).http://circleci.com - Continuous Integration and Delivery. Бэкенд и фронтенд на clojure+clojurescript.http://braid.chat/ - более лучший слак, опенсорсный и с историей (альфа).http://maria.cloud/ - интерактивная онлайн-IDE для обучения программированию.TL;DRНачать: http://maria.cloud/Читать: 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-guideIDE: https://practicalli.github.io/clojure/development-tools/install-guides/Clojurescripthttps://clojurescript.orghttps://figwheel.orghttps://github.com/Day8/re-frameДокументацияhttps://cljdoc.org/https://clojuredocs.org/ https://clojure.org/api/cheatsheet && https://cljs.info/cheatsheet/https://clojure.org/reference/documentationhttp://clojure-doc.orgЗадачиhttp://www.4clojure.comhttp://clojurekoans.comhttp://clojurescriptkoans.comhttp://exercism.io/languages/clojure/aboutВидеоhttps://github.com/tallesl/Rich-Hickey-fanclub#talkshttps://www.youtube.com/user/ClojureTVКомьюнитиhttps://ask.clojure.org/http://clojurians.slack.com/https://clojureverse.org/https://www.reddit.com/r/Clojure/ #clojure@irc.freenode.nethttps://groups.google.com/forum/#!forum/clojurehttps://stackoverflow.com/questions/tagged/clojureБлогиЕженедельник: https://therepl.netВсе блоги: http://planet.clojure.inПроизводительность: http://clojure-goes-fast.comОффтоп: http://tonsky.me/IDEhttps://cursive-ide.comhttps://docs.cider.mx/cider/index.htmlhttps://github.com/tpope/vim-fireplace || https://github.com/Olical/conjure/http://lighttable.comhttp://nightcoders.net || https://sekao.net/nightcode || https://sekao.net/lightmodhttps://shaunlebron.github.io/parinfer/Библиотекиhttps://clojars.org && https://www.clojure-toolbox.com && https://cljdoc.xyzWeb: http://www.luminusweb.net && https://github.com/duct-framework/duct || http://pedestal.io/Express/Flask/Sinatra: https://github.com/weavejester/compojure && https://learnxinyminutes.com/docs/compojure/ || https://metosin.github.io/reitit/REST: https://clojure-liberator.github.io/liberator/App Server: http://immutant.org || http://aleph.io || http://http-kit.org/DI: https://github.com/weavejester/integrant || https://github.com/stuartsierra/component || https://github.com/tolitius/mount || https://aroemers.github.io/mount-lite/SQL: https://github.com/layerware/hugsql || https://walkable.gitlab.ioUI (cljs): https://github.com/Day8/re-frame || https://github.com/omcljs/om || https://github.com/tonsky/rumHTML: https://github.com/weavejester/hiccup || https://github.com/cgrand/enliveMacros: https://github.com/cgrand/macrovichMagic: https://github.com/nathanmarz/specterSpec: https://github.com/bhb/expound && https://github.com/jeaye/orchestraTest: https://github.com/clojure/test.generativeFAQ— СКОБКИ!!11http://clochure.org/— Кейворды?..https://clojure.org/guides/faq#why_keywords— Common Lisp же есть, нинужна!!1Просто съеби.— Что нужно для вкатывания?Знать английский, не быть тупым, иметь опыт программирования.— Хочу начать изучать программирование, clojure мне подойдет?Лучше сперва возьми PLT Racket и читай http://htdp.org или SICP (хотя можешь попробовать http://maria.cloud/).— Обязательно знать джаву и жс?На уровне чтения документации.— Как без классов представлять бизнес-сущности?Используй хэшмапы, namespaced keywords и spec. Не поддавайся искушению создавать рекорды на каждый чих. Все есть данные. IT'S JUST D A T A— Что по скорости?Зависит от задачи. В среднем - медленнее скалы, быстрее рубипитонов.— Печатаю элементы последовательности, а они не печатаются, ЧЯДНТ?Ленивость + сайд-эффекты => используй 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".— Че там по пост-иронии?https://www.youtube.com/watch?v=jlPaby7suOc— Батя одобряет?Да: https://www.youtube.com/watch?v=-ktUXFxkSkI&t=25m25s
Еще вот такой сайтец есть: https://clj-templates.comИ еще забыл добавить в список проектов https://defold.com - редактор для игрового движка.https://clojure.org/news/2020/02/20/state-of-clojure-2020
>>1610479 (OP)Что там по библиотекам и фреймворкам? Коротко и лаконично? Или опять какие-нибудь монстры на подобии Hibernate или Slick, которые нужно учить месяцами перед тем как начать писать в базу?На сколько плохи IDE для Clojure? Много багов попадается? Или все уже отладили и ничего не тормозит и не глючит, т.е. можно работать?Как оно в принципе по сравнению с какой-нибудь Java или Scala? Чувствуется легкость? Все концепции складываются в единую картину в голове?
>>1610521>на подобии>монстры Hibernate или Slick>учить месяцами>начать писать в базу>IDE для>Много багов попадается? Или все уже отладили и ничего не тормозит и не глючит, т.е. можно работать?>по сравнению с какой-нибудь Java или Scala?>Чувствуется легкость?>Все концепции складываются в единую картину в голове?
>>1610552это в общем 10 лет опыта. т.е на кложе только старшие разработчики норм получают как и везде
>>1610521>Что там по библиотекам и фреймворкам? Комьюнити предпочитает библиотеки (do one thing but do it well), что с одной стороны хорошо и концептуально годно, но с другой может заебывать подбирать все это самому. Проблему решают "фреймворки"-шаблоны, которые просто делают скаффолдом подборочку из стабильных поддерживаемых либ с дефолтными настройками.>Или опять какие-нибудь монстры на подобии Hibernate или Slick, которые нужно учить месяцами перед тем как начать писать в базу?Не, такого нету, как раз ради борьбы с этим все и затевалось. Хотя есть штуки типа http://book.fulcrologic.com - их заебешься изучать, они позиционируются как раз как фулстак-решение для крупных проектов. Но он менее популярен, чем тот же рефрейм, где надо просто прочитать ридми, чтобы разобраться в архитектуре, и все.>На сколько плохи IDE для Clojure?Многие пользуются интеллиджей, говорят заебись. Очень многие пользуются имаксом, там точно все заебись (я гарантирую это), но если ты не имаксоеб, то нахер тебе это не нужно. Есть плагины под вскод, вим, саблайм и т.п. Есть еще своя ide - http://lighttable.com - но она вроде не поддерживается (ее запилили еще до вскода, вроде это вообще одна из первых айдиишек\рекдаторов этого типа была), там чувак ее запилил, собрал кучу бабла и ушел в закат пилить следующий стартап.>Или все уже отладили и ничего не тормозит и не глючит, т.е. можно работать?У меня были баги при обновлении тулинга на версию из мастера, просто откатывался назад. В стабильных версиях вроде все норм.>Как оно в принципе по сравнению с какой-нибудь Java или Scala? Чувствуется легкость?Да.>Все концепции складываются в единую картину в голове?Да. Но в то же время одна из главных фишек в том, что все механизмы отделены друг от друга. Нужен полиморфизм? Вот пожалуйста. Нужны синтаксические абстракции? Вот пожалуйста. Нужен асинк? Вот подключите библиотеку и пользуйтесь. То есть нет такого, что все механизмы запиханы в одну фичу, и чтобы понять все нюансы, тебе нужно выучить весь язык разом (в отличие от классов, асинк\авейт итп). Все максимально отделено (decomplected). Например ты можешь писать код и вообще даже не знать, как писать макросы, если тебе это в твоем коде не нужно. Или например в одной из версий добавили в язык трансдьюсеры, но при этом тебе необязательно их изучать, если ты ими не хочешь пользоваться, они интегрированы в язык, но в то же время отделены от всех остальных фич, так что если ты их мысленно вырежешь из языка у тебя не вылезет в каких-то неожиданных местах какое-то непонятное поведение или что-то в таком духе.По сути есть основа - это иммутабельные данные, через которые моделируется предметная область. А все остальное (все фичи языка) - это просто отдельные инструменты, которые берутся по требованию.Причем благодаря макросам многие из фич языка опять же вынесены в отдельные библиотеки: паттерн-матчинг, асинк, спек и т.п.
>>1610552>years of professional programming experienceНе ебемся в глаза, анон!(алсо я думаю есть и люди, которые именно на сабже 10 лет пишут)
Кстати, есть довольно годный блог-книжка, если кому-то удобнее на русском читать: http://grishaev.me/
>>1611189>Самый простой и лаконичный ФП язык в истории>Отсутсвие шизопердолинга тайпоабстракций ради тайпоабстракций как в каких-нибудь хаскелях>Как описал анон выше, для полноценного приложения можно использовать любые API/Языковые фишки, которые нравятся>Профайлинг за пару минут копипаста тестируемого кода>JVM
>>1611312Васян васяныч иди лучше на пары Сформулировать хоть одну претензию к языку как таковому ты видимо не в состоянии Учитывая всю rapid development ориентированость кложи и легким скейлом фп в хайлоад твои пуки о 10 годах коммерческого опыта которые ты сам же высрал и в которые ты сам же поверил выглядят еще смешнее
>>1611279Самый простой промышленный ФЯ в истории это Erlang. Вот он простой как палка, а кложа со своими трансдюсерами, макроридами, мультиметодами, deftype/defrecord extend/extend-protocol/extend-type reify не такая уж простая.
>>1611381Простой (simple) - это не когда мало фич и нет нормальных строк, это когда эти фичи друг другу ортогональны (или параллельны, кому какая метафора больше нравится).Мне нравится картинка на эту тему с какого-то слайда (доставьте, у кого есть): слева - много-много прямых параллельных линий. Вот это как раз simple. Справа - линий вроде бы меньше, но при этом они все переплетены какими-то узлами, все друг с другом пересекаются. Вот это сложно (complex, complected).Алсо, эрланг (бим) имхо надо рассматривать не как язык, а как платформу, и сравнивать соответственно с jvm. У той же кложи насколько я помню есть реализация для эрланг-вм.
>>1611551>find(huitka)>error - huitka ne huitka!>find(toInt(huitka))>error huitka ne int huitka!>NU HUITKA?!!!>HUITKA NE HUITKA!!!
>>1611632Не знаю какие ты там фичи в жсах с пыхами нашел, но хаскель это максимально простая биндилка с простым фп тайпклассовым интерфейсом, лол.
Хорошо, допустим блядь. Мне нравится его философия как языка, охуенно что он работает с данными и всё такое. НО мне пиздецки важна производительность. Допустим я выбираю язык для хоум-прожекта, и мне надо что-то такое же быстрое блядь как понос С++, может даже с возможностью подрочить низкий уровень. Но при этом чтобы было роскошно блядь. Я так понимаю Clojure не особо быстр по сравнению с крестами, раз он у нас от лиспа отходит?
>>1611707Знаток хаскеля плезБольше двух лет использую для скриптопараши с дсл биндами, для реального мира - "Haskell is useless" (c) Кложа давно доказала: практическая часть ФП + развитая экосистема > маняфантазии теоретиков 95% из которых ничего не одупляющие наивные школьники
>>1611714Не, до крестов тут пиздец как далеко конечно. Можешь попробовать раст или окамл, если хочется хотя бы функциональщины. Но там не получится вот этой философии работы с данными, там ты все равно будешь в байтики с типами ебаться.
>>1611714>раз он у нас от лиспа отходитЕсть кстати лиспы для эмбеддед: https://ferret-lang.orgАлсо https://janet-lang.orghttps://urn-lang.com
>>1611730Так я как раз о том, что ничего "простого" в х-ле нет, это как раз пример полностью противоположного кложерскому подхода к проектированию языков
>>1611738Да ёбаный в ротун.Пытался Go выбрать. Но там конечно очень нехватает всяких плюшек связанных с организацией памяти, но я понимаю что тут только одно, либо низкая работа с памятью либо удобные плюшечки с автоматической уборкой говна из памяти но потеря производительности. Может я просто недостаточно глубоко его изучил, и там есть пакеты которые помогают в DoD стиле код хуячить, не знаю.Ещё пытался в Nim, но сука НАХУЙ пиздец он такой недоделаный, его только рожают. Хотя как по мне это будет заебумба
>>1611739>Алсо https://janet-lang.org>https://urn-lang.comЕба вот это ты вкинул, интересно. Но опять же та же хуйня, что я не уверен как эта еботня будет справляться с моим жгучим желанием начать производительность выдрачивать через кешфрендли код.
>>1611745ГОвнище ненужно. Если ты хочешь именно ебаться в байтики, но при этом иметь современный язык с функциональщиной, то тебе только в раст, других вариантов нет.>>1611749Для кэшфрендли из этих трех только феррет подойдет, имхо. Ну либо опять же забить на скобочки и взять раст.
Еще кстати есть вот такое:https://github.com/carp-lang/CarpЭто лишп с линейными типами, ну то есть как в расте. Но он тоже недоделанный, чисто эксперимент.А вообще, самый обыкновенный Common Lisp тоже позволяет вполне сносно ебаться в байтики и писать производительный код. Но я бы раст взял, чисто из соображений поддержки\комьюнити\етк.
Могу ли я узнать, что благородные доны думают о сием документе-с?https://hal.archives-ouvertes.fr/hal-01349774/document
>>1611836ТАМ ВИРУС, НЕ КАЧАЙТЕ У МЕНЯ ОТ ЭТОЙ ХУЙНИ БРАТ BAH MAIS DONC, voila, oui-oui mon frére, le vin et le fromage, n'est pas?
>>1611851Ну тут спорно кстати, потому что когда ты в легаси коде копаешься у тебя нет альтернатив как бы будешь ту или иную хуйню использовать. Плюс опять же в производительности ты мало что решаешь. Но если взять те же кресты то да, безусловно язык там перегружен всяким древним говном которое никто не испольщует, но при этом в нём также и новые вещи понемногу появляются, есть много библиотек годных и риск новых и старых. А главное что вся эта нагруженность старыми фичами в общем то не влияет на на код который компилятор будет генерить, поэтому на перформанс опять же не повлияет. Можно спокойно писать просто используя новые фичи и забить на старую хуйню. Но возможно раст в чём то и лучше с++, мне вот интересно что у тего там за кодобаза из библиотек, насколько сложно его мультиплатформить или переносить либы с того же с++
>>1612237Ну в этом есть смысл, если ты уже пишешь на крестах и тебе лень учить полностью новый язык. А если у тебя два эквивалентных в плане обучения стула, то нахера нужны кресты, в чем профит? Они во всех отношениях проигрывают расту, единственное их преимущество - это уже написанный код и уже обученные разработчики.>>1612276Нет, код на жвм быстрее, чем скомпилированные граалем бинарники. Суть грааля в том, чтобы не тащить с собой жвм, а иметь маленький статический бинарник с малым расходом памяти и быстрым запуском.К тому же для того куна проблема не в жвм как таковой, а в том, что там невозможно (в стейбле) управлять лайоутом данных в памяти. Но это в процессе разработки, превьюшные билды вроде уже есть, пусть гуглит все эти ПРОДЖЕКТ ТОР\ОДИН\ВАЛЬХАЛЛА, или как они там называются.>>1612317 Вот можешь глянуть эту презенташку https://www.youtube.com/watch?v=J6fegDQPgps (если я не напутал со ссылкой), ну или просто любые презенташки brian goetz про джаву, он там все это описывает - и как паттерн матчинг добавляют, и как лайоутом структур массивов структур можно будет управлять, и т.п. (если тебе это интересно конечно в контексте джавы и жвм)
>>1612764Какой смысл обсуждать эти борщи, если работы на них все равно не найти? Лучше выучить Спринг, Хайбернейт и сыто жить на зарплату сениора-помидора!
>>1613389Прочитай сикп (или хтдп). Загляни в sicp-тред, там как раз за рекурсии пацаны чотка поясняют.
https://www.unisonweb.org/https://youtu.be/gCWtkvDQ2ZIhttps://blog.datomic.com/2012/10/codeq.htmlhttps://www.youtube.com/watch?v=Kgw9fblSOx4
>>1613389а че их понимать функция вызывает сама себя с новыми входными параметрами, тем более что в кложе чаще юзаешь рекур, которая не рекурсия а джамп/гото.
https://clojure.org/news/2020/02/28/clojure-taphttps://github.com/siftrics/sight-clojurehttps://github.com/ring-clojure/ring/issues/393
>>1620509Clojure - инструмент, который дает возможность писать высокопроизводительные хайлоад сервисы с полностью реюзабельным кодом за считанные часы
>>1620512Забей, старина. На Clojure работы меньше чем на Scala. Ты еще можешь попробовать поискать вакансии в телеграм-канале, но вангую, что там будет полторы вакансии одна из которых во флоктори. Можешь, конечно, попробовать найти работу удаленно на зарубежного заказчика, но туда обычно требуются спецы с многолетним стажем программирования и минимум 3 года на Clojure в бою.
>>1620509Если у тебя такая постановка вопроса (привязка к локации, видимо нет рабочего английского, опыта удаленки на пиндосов и т.п.), то не думаю, что ты найдешь что-то на сабже, увы.
>>1622215>(привязка к локации, видимо нет рабочего английского, опыта удаленки на пиндосов и т.п.)С подобными навыками можно работать Java программистом за 5к грина и не переживать, что тебя погонят с работы и ты не сможешь найти новую, т.к. на кложуре полторы вакансии для помидоров с 10 летним стажем.
>>1622659>кложуристом за 10кВ своих влажных фантазиях, разве что только. Никому кожуристы не нужны. Как собственно и все прочие любители борщей.
>>1622855Кожура такой же борщ как и Скакалка с Хайскиллом. Требует колоссальных вложений сил и времени, а в замен ты получаешь безработицу, возвращение в родительский дом к престарелым родителям и пустой борщ по выходным от старой матери.
>>1622962Мальчик, ты не понял. Тут сидят олды, которые застали старый /зк и знают, что слово борщехлёб значит исключительно хаскелист, а не та хуйня, которую придумали местные нюфани и студентота, в понимании которых борщехлёбским является любой язык, который не позволяет им оперативно пристроить жопу в уютный бадишоп.
>>1623018Сейчас бы наворачивать мамкины борщи, смахивая скупую мужскую слезу и грезя о том, что совсем скоро ты сможешь вкатиться на удаленочку на заморского барина. Только реальность выглядит немного иначе - на борщеязыки нужны синиоры, которые имеют минимум 5-7 лет на борщах и которые писали на этих языках в прод. Все твои никчемные пет-проекты с краулерами и прочими API для каких-нибудь ссаных сервисов - не более чем детская забава, которая к промышленному программированию не имеет абсолютно никакого отношения.
Вы борщехлебы. Лучше бы про рекурсии рассказали на нормальных языках, а вы меня сикп читать отправили.
Кложа на ерлангвм:https://twitter.com/clojerl/status/1242003891736268800"Clojerl 0.6.0 is out!This release includes: - Agents, promises, futures - Performance improvements - Better Erlang behaviour support ... and more!IMPORTANT : This release includes some breaking changes and should be used in conjunction with rebar3_clojerl 0.7.0 "