; Добро пожаловать в очередной тред самого высокооплачиваемого языка в мире! (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 для обучения программированию.
— Что нужно для вкатывания? Знать английский, не быть тупым, иметь опыт программирования.
— Хочу начать изучать программирование, clojure мне подойдет? Лучше сперва возьми PLT Racket и читай http://htdp.org или SICP (хотя можешь попробовать http://maria.cloud/).
— Обязательно знать джаву и жс? На уровне чтения документации.
— Как без классов представлять бизнес-сущности? Используй хэшмапы, namespaced keywords и spec. Не поддавайся искушению создавать рекорды на каждый чих. Все есть данные. IT'S JUST D A T A
— Что по скорости? Зависит от задачи. В среднем - медленнее скалы, быстрее рубипитонов.
— Печатаю элементы последовательности, а они не печатаются, ЧЯДНТ? Ленивость + сайд-эффекты => используй doall или dorun.
>>1610479 (OP) Что там по библиотекам и фреймворкам? Коротко и лаконично? Или опять какие-нибудь монстры на подобии Hibernate или Slick, которые нужно учить месяцами перед тем как начать писать в базу? На сколько плохи IDE для Clojure? Много багов попадается? Или все уже отладили и ничего не тормозит и не глючит, т.е. можно работать? Как оно в принципе по сравнению с какой-нибудь Java или Scala? Чувствуется легкость? Все концепции складываются в единую картину в голове?
>>1610521 >на подобии >монстры Hibernate или Slick >учить месяцами >начать писать в базу >IDE для >Много багов попадается? Или все уже отладили и ничего не тормозит и не глючит, т.е. можно работать? >по сравнению с какой-нибудь Java или Scala? >Чувствуется легкость? >Все концепции складываются в единую картину в голове?
>>1610521 >Что там по библиотекам и фреймворкам? Комьюнити предпочитает библиотеки (do one thing but do it well), что с одной стороны хорошо и концептуально годно, но с другой может заебывать подбирать все это самому. Проблему решают "фреймворки"-шаблоны, которые просто делают скаффолдом подборочку из стабильных поддерживаемых либ с дефолтными настройками.
>Или опять какие-нибудь монстры на подобии Hibernate или Slick, которые нужно учить месяцами перед тем как начать писать в базу? Не, такого нету, как раз ради борьбы с этим все и затевалось. Хотя есть штуки типа http://book.fulcrologic.com - их заебешься изучать, они позиционируются как раз как фулстак-решение для крупных проектов. Но он менее популярен, чем тот же рефрейм, где надо просто прочитать ридми, чтобы разобраться в архитектуре, и все.
>На сколько плохи IDE для Clojure? Многие пользуются интеллиджей, говорят заебись. Очень многие пользуются имаксом, там точно все заебись (я гарантирую это), но если ты не имаксоеб, то нахер тебе это не нужно. Есть плагины под вскод, вим, саблайм и т.п. Есть еще своя ide - http://lighttable.com - но она вроде не поддерживается (ее запилили еще до вскода, вроде это вообще одна из первых айдиишек\рекдаторов этого типа была), там чувак ее запилил, собрал кучу бабла и ушел в закат пилить следующий стартап.
>Или все уже отладили и ничего не тормозит и не глючит, т.е. можно работать? У меня были баги при обновлении тулинга на версию из мастера, просто откатывался назад. В стабильных версиях вроде все норм.
>Как оно в принципе по сравнению с какой-нибудь Java или Scala? Чувствуется легкость? Да.
>Все концепции складываются в единую картину в голове? Да. Но в то же время одна из главных фишек в том, что все механизмы отделены друг от друга. Нужен полиморфизм? Вот пожалуйста. Нужны синтаксические абстракции? Вот пожалуйста. Нужен асинк? Вот подключите библиотеку и пользуйтесь. То есть нет такого, что все механизмы запиханы в одну фичу, и чтобы понять все нюансы, тебе нужно выучить весь язык разом (в отличие от классов, асинк\авейт итп). Все максимально отделено (decomplected). Например ты можешь писать код и вообще даже не знать, как писать макросы, если тебе это в твоем коде не нужно. Или например в одной из версий добавили в язык трансдьюсеры, но при этом тебе необязательно их изучать, если ты ими не хочешь пользоваться, они интегрированы в язык, но в то же время отделены от всех остальных фич, так что если ты их мысленно вырежешь из языка у тебя не вылезет в каких-то неожиданных местах какое-то непонятное поведение или что-то в таком духе.
По сути есть основа - это иммутабельные данные, через которые моделируется предметная область. А все остальное (все фичи языка) - это просто отдельные инструменты, которые берутся по требованию.
Причем благодаря макросам многие из фич языка опять же вынесены в отдельные библиотеки: паттерн-матчинг, асинк, спек и т.п.
>>1611189 >Самый простой и лаконичный ФП язык в истории >Отсутсвие шизопердолинга тайпоабстракций ради тайпоабстракций как в каких-нибудь хаскелях >Как описал анон выше, для полноценного приложения можно использовать любые API/Языковые фишки, которые нравятся >Профайлинг за пару минут копипаста тестируемого кода >JVM
>>1611312 Васян васяныч иди лучше на пары Сформулировать хоть одну претензию к языку как таковому ты видимо не в состоянии Учитывая всю rapid development ориентированость кложи и легким скейлом фп в хайлоад твои пуки о 10 годах коммерческого опыта которые ты сам же высрал и в которые ты сам же поверил выглядят еще смешнее
>>1611279 Самый простой промышленный ФЯ в истории это Erlang. Вот он простой как палка, а кложа со своими трансдюсерами, макроридами, мультиметодами, deftype/defrecord extend/extend-protocol/extend-type reify не такая уж простая.
>>1611381 Простой (simple) - это не когда мало фич и нет нормальных строк, это когда эти фичи друг другу ортогональны (или параллельны, кому какая метафора больше нравится).
Мне нравится картинка на эту тему с какого-то слайда (доставьте, у кого есть): слева - много-много прямых параллельных линий. Вот это как раз simple. Справа - линий вроде бы меньше, но при этом они все переплетены какими-то узлами, все друг с другом пересекаются. Вот это сложно (complex, complected).
Алсо, эрланг (бим) имхо надо рассматривать не как язык, а как платформу, и сравнивать соответственно с jvm. У той же кложи насколько я помню есть реализация для эрланг-вм.
Хорошо, допустим блядь. Мне нравится его философия как языка, охуенно что он работает с данными и всё такое. НО мне пиздецки важна производительность. Допустим я выбираю язык для хоум-прожекта, и мне надо что-то такое же быстрое блядь как понос С++, может даже с возможностью подрочить низкий уровень. Но при этом чтобы было роскошно блядь. Я так понимаю Clojure не особо быстр по сравнению с крестами, раз он у нас от лиспа отходит?
>>1611714 Не, до крестов тут пиздец как далеко конечно. Можешь попробовать раст или окамл, если хочется хотя бы функциональщины. Но там не получится вот этой философии работы с данными, там ты все равно будешь в байтики с типами ебаться.
>>1611730 Так я как раз о том, что ничего "простого" в х-ле нет, это как раз пример полностью противоположного кложерскому подхода к проектированию языков
>>1611738 Да ёбаный в ротун. Пытался Go выбрать. Но там конечно очень нехватает всяких плюшек связанных с организацией памяти, но я понимаю что тут только одно, либо низкая работа с памятью либо удобные плюшечки с автоматической уборкой говна из памяти но потеря производительности. Может я просто недостаточно глубоко его изучил, и там есть пакеты которые помогают в DoD стиле код хуячить, не знаю.
Ещё пытался в Nim, но сука НАХУЙ пиздец он такой недоделаный, его только рожают. Хотя как по мне это будет заебумба
Еба вот это ты вкинул, интересно. Но опять же та же хуйня, что я не уверен как эта еботня будет справляться с моим жгучим желанием начать производительность выдрачивать через кешфрендли код.
>>1611745 ГОвнище ненужно. Если ты хочешь именно ебаться в байтики, но при этом иметь современный язык с функциональщиной, то тебе только в раст, других вариантов нет.
>>1611749 Для кэшфрендли из этих трех только феррет подойдет, имхо. Ну либо опять же забить на скобочки и взять раст.
Это лишп с линейными типами, ну то есть как в расте. Но он тоже недоделанный, чисто эксперимент.
А вообще, самый обыкновенный Common Lisp тоже позволяет вполне сносно ебаться в байтики и писать производительный код. Но я бы раст взял, чисто из соображений поддержки\комьюнити\етк.
>>1611851 Ну тут спорно кстати, потому что когда ты в легаси коде копаешься у тебя нет альтернатив как бы будешь ту или иную хуйню использовать. Плюс опять же в производительности ты мало что решаешь. Но если взять те же кресты то да, безусловно язык там перегружен всяким древним говном которое никто не испольщует, но при этом в нём также и новые вещи понемногу появляются, есть много библиотек годных и риск новых и старых. А главное что вся эта нагруженность старыми фичами в общем то не влияет на на код который компилятор будет генерить, поэтому на перформанс опять же не повлияет. Можно спокойно писать просто используя новые фичи и забить на старую хуйню. Но возможно раст в чём то и лучше с++, мне вот интересно что у тего там за кодобаза из библиотек, насколько сложно его мультиплатформить или переносить либы с того же с++
>>1612237 Ну в этом есть смысл, если ты уже пишешь на крестах и тебе лень учить полностью новый язык. А если у тебя два эквивалентных в плане обучения стула, то нахера нужны кресты, в чем профит? Они во всех отношениях проигрывают расту, единственное их преимущество - это уже написанный код и уже обученные разработчики.
>>1612276 Нет, код на жвм быстрее, чем скомпилированные граалем бинарники. Суть грааля в том, чтобы не тащить с собой жвм, а иметь маленький статический бинарник с малым расходом памяти и быстрым запуском.
К тому же для того куна проблема не в жвм как таковой, а в том, что там невозможно (в стейбле) управлять лайоутом данных в памяти. Но это в процессе разработки, превьюшные билды вроде уже есть, пусть гуглит все эти ПРОДЖЕКТ ТОР\ОДИН\ВАЛЬХАЛЛА, или как они там называются.
>>1612317 Вот можешь глянуть эту презенташку https://www.youtube.com/watch?v=J6fegDQPgps (если я не напутал со ссылкой), ну или просто любые презенташки brian goetz про джаву, он там все это описывает - и как паттерн матчинг добавляют, и как лайоутом структур массивов структур можно будет управлять, и т.п. (если тебе это интересно конечно в контексте джавы и жвм)
>>1612764 Какой смысл обсуждать эти борщи, если работы на них все равно не найти? Лучше выучить Спринг, Хайбернейт и сыто жить на зарплату сениора-помидора!
>>1613389 а че их понимать функция вызывает сама себя с новыми входными параметрами, тем более что в кложе чаще юзаешь рекур, которая не рекурсия а джамп/гото.
>>1620509 Clojure - инструмент, который дает возможность писать высокопроизводительные хайлоад сервисы с полностью реюзабельным кодом за считанные часы
>>1620512 Забей, старина. На Clojure работы меньше чем на Scala. Ты еще можешь попробовать поискать вакансии в телеграм-канале, но вангую, что там будет полторы вакансии одна из которых во флоктори. Можешь, конечно, попробовать найти работу удаленно на зарубежного заказчика, но туда обычно требуются спецы с многолетним стажем программирования и минимум 3 года на Clojure в бою.
>>1620509 Если у тебя такая постановка вопроса (привязка к локации, видимо нет рабочего английского, опыта удаленки на пиндосов и т.п.), то не думаю, что ты найдешь что-то на сабже, увы.
>>1622215 >(привязка к локации, видимо нет рабочего английского, опыта удаленки на пиндосов и т.п.) С подобными навыками можно работать Java программистом за 5к грина и не переживать, что тебя погонят с работы и ты не сможешь найти новую, т.к. на кложуре полторы вакансии для помидоров с 10 летним стажем.
>>1622855 Кожура такой же борщ как и Скакалка с Хайскиллом. Требует колоссальных вложений сил и времени, а в замен ты получаешь безработицу, возвращение в родительский дом к престарелым родителям и пустой борщ по выходным от старой матери.
>>1622962 Мальчик, ты не понял. Тут сидят олды, которые застали старый /зк и знают, что слово борщехлёб значит исключительно хаскелист, а не та хуйня, которую придумали местные нюфани и студентота, в понимании которых борщехлёбским является любой язык, который не позволяет им оперативно пристроить жопу в уютный бадишоп.
>>1623018 Сейчас бы наворачивать мамкины борщи, смахивая скупую мужскую слезу и грезя о том, что совсем скоро ты сможешь вкатиться на удаленочку на заморского барина. Только реальность выглядит немного иначе - на борщеязыки нужны синиоры, которые имеют минимум 5-7 лет на борщах и которые писали на этих языках в прод. Все твои никчемные пет-проекты с краулерами и прочими API для каких-нибудь ссаных сервисов - не более чем детская забава, которая к промышленному программированию не имеет абсолютно никакого отношения.
; Добро пожаловать в очередной тред самого высокооплачиваемого языка в мире!
(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-guide
IDE: https://practicalli.github.io/clojure/development-tools/install-guides/
Clojurescript
https://clojurescript.org
https://figwheel.org
https://github.com/Day8/re-frame
Документация
https://cljdoc.org/
https://clojuredocs.org/
https://clojure.org/api/cheatsheet && https://cljs.info/cheatsheet/
https://clojure.org/reference/documentation
http://clojure-doc.org
Задачи
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
Комьюнити
https://ask.clojure.org/
http://clojurians.slack.com/
https://clojureverse.org/
https://www.reddit.com/r/Clojure/
#[email protected]
https://groups.google.com/forum/#!forum/clojure
https://stackoverflow.com/questions/tagged/clojure
Блоги
Еженедельник: https://therepl.net
Все блоги: http://planet.clojure.in
Производительность: http://clojure-goes-fast.com
Оффтоп: http://tonsky.me/
IDE
https://cursive-ide.com
https://docs.cider.mx/cider/index.html
https://github.com/tpope/vim-fireplace || https://github.com/Olical/conjure/
http://lighttable.com
http://nightcoders.net || https://sekao.net/nightcode || https://sekao.net/lightmod
https://shaunlebron.github.io/parinfer/
Библиотеки
https://clojars.org && https://www.clojure-toolbox.com && https://cljdoc.xyz
Web: 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.io
UI (cljs): https://github.com/Day8/re-frame || https://github.com/omcljs/om || https://github.com/tonsky/rum
HTML: https://github.com/weavejester/hiccup || https://github.com/cgrand/enlive
Macros: https://github.com/cgrand/macrovich
Magic: https://github.com/nathanmarz/specter
Spec: https://github.com/bhb/expound && https://github.com/jeaye/orchestra
Test: https://github.com/clojure/test.generative
FAQ
— СКОБКИ!!11
http://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