; Добро пожаловать в очередной тред самого высокооплачиваемого языка в мире! (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://putchar.org/ - реддит здорового человека (автор постит кучу интересных ссылок; алсо, код выложен на гитхабе). http://maria.cloud/ - интерактивная онлайн-IDE для обучения программированию.
— Что нужно для вкатывания? Знать английский, не быть тупым, иметь опыт программирования.
— Хочу начать изучать программирование, clojure мне подойдет? Лучше сперва возьми PLT Racket и читай SICP + http://htdp.org
— Обязательно знать джаву и жс? На уровне чтения документации.
— Как без классов представлять бизнес-сущности? Используй хэшмапы, namespaced keywords и spec. Не поддавайся искушению создавать рекорды на каждый чих. Все есть данные.
— Что по скорости? Зависит от задачи. В среднем - медленнее скалы, быстрее рубипитонов.
— Печатаю элементы последовательности, а они не печатаются, ЧЯДНТ? Ленивость + сайд-эффекты => используй doall или dorun.
>1. Применимость к реальному современному миру. На нём можно писать действительно полезные вещи, и люди это делают. 4. Можно писать интерпрайс (бэкенд walmart'а), можно веб-макакить (putchar.org), можно писать SPA в браузере (precursorapp.com, circleci, maria.cloud, braid.chat), можно писать десктоп (lighttable), можно писать мобильные приложения (status.im), с недавнего времени можно компилять в нативный код через graal. Единственный язык, который реально (а не для галочки) работает на jvm, clr и js платформах. Не подходит для байтоебства и систем, где критично минимальное потребление памяти, поэтому снимаем балл.
>2. Универсальность. 5. Смотри предыдущий пункт.
>3. Технологичекое качество и надёжность получаемых систем. 4. У комьюнити и создателей языка стронг фокус на разбиение разрабатываемой системы на независимые части, декларативное описание связей и датафлоу, минимизацию зависимостей и упрощение ризонинга о поведении системы (слово decomplect даже является эдаким местным мемчиком). Плюс из коробки есть мощная инфраструктура для тестирования (в том числе генеративного, на основе инвариантов) и контрактного программирования. Язык динамически типизированный, поэтому снимаем балл за отсутствие инструментов для формального доказательства свойств программ.
>4. Скорость разработки. 5. Главная фича языка - интерактивная разработка, горячая компиляция (hot reloading) и выполнение кода прямо внутри работающего приложения (в том числе задеплоенного в продакшн, можно подключиться своей ide к серверу и залить хотфикс, включить дебаггер или просто проверить текущее состояние процесса). Вся инфраструктура под это заточено, в комьюнити много инструментов, упрощающих написание reloadable кода. Пожалуй, это главный selling point. Алсо, можно хуяк-хуяк и в продакшн.
>5. Масштабируемость. Насколько легко разобраться, поддерживать, рефакторить и развивать уже имеющуюся кодовую базу. 2-3. Отсутствие статической типизации заставляет разбивать монолитный проект на микроили не очень микросервисы с четко документированными апи впрочем, это в любом случае хорошая идея. Язык относительно молодой, поэтому нет такого количества накопленного опыта проектирования и устоявшихся паттернов, как например в джаве. С другой стороны, минимизация сайд-эффектов, явный датафлоу, декларативная конфигурация зависимостей между модулями - благодаря этому всему разбираться в чужом коде намного проще, чем в ооп-лапше, поэтому в сумме имеем положительную оценку (но есть куда расти).
>6. Простота. Простому языку можно обучить 9 миллионов индусов -2. Индусам придется ломать мышление и перестраиваться на функциональный стиль. Архитектурные паттерны тоже немного не такие (в сравнении с джавой; жс-индусы знакомые с реакт\редукс будут чувствовать себя как дома). С другой стороны, это именно практический, рациональный, инженерный язык, а не академический исследовательский проект, так что теорию категорий и отличия монад от эндофункторов знать не нужно.
>7. Хорошая (и безболезненная) поддержка многопоточности. 5. Пожалуй, лучший язык по части многопоточности. Все стандартные структуры данных потокобезопасны. Из коробки есть compare-and-swap, транзакционная память, агенты (акторы), асинхронщина через го-блоки (csp). Даже если тупо в лоб писать код и не думать о многопоточности вообще, то все равно все будет работать. Язык изначально создавался как раз чтобы решить проблему сложности написания многопоточного кода на жвм.
>8. Трудоустройство: насколько легко найти работу соискателю, который его знает, и насколько легко найти сотрудников в проект, который на нём написан. -1. Найти сотрудников в проект легко. Найти работу трудно (по крайней мере в России). Джуны никому не нужны; обычно предполагается, что если уж ты пишешь на сабже, то ты убергруппенфюрерсеньор. Компенсируется высокими зарплатами (по данным stackoverflow, это язык с самыми высокими зарплатами в мире в 17-18 годах) и удаленкой в Штатах\Европе.
>9. Активное комьюнити. Документация, туториалы, треды на дваче Stack Overflow, митапы, конференции. 3. Комьюнити оче welcoming и активное, в основном тусуется в слаке, на реддите и на clojureverse.org. Много обучающей литературы (в том числе бесплатной), есть интерактивные вводные туториалы, есть видеокурсы (в том числе бесплатные), есть отличные сайты с задачками (4clojure.org, экцерцизм и т.п.). С другой стороны, нет такого количества туториалов и документации, как например для жс, и нет онлайн-курса на MOOC-платформе типа курсеры, как у скалы.
>10. Удобные инструменты разработки. Комфортная IDE, быстрая сборка, понятные сообщения об ошибках, быстрая перезагрузка при изменениях, инструменты для юнит- и прочих тестов. -5--5. Сложный вопрос. С одной стороны - есть поддержка во всех актуальных редакторах\ide; хороший тулинг с поддержкой interactive development везде, от браузера до мобилок; отличная интеграция тулинга с хост-платформами (maven, npm и т.д.), при этом нет зоопарка билд-тулов, как в жс; в целом, пожалуй лучший воркфлоу с точки зрения удобства разработчика. С другой стороны - хитровыебанные сообщения об ошибках с километровыми стектрейсами (вроде как уже исправлено в следующей (еще не зарелизенной) версии, но хз), не совсем тривиальный сетап этого тулинга (хотя и есть специальные ide для нубов по типу "нажал одну кнопку и все работает", но это несерьезно), и в целом некая общая недопиленность в мелочах. По умолчанию как бы предполагается, что разработчик знает, что делает, его не нужно вести за ручку, и он может сам взять напильник и допилить, если ему что-то нужно.
Вердикт: язык для опытных инженеров, которым нужен эффективный инструмент для создания robust продуктов. Область применения: бэкенд с нетривиальной логикой, микросервисы, обработка данных, full-stack SPA с нетривиальным интерфейсом. Сильные стороны: отличный дизайн языка, стабильность и отсутствие breaking changes, превосходная поддержка многопоточности и асинхронности, один язык на сервере и на клиенте, сильное комьюнити, тулинг. Слабые стороны: тулинг, относительно высокий порог вхождения, небольшое число вакансий, отсутствие поддержки со стороны корпораций типа гугла. Стоит ли изучать: нет, если это первый язык или если нужно найти работу через 2 месяца; да, если нет аллергии на динамическую типизацию и хочется подняться на новый уровень.
Простота Лично я вкатился на нее с Питона. Это было сравнительно просто, потому что оба языка типизированы неявно, строго и динамически. Здесь нет сложной системы статических типов, как в той же Скале, что очень упрощает код. Самым сложным было привыкание к синтаксису и к неизменяемым данным.
Вот несколько примеров кода на Питоне и на Кложуре:
print("Hello, World!") (println "Hello, World!")
a, b, c = [1, 2, 3] (let [[a b c] [1 2 3]]) ; после конца let, переменные перестают существовать, в отличие от питона
В последнем примере, можно вместо формы fn написать #(∗ % %), как в Cкале с _.
JVM Язык, как и Скала, хостится на JVM, то есть тебе доступны все Джавовские библиотеки.
Leiningen Отличный сборщик проектов. Описываешь зависимости и настройки через Кложуровские структуры данных (которые напоминают JSON). Собирает, на мой вкус, долговато, но на что нам REPL?
REPL Интерактивный интерпретатор. Многие редакторы/IDE могут подключаться к нему, слать туда код и выводить тебе результат прямо в редактор. Можно лайв-кодить даже веб. Вообще, лисперы предпочитают именно лайв-кодить, а не пересобирать проект после каждого изменения. Изменил функу — можешь перегрузить чисто эту функу, отправив ее в REPL еще раз.
Синтаксис Синтаксис очень простой. Почти везде тебе достаточно пары скобок. Поначалу охуевал с их обилия, но потом привык. С Paredit стало совсем заебись, сейчас юзаю его и в других языках.
Ориентированность на данные В стандартной библиотеке есть множество мелких функций, позволяющих делать с данными что угодно. Язык вообще поощряет тебя, если ты работаешь с тупыми данными (деревьями из списков и словарей). Он под это заточен.
Неизменяемые данные по умолчанию Охуеннейшая фича Кложуры. Можно слать данные в функи, отдавать потокам — делать что хочешь. Исходные данные не изменяются, если ты не обернешь их, например, в атом.
Атомы позволяют синхронизированно изменять данные в нескольких потоках.
Короче, очень трудно выстрелить себе в ногу в многопоточной среде.
Макросы Фича Лиспа. Не имеют ничего общего с текстовыми макросами из C. Позволяют пилить собственный синтаксис, преобразовывая код. Многие стандартные операции реализованы именно через них. То есть, программист находится на том же уровне, что и автор языка, и может расширять язык удобным способом.
Один из самых нужных лично мне макросов — это "->". Позволяет чейнить несколько функций, передавая им нужные параметры. Для этого не нужны "Билдер Паттерны".
>Безработные, поясните по простому что такое функциональное программирование и чем отличается от иного?
Основная идея в том, что в си-подобных языках у тебя состояние неявно размазано по всей программе, поэтому ты его не контролируешь. То же самое, что и с глобальными переменными, короче: у тебя возникает куча неявных неочевидных связей между разными частями программы, из-за чего ее сложнее поддерживать. В функциональщине глобальное состояние и взаимодействие с внешним миром изолируют от бизнес-логики. Алсо, предметную область моделируют с помощью значений. В условной джаве объекты - это по сути старые-добрые указатели на куски памяти, которые смешивают в кучу identity и value. Вот смотри: x = 42. Здесь "икс" - это identity (что такое), а 42 - это value (чему оно равно). Если тебе нужно прибавить к иксу единицу, ты не изменяешь само число 42 - ты просто выкидываешь старое значение и приравниваешь икс к новому значению: x = 42 + 1. То же самое со строками: ты просто пишешь str = "foo" + "bar", выкидываешь старое значение и связываешь identity с новым значением. Но вот когда у тебя есть класс User, и у тебя юзер зашел на сайт и изменил свой адрес, например, то ты зачем-то меняешь само значение вместо того, чтобы привязать identity к новому значению (это как если бы ты менял само число 42 вместо того, чтобы написать x = 42 + 1). Представь, что было бы, если бы ты каждый раз менял само число 42? Вся математика бы постоянно ломалась в неожиданных местах, потому что это был бы глобальный, неконтролируемый эффект (эдакое "дальнодействие"), влияющий на все части математики (то есть твоей программы). А в примере с User ты именно это и делаешь, из-за чего возникает куча низкоуровневых проблем: как проверить, что два юзера равны друг другу (по ссылке или по значению?); как быть уверенным, что изменения в одном куске кода не затронут совершенно другой кусок кода; как сериализовать и восстанавливать состояние; как сделать копию юзера (нужен deep clone и т.п.); как откатить состояние на один шаг назад; наконец, если ты попытаешься в многопоточность, то это будет худший кошмар в твоей жизни (race condition'ы и дедлоки ждут тебя). Неизменяемые данные решают все эти технические проблемы (естественные сравнения на эквивалентность и хэшируемость из коробки, lock-free concurrency, traveling time debugger, etc), попутно облегчая анализ логики твоего кода, потому что интуитивно проще рассуждать в терминах значений (данных), а не кусков памяти и указателей на них.
А вообще, изначально под "функциональным программированием" понимался любой язык со сборщиком мусора и лямбдами (анонимными функциями и функциями высшего порядка). Теперь эти фичи уже перекочевали во все языки (с запозданием на 10-20 лет), и иммутабельность по умолчанию потихоньку тоже перекочевывает в мейнстрим (гугл, например, давным-давно написал свою библиотеку иммутабельных коллекций для джавы вместо стандартной мутабельной; в том же жс реакт и прочее - это реализация идей функционального реактивного программирования, которым лет 15, плюс на современный фронтенд сильно повлияли элм и кложескрипт, и т.д.) Еще через 10-20 лет иммутабельность будет дефолтом во всех прикладных языках, поскольку она делает язык более высокоуровневым.
>Где-то слышал миф, что для общего развития, кроме C/C++ ещё стоит выучить какой-нибудь диалект лиспа. Что это даст?
У лиспов (это семейство языков такое) две основных особенности, общие для всех языков семейства:
1) Гомоиконность. Это значит, что текст программы представлен не тупо потоком символов, как в си, а литеральными структурами данных. JSON видел? Ну вот его еще в 60-ых придумали, лол. И ты пишешь весь код не просто текстом, а структурами данных, как в жсоне. Это позволяет его легко и удобно парсить компьютером и человеком (нет неоднозначностей, все чотка и строго, не нужно запоминать приоритеты операторов и ставить точки с запятой, редактор может за тебя расставлять скобки и т.п.), и, что важнее, - позволяет реализовать мощную и простую систему метапрограммирования. Это когда ты пишешь программу, которая пишет другую программу. В си метапрограммирование ограничено текстовыми макросами, которые (как ты уже знаешь, если писал на си) сосут с проглотом. А тут ты можешь запускать при компиляции любые функции на том же языке, которые принимают и возвращают структуры данных (которые представляют код). Поэтому ты можешь иметь минималистичное ядро языка, а все остальное добавлять в него библиотеками с помощью макросов (в то время как в си тебе нужно менять компилятор для добавления любой фичи). Например, можно добавить систему типов (библиотекой!), можно добавить async\await или каналы и го-блоки, как в go (библиотекой!), можно добавить логическое программирование, и т.п. С метапрограммированием тебе в любом случае придется сталкиваться (к тому же сейчас его пытаются добавить в любой новый язык), и лучше его изучить на хорошем, корректно сделанном языке, чем на костылях типа шаблонов с++.
2) Интерактивность. В си ты меняешь код, компилируешь программу, запускаешь, видишь результат. Повторяешь все заново. В лиспах ты запускаешь программу, потом подключаешься прямо к этой работающей программе и меняешь код внутри нее прямо во время ее работы. Это абсолютно другой (и качественно лучший) воркфлоу, и - опять же - его сейчас везде пихают (пытаются запихать), от unity до жаваскрип-фреймворков. Поскольку это очень трендовая тема, опять же, с ней надо познакомиться. В других языках в силу их ограничений полной интерактивности до сих пор нет.
Алсо, если бы ты спросил лет 10-15 назад, то я бы добавил "функциональное программирование, функции высшего порядка и т.п." - теперь это уже (наконец-то) перекочевало в мейнстрим и трудно представить современный язык без поддержки ФП.
Алсо, если бы ты спросил лет 20-25 назад, то я бы добавил "сборщик мусора, автоматическое управление памятью и т.п." - теперь это уже (слава богу!) перекочевало в мейнстрим и трудно представить современный язык без поддержки какой-либо формы автоматического управления памятью.
>3 класса по вашему проще одной функции? Камон ---- Ты путаешь понятия "простота" (simplicity) и "легкость в изучении, использовании, etc" (easiness). Для обывателя это нормально, но если ты претендуешь на то, чтобы быть разработчиком, тебе нужно разбираться в этих вещах (принципах построения абстракций).
Увеличение простоты обычно ведет к разъединению (decomplection) сущностей. Увеличение легкости, напротив, обычно ведет к агрегации разных сущностей в одну.
Можно привести такую аналогию: отдельные клетки человека проще чем сам человек целиком - согласен? Каждый орган человека состоит из миллионов этих клеток - но это не делает сами эти клетки сложнее. Клетки проще чем орган, который из них состоит (несмотря на то, что их очень много). А сам этот орган (хоть он и один) сложнее этих клеток. При этом взаимодействовать с органом проще, чем с отдельными клетками. Если у тебя сбоит желудок, то ты во большей части случаев 1) поймешь, из-за чего это "пельмешки просроченные зохавал" 2) сможешь выпить таблетку\приложить подорожник и исправить проблему. Если у тебя сбоят клетки, то ты скорее всего сдохнешь от рака. Желудок люди умеют лечить давно, а с отдельными клетками до сих пор до конца не разобрались. Итак, клетки проще, но с ними труднее взаимодействовать; орган сложнее, но с ним проще взаимодействовать.
Простота\сложность - объективная собственная характеристика объекта (в нашем случае - абстракции), его внутренней структуры. Легкость\трудность - субъективная характеристика, которая зависит от того, кто и в приложении к чему ее оценивает (легкость в изучении, легкость в использовании и т.п.).
Ананасы, тен времени со всем зоопарком разбираться, какой фремворк\либу использовать в кложе для бека? Что самое поддерживаемое, что самое богатое по функционалу?
>>1343038 Обновленную шапку не читай @ ссылку в тред кидай :3 Совершенно топовый софтваре стендап кстати, лол, я больше проигрывал наверное только с wat
Как пофиксить емакс, что бы он пересатал открывать новое окно(фрем, хз как правильно), для каждой ошибки? Каждый раз как ексепшен выскакивает, он открывает новое окно для него, потом еще, еще, еще...
Я походу конченый. Не удавалось в емаксе подключиться к реплу (он то страртует M-x cider-jack-in), окно репла открывается, работает, но из файла доступа нет. Поставил спейсмакс, думал может у мой конфиг просто кривой. Репл вообще не стартует, требует lein 2.8.3. Удалил свой репл, скачал скрипт с их страницы, запускаю его which: no lein in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin) О рили? Установочник жалуется, что не установлен пакет, который он устанавливает? ЧТо за херня?
>>1343546 Нихуя не понял. Добавь в profiles.clj: :aliases {"dev" ["trampoline" "repl" ":headless"]} lein dev @ M-x cider-connect
>>1343555 Можно (в крайнем случае можно написать, это пару строчек), но я хз зачем, так что не знаю, есть ли это из коробки. А нахуя тебе это? Я обычно выполняю текущий блок, текущий деф или текущий буфер - как-то даже не приходило в голову выполнять от начала до курсора.
>>1343600 Ну я работаю над файлом, сохраняю, выхожу, на следующий день возвращаюсь, и мне надо выполнить готовую часть кода, а 2-3 функции которые еще не закончены не выполнять. Может оно и вправду нахуй надо, вряд ли такая ситуация часто будет случатся.
>>1343834 >то, что описано в начале называется независимой организацией кода Нет, это называется изоляцией сайд-эффектов.
>и относится к фп настолько же как и к другим видам организации кода. Нет, сайд-эффектфул код от чистого кода строго отделяют именно в фп (по определению).
>любой язык основной логической единицей которого являлась функция Например, си и перл, ок.
>>1342400 (OP) Боже, почему Clojure настолько проще чем Scala? Все просто, логично и самое главное лаконично. Открываешь библиотеку какого-нибудь хуя на гитхабе и сразу можешь читать и понимать код. Попробуй так со скалой, лол. Рич Хикки действительно гений.
>>1343414 Поставил себе люминус пример проекта и охуел, он зависимости выкачивал минут 15, там библиотек в гостевухе больше чем у меня волос на голове. Есть какой-то вкат в бекенд попроще? Хотя бы без mount, я с этой хуйни вообще сгорел.
>>1344965 Так тебе не обязательно их всех использовать то. Да библиотеки там наверняка в основном жаваскриптовые дял cljs, их google closure при компиляции обрежет, оставив только нужные, да и в тех будет только тот код, который задействован в проекте.
>>1344984 так а я ебу что использовать а что нет. Я просто написал lein new lumius gostevuha, и там оно всё завязано. Короче поищу че попроще, чтобы чисто веб-сервер, роутинг и jdbc и встроенный репл. Потом довезу чето для базы и темплейтинга, и только в самом конце ебучие маунты/компоненты, конфигурации и вот это всё.
>>1344983 > А какие профиты вообще с того что ты знаешь несколько языков, к тому же столь мало популярных? В мейнстримных языках больше быдланов, вкатившихся ради бабла и прочих хипстеров. В малопопулярных языках чаще встречаются энтузиасты своего дела, какой-нибудь Васян-вкатывальщик лучше выучит JS или Java, а не Scala/Clojure/Haskell. Понятно что выбор работы у тебя будет меньше, но если ты знаешь несколько таких языков, можно уже что-то повыбирать. Я вот вкатился в Скалу, потому что не нашёл работу на Хаскелле, а потом втянулся.
> Имеет смысл в скалу перекатиться? Откуда? Если с кложуры то я бы наверно искал зарубежную удалёнку, а не перекатывался. Вообще, если тебе главное найти работу - ищи работу на Java, а там глядишь сможешь пересадить всех на кложуру. Если просто из интереса к языкам программирования - конечно стоит, но начать лучше с Хаскелля.
Алсо, поясни, чем тебе mount не понравился? Наоборот он самый легкий и наотъебись, если сравнивать с component и integrant - просто делаешь defstate вместо def и все. Главный минус имхо в том, что работает в кложе и кложескрипте немного по-разному.
>>1345057 > Это похоже на язык программирования инопланетян, ни черта не понятно, этот язык будут использовать три с половиною компаний на критичных участках.
>>1345256 Спасибо. Я не говорю что не нравится, просто надо по одному разбирать, наверное, а не сразу всё кучей.
Алсо, видел такое мнение от людей с пректами на кложе, что они скорее возьмут опытного разработчика и научат кложе, чем возьмут кложе июня. Что скажете, есть шансы вкатиться на кложе куда-то без многолетнего опыта?
>>1345358 М? Нет, не протухли. Вторая ссылка - старая версия на jvm и новая в браузере (последний коммит две недели назад). Третья ссылка - статья с описанием архитектуры. Вы там со своими жс-фреймворками совсем обезумели уже, счет протухания идет на часы?
>>1345878 Шансы-то конечно есть, но вряд ли это будет какая-то вакансия с условного хх.ру, сам понимаешь.
>>1344029 > В функциональщине глобальное состояние и взаимодействие с внешним миром изолируют от бизнес-логики. > Нет, это называется изоляцией сайд-эффектов. > >и относится к фп настолько же как и к другим видам организации кода. > Нет, сайд-эффектфул код от чистого кода строго отделяют именно в фп (по определению).
Изоляция бизнес логики уж точно не специфичное только для фп действие и я определенно говорил про независимую организацию кода, когда бизнес логика является входными данными для не зависящего от нее кода. Не очевидно если речь шла именно про сайд эффекты, однако вспоминая не мало известного Егора - ооп так же можно организовать без сайд эффектов.
Мой кейс лишь в том что это ни коем образом не относится исключительно к фп и потому мне странно почему это описано как одно из отличий.
> отделяют именно в фп (по определению) Вбрось. У разных авторов разные определения.
>>1346695 >Изоляция бизнес логики уж точно не специфичное только для фп действие А изоляция глобального состояния и сайд-эффектов - специфичное.
>я определенно говорил про независимую организацию кода Не понял, мы же пасту обсуждаем, ее же не ты писал. В пасте написано про изоляцию стейта.
>бизнес логика является входными данными для не зависящего от нее кода. Что-то не то, остальной код как раз зависит от бизнес-логики (а бизнес-логика от остального кода не зависит).
>вспоминая не мало известного Егора Ну так он и пишет фпшный код с плохим синтаксисом, лол. На самом деле у него конечно очень своеобразное сочетание обоих подходов - он сам об этом писал, кстати.
>это ни коем образом не относится исключительно к фп и потому мне странно почему это описано как одно из отличий. Ну смотри как это со стороны выглядит: >изоляция состояния - одна из черт фп >>а независимая организация кода свойственна всем парадигмам >ок, но изоляция состояния - одна из черт именно фп >>нет, независимоая организация кода не относится к фп >... Нутыпонел.
>>1346972 > >независимая организация кода свойственна всем парадигмам. Изоляция бизнес логики уж точно не специфичное только для фп действие > А изоляция глобального состояния и сайд-эффектов - специфичное.
Окей, мне казалось что первое подразумевает второе, но наверно я не прав. Мне просто тяжело предоставить кейс в котором у может быть описан независимый код полагающийся на зависимые от бизнес логики стейты и сайдэффекты и конкретно это меня и смутило
>>1347560 Не понял, к чему это ты? Не вижу связи с постом, на который ты отвечаешь. Сама кложа (язык) денег разумеется не приносит - я слабо представляю, как язык может приносить какой-то доход, ну разве что кроме каких-то суперспецифичных областей, где нужны сертифицированные компиляторы со 100% доказательствами корректности и подобная байда. Когнитект зарабатывает консалтингом, разработкой интерпрайса и продажей датомика, насколько мне известно.
>>1342400 (OP) Вот сколько прохожу мимо вашего треда, посоны, и мне все время кажется что на четвертой пикче ОП-поста - СИЛЬНО спившаяся Рипли, которая уже задолбалась жизнью и борьбой с багами чужими. мимо проходил
Общий лиспотред куда-то проебался, поэтому запощщу сюда. Пикрелейтед - моё актуальное лицо, когда прочитал про макрос loop в Common Lisp. Серьёзно, что за нахуй? DSL для циклов с условием в стандарте? Не могли, как в концептуально стройной няшной Scheme сделать - вот тебе TCO, вот тебе named let, и крутись как хочешь. Нет блядь, надо нахуевертить, чтобы как в C++ было, только со скобочками))))))))))
>>1348455 Половина хейтит луп, половина мотает головой и повторяет: "да ну чо епт, да нормас епт, ДСЛ епты ж бля!".
В сабже кстати тоже есть что-то подобное ну не совсем, как бы круче, но и скоуп другой - манипуляции коллекциями, а не просто циклы: https://github.com/nathanmarz/specter - автор дико бугуртил по поводу того, что мол ну я ведь лучше сделал, работает быстрее, кода меньше, хуль вы в core это не пихаете... нутыпонел
>>1348455 Common Lisp -- outdated устаревшее говнецо, чего стоят хотя бы разные неймспейсы функций и переменных. И я читал в свое время On List, да, еще когда Reddit был фан-сайтом Пола Грехема. Алсо, помню Clojure еще в зародыше. Как я проиграл сейчас, увидев, что в его Rationale до сих пор упоминается SISC, который почил в бозе больше 10 лет назад. И че я вам скажу, ребятки. Работа с сырой датой нудна и нескалабильна. Помню, как я охуел после курсов SICP и построения компиляторов на Scheme, когда на продвинутом курсе построения языков решил реализовать набор интерпретаторов на жабке. Как все просто оказалось-то с нормальным ООП! Интерпретатор Scheme легче реализовать на жабке, чем на Scheme, такие дела.
>>1348700 > Интерпретатор Scheme легче реализовать на жабке, чем на Scheme, такие дела. Позволь с тобой не согласиться. Интерпретатор (или компилятор) простого, без выкрутасов подмножества Scheme на Scheme помещается в один экран. ООП - не панацея all heil closures, ну и в идее написания интерпретатора/компилятора на языке, им же обрабатываемом, есть что-то невыразимо фундаментально правильное (вроде бы в "Гёдель, Эшер, Бах" эта идея мусолится со всех сторон).
>>1348723 >ну и в идее написания интерпретатора/компилятора на языке, им же обрабатываемом, есть что-то невыразимо фундаментально правильное Так появляются языки - DSL для написания интерпретаторов. И языки эти говно для большей части прикладных задач.
>>1348723 Да даже в простом интерпретаторе нужно постоянно парсить дату, а как только тебе нужно добавить что-то нетривиальное типа lazy evaluation, то пиши кранты. А на жабке я чуть оргазм не испытал, когда понял, что можно оверрайдить методы в классе Expression, например.
Кстати, посоны, че-то я не понял, пикрелейтед означает, что кложа сосет? Несмотря на третье тысячелетие? Это, типа, такой убийца Лиспа? Может оно еще и в call/cc не умеет?
>>1348700 >чего стоят хотя бы разные неймспейсы функций и переменных. В этом нет ничего устаревшего, это просто две разных опции. На самом деле, это даже удобно, потому что в лисп-1 (в частности в кложе) часто локальные переменные затеняют функции из core (первый пример, что приходит на ум - name). Но да, лисп-1 концептуально гораздо более логичен, конечно, поэтому я предпочитаю его.
>Интерпретатор Scheme легче реализовать на жабке, чем на Scheme, такие дела. Это неправда ложь, пиздежь и провокация хотя бы потому, что в scheme у тебя уже реализованы функции парсинга секспов, так что тебе элементарно нужно меньше реализовывать. Ну и да, простой интерпретатор - это полтора десятка строчек, помещается на один экран. На руби\схеме\питоне он будет проще и короче, чем на джаве, просто в силу специфики предназначения этих языков.
>>1348748 >А на жабке я чуть оргазм не испытал, когда понял, что можно оверрайдить методы в классе Expression, например. Гхм, ну... slowpoke.png
>>1348753 Ну не в этом суть, речь о том, что парсинг даты подходит лишь для простых задач. А для простых задач есть Питон! Который тоже не умеет в tail recursion, как и кложа — см. пикрелейтед.
>>1348748 > call/cc Scheme, мне, конечно, нравится как эта няша вообще может кому-то не нравиться?, но call/cc - это, кмк, самая ёбнутая её фича. Понятно, конечно, что мощща, все дела, что всю муть типа try/catch, unwind-protect и прочего можно реализовать поверх call/cc, но всё равно такое.
>>1348754 > Ну не в этом суть, речь о том, что парсинг даты подходит лишь для простых задач. Ну да, для сложных задач есть макросы которых, естественно, в гвидобейсике нет. Что не так-то?
Алсо, питон - это такая кривая пародия на Scheme с нескучным синтаксисом, это я говорю как человек, пишущий на этом говне года с двенадцатого и преподающий эту хуйню за деньги.
>>1348755 >но call/cc - это, кмк, самая ёбнутая её фича Это потому что ты не умеешь ее готовить. Мы через нее реализовывали co-routines, например. И да, лучше язык с сильными фичами в ядре, поверх которых можно реализовать все остальное, чем нагромождение хаков в том же ядре. Факт, что хорошие интерпретаторы Scheme нормально и эффективно все реализовывали, тот же SISC, например.
>>1348756 >Алсо, питон - это такая кривая пародия на Scheme с нескучным синтаксисом, это я говорю как человек, пишущий на этом говне года с двенадцатого и преподающий эту хуйню за деньги. Вот нинада, нинада грязи. В третьем Питоне даже nonlocal есть для любителей SICP и курс тоже есть, и дизайн в нем заебись, весь такой математический, чего стоит хотя бы униформный подход к атрибутам класса — хочешь, static, хочешь, не static. Я преподавал SICP на Питоне за бабло, лол, и это гораздо приятнее, чем Scheme.
>>1348751 >но все равно отвечу на платину: https://clojure.org/about/functional_programming#_recursive_looping И таки да, объясните тупому, позязя, почему вот это вот: >Since Clojure uses the Java calling conventions, it cannot, and does not, make the same tail call optimization guarantees. Instead, it provides the recur special operator, which does constant-space recursive looping by rebinding and jumping to the nearest enclosing loop or function frame. не является "я ниасилил, хнык хнык"? Зачем ему recur для tail call optimization внутри функции, и при чем здесь Java calling conventions, если это все исключительно внутри функции происходит? И почему SISC осилил полный tail recursion в JVM, а Clojure — ниасилил?
>>1348761 Ну фломастеры, да. Я не могу всерьёз воспринимать язык без TCO, сорь. Про макросы вообще молчу, таких же макросов, как в лиспах, вроде больше ни в одном языке нет.
> весь такой математический Да брось. Фортран математический. Питон простой, как тяпка, из-за этого в него в начале 10-х хлынули толпы вкатывальщиков, а дух старой школы, unix-хакеры, все дела, соответственно, ушёл.
>>1348767 > И почему SISC осилил полный tail recursion в JVM, а Clojure — ниасилил? Кстати, присоединюсь к вопросу. Как я помню из упражнения 5.52 в SICP, хвостовая рекурсия не особо сложно реализуется, просто пара лишних мозговых трюков при компиляции вызова функции.
В прочем, вы уже сретесь. >>1348747 >Не понял, о чём ты. Приведи пример?.. Короче, есть язык питон. Универсальный язык для людей. На котором имплементируются мощные вещи типа theano и tensorflow. И если присмотреться к нему, то у него важные куски типа парсера написаны на си.
А есть языки, при рассмотрении фич которых под микроскопом можно понять, что автор языка интересны языки и средства для написания языков. Он и язык свой рассматривает как штуку, на которой он напишет компилятор языка. И все фичи ориентированны на это. В итоге получается такой язык для написания DSL, на котором обыкновенные прикладные задачи писать неудобно.
>>1348770 >Я не могу всерьёз воспринимать язык без TCO, сорь. Про макросы вообще молчу, таких же макросов, как в лиспах, вроде больше ни в одном языке нет. Запрет на хвостовую рекурсию спас язык от сотен гигабайт функциональной лапши. С макросами аналогично. Это прикольные фичи на поиграться, но потом эти игры кому-то поддерживать.
>Фортран математический Ты его видел? То, что на нем много легаси-математики написано не делает его математическим языком, да и сам этот код от старости не стал лучше, типичный инженерный говнокод.
А питон далеко не прост, точнее его простота сложна с точки зрения проектирования. Просто спроектировать неортогональную поебень типа PHP или visual basic'а. Спроектировать питон сложно, даже он получился только с третьего раза и имеет шанс скатиться с уходом фюрера со сцены.
>>1348754 Микросервисы и распределенные архитектуры подходят только для простых задач, мы тебя услышали. Ну вот ей богу, такую хуйню люди несут, когда не разбираются в том, о чем говорят, ну пиздец же просто.
>>1348757 Где теперь sisc и где кложа. Пиздежь ни о чем. ¯\_(ツ)_/¯
>>1348754 >пикрелейтед Анон, а ты не пробовал читать документацию к функциям, которые вызываешь? Ну чтоб не позориться тип. trampoline ожидает thunk с рекурсивным вызовом внутри, а ты написал какую-то хуйню, не имеющую никакого смысла. На этом, думаю, все разговоры о ГЛУБИННОЙ СУТИ языков с тобой можно закончить, ну сам как думаешь? Только честно. (trampoline (fn [x] (fn [] (x x))) (fn [x] (fn [] (x x)))) ну или (trampoline ((fn [x] (fn [] (x x))) (fn [x] (fn [] (x x))))), если хочется просто обернуть вызов как в оригинале
>>1348778 >На котором имплементируются мощные вещи типа theano и tensorflow. Тензорфлоу по факту написан на крестах. Алсо, если уж сравнивать "мощные вещи", то на сабже написаны apache storm, onyx, riemann, neanderthal ну и собственно датомик. Что-то я сходу не назову проектов уровня датомик на питоне . Но в любом случае это довольно глупый и бессмысленный подход к сравнению языков.
>>1348811 >Микросервисы и распределенные архитектуры подходят только для простых задач, мы тебя услышали. Помню точно такие же аргументы 20-летней давности, только тогда это было про применение Лиспа для уберсложных систем заказа билетов и прочей хуиты типа систем символьной алгебры. По факту, это обычно какой-то фанатик в роли CTO пропихивает свои фетиши.
>>1348853 >Помню точно такие же аргументы 20-летней давности, только тогда это было про применение Лиспа для уберсложных систем заказа билетов и прочей хуиты типа систем символьной алгебры. На Лиспе был написан (Полом Грэмом) первый генератор интернет магазинов Viaweb, типа нынешних Ecwid, InSales, и прочих. Это было в 90-х, когда динамических сайтов было по пальцам пересчитать. Потом его купил Yahoo, и благодаря этой продаже Пол Грэм стал миллионером.
Да и если уж на то пошло, символьная алгебра с экспертными системами были не 20, а 40 лет назад (в 80-ых), и тогда для нее лишп как раз успешно применялся (пока весь этот пузырь символьных вычислений не крякнулся).
>>1348857 Ну да, если иногда включать голову и читать документацию, то все вдруг начинает работать, кек. А если ничего из перечисленного не получается, то возможно и вправду будет "интерпретатор на жабке легче написать, чем на scheme". ¯\_(ツ)_/¯
>>1348863 >На Лиспе был написан (Полом Грэмом) первый генератор интернет магазинов Viaweb, типа нынешних Ecwid, InSales, и прочих Типичное "какой-то фанатик в роли CTO пропихивает свои фетиши." >Потом его купил Yahoo, И все переписал >и благодаря этой продаже Пол Грэм стал миллионером. Во время доткомбума. В биткоины он не вложился случайно?
>>1348879 Он крякнулся. Тогда это было примерно то же, что нейронки сейчас, панацея от всего. А вольфрам.жпг молодец, единственный нормальный лисп в этом мире.
>>1348878 >Типичное "какой-то фанатик в роли CTO пропихивает свои фетиши." Ты фанатик чепухи. Ты даже не можешь объяснить, что ты хочешь донести своими набросами. Ты как раз таки фанатик, только непонятно чего. А Грэм успешный программист и бизнесмен. Он создал множество успешных проектов. И коммерчески успешных и технически. Создал язык программирования. Написал несколько книг. Множество статей.
>>1348878 >И все переписал Это не имеет никакого значения. Когда Грэм вел проект, Лисп позволил им быть успешнее конкурентов. Они были первопроходцами в своем деле. И были такие же фанатики как и ты, которые хейтили их подход к разработке, к выбору инструментов. Но они не смотрели на таких, а просто делали дело.
>>1348878 >Во время доткомбума. Он с компаньеном продал рабочий продукт, который и после них работал, и если не ошибаюсь до сих пор существует под другим уже названием.
В общем я тебя понял. Ты обычный завистливый самодовольный хейтер. Сам ничего подобного не сделал. Завидуй молча.
>>1348872 Ну, начнем с того, что ты пиздоглазое мудило что я этот Clojure поставил на поиграться за 5 минут до того, в отличие от Scheme, на котором я компиляторы писал, например, а первые версии кложы я успел забыть уже ты тогда еще под стол пешком ходил, щенок ебаный. И ((lambda (x) (x x)) (lambda (x) (x x))) — первая вещь, которую я пробую на очередном убийце Лишпа, особенно если оно на JVM, потому что забавно читать неосиляторские отмазки, умея в байткод, например. Так что все с вашей кложей ясно, потому что поиграться гораздо комфортнее и правильнее будет с Chez Scheme, если хардкорно, или в DrRacket, если лениво. А норм проекты писать лучше на C++, жабке даже не Скале и Питончике, такие дела.
>>1348950 >Он создал множество успешных проектов. И коммерчески успешных и технически. Это ты про Reddit. Ньюфаги не знают, но Реддит полностью провалился, как технический проект, потому что задумывался, как recommendation system для новостей, где каждый получает индивидуальную подборку под себя, а в результате получился более вылизанный Digg. И все потому, что гений Грэм выбрал для проекта дебилов-студентов, которые даже пароли хранили в открытом виде.
>Множество статей. О да, графоман, прямо как Joel. И ценность статей аналогичная.
>Когда Грэм вел проект, Лисп позволил им быть успешнее конкурентов. О, как. Объясняю малышне, как это работает на самом деле(тм). Новомодные языки, как та же кложа сейчас, позволяют набирать в сплоченную команду оче умных увлеченных программистов-рубистов (в основном свежевыпеченных студентов, но не только), которые к тому же никуда не уйдут потом, потому что ниша оче узкая. Именно это позволяет быть успешнее конкурентов, а не язык.
>Сам ничего подобного не сделал. Завидуй молча. Лол, совсем недавно полсосача дрочили вприсядку на мои проекты. Впрочем, взгляни хотя бы на диаграмку своего гуры, щенок.
>>1349039 >О, как. Объясняю малышне, как это работает на самом деле (тм). Новомодные языки, как та же кложа сейчас, позволяют набирать в сплоченную команду оче умных увлеченных программистов-рубистов (в основном свежевыпеченных студентов, но не только), которые к тому же никуда не уйдут потом, потому что ниша оче узкая. Ну предположим. > Именно это позволяет быть успешнее конкурентов, а не язык. > а не язык А тут логическая ошибка, даже если "новомодные языки" привлекают умных программистов, то из этого не следует, что язык из-за своих свойств не увеличивает конкурентоспособность.
>>1349039 >Реддит полностью провалился Пфф, пешы есчо, я записываю. Реддит обогнал фэйсбук по посещаемости в США, заняв 3-е место в США, и 6-е в мире по посещаемости.
Посещаемость реддита сотни миллионов человек в месяц. Оценочная стоимость около 2-х миллиардов долларов.
Вообще то я имел ввиду Y Combinator, его создал Грэм. Но и в создании Reddit поучаствовал. Проинвестировал его, и направлял как ты говоришь "студентов" в нужное русло, чтобы они смогли выпустить рабочую версию продукта.
На этом ликбез закончен. Смотри не захлебнись желчью.
>>1349039 Дура, они писали на Common Lisp. При чем тут Clojure. И Clojure это Лисп, поэтому никак не может быть "новомодным". Лиспам уже больше 50-ти лет.
>>1349029 >я этот Clojure поставил на поиграться за 5 минут до того Да все с тобой уже ясно, можешь не оправдываться. Впрочем, ты и сам наверняка понимаешь, как это со стороны выглядит.
>>1349072 Лулз, какой же ты тупой неудевительно, так как являешься адептом некроязыков. Перечитай мой пост еще раз. Какая разница, кого там Реддит обогнал по посещаемости? Когда он создавался, и Грэм и фаундеры вопили о том, что он кардинально отличается от Дигга, но скачок в популярности состоялся лишь тогда, когда Дигг начал загибаться. Если бы Дигг не загнулся, о Реддите все уже давно забыли бы.
>>1349110 >Если бы Дигг не загнулся, о Реддите все уже давно забыли бы. Совковая логика. Нет никаких если. Ты не умеешь заглядывать в будущее, и знать что было бы если бы произошло "если". Как известно, если бы у бабушки был... Так что оставь свои манявры кому-нибудь другому. То что ты говоришь это детский лепет.
>>1349113 Снова дура... Там написано, что успех был благодаря "новомодным языкам" наподобие Clojure. Дура, повторяю, они не писали на Clojure, и они не писали на "новомодном языке". Они писали на том, что школота называет "говном мамонта", "хуйней без задач", и тому подобными эпитетами. Как оказалось, такое говно позволяет писать проекты любой сложности в максимально сжатые сроки, и при этом иметь удобно поддерживаемый продукт, а не софт на выброс.
>>1349125 >Если ты такой умный, то где тваё бабло? С таким подходом пиздуй в тред про пехопе, маня.
>>1349128 Аналогично, речь о технологических преимуществах лишперов, а не о бабле. Я хорошо помню развитие Реддита, долгое время это было обычное сектантское дрочерство на лишп/либертариантство/атеизм, с эпическими проебами, как когда у них увели базу данны с cleartext-паролями. Фаундеры там были истерички типа Скотта Ааронсона. С точки зрения технологии там нет ничего интересного вообще, они тупо скопипастили Дигг, а изначальную идею ниасилили.
>>1349133 Лол, Грэм быстро начал пилить свой язык, и книжку про макросы он просто так написал.
>Как оказалось, такое говно позволяет писать проекты любой сложности в максимально сжатые сроки, и при этом иметь удобно поддерживаемый продукт Лол, а ты это конечно пишешь с позиции опытного студента-иксперда, поддерживавшего проекты аж из трех файлов?
>>1349137 >>1349137 >Я хорошо помню развитие Реддита Опять обосрался. Речь была про Viaweb. Есть статья про него, называется "Lisp: побеждая посредственность".
Этот проект сделал Грэма миллионером. Когда разрабатывали Reddit он уже был верчурным инвестором, а не стартапером или разрабом. В любом случае Reddit стал одним из успешнейших веб-проектов за всю историю.
>>1349137 >Я хорошо помню развитие Реддита, долгое время это было обычное сектантское дрочерство на лишп/либертариантство/атеизм, с эпическими проебами, как когда у них увели базу данны с cleartext-паролями. Что ты несешь дура. Тебе тогда еще сопли подтирали. Воспоминальщик хренов.
>>1349193 А что обсуждать, кложу? Кложа, это такое говно, чтобы опердени писать. Да, писать без омерзения, в отличии от жавки. Но только вот интересным языком она от этого не становится. Вот Common Lisp, в отличии от, интересный, поэтому и срёмся.
>>1349235 Если кто-то набрасывает, то почему бы не натыкать его носом. Я привел голые факты. От себя ничего не придумал. Нужно уметь доказывать свою точку зрения. Не просто говном кидаться, а делать это последовательно, стройно, методично. Этот навык очень полезен в жизни.
>>1349927 Есть, stalin Джеффри Сискинда. Заброшен в 2006, но до сих пор в бенчмарках по быстродействию не даёт за щёку только Chez, да и то только потому, что поддерживает только R4RS, и больше половины бенчмарков на нём тупо не запускаются.
>>1349927 Нет Chez лучше всех, там куча инноваций, которые долгое время были коммерчески закрыты. И вообще, лучшие реализации Scheme пришли из универа Индианы, это неспроста — тот же SISC, автор которого написал создал RabbitMQ для кложы, например. У меня лектор по построению компиляторов и по функциональщине тоже из Индианы был.
>>1350062 >Это что такое? Опиши ее, пожалуйста. Ты не знаешь что такое семантика? В двух словах я бы называл семантику Лиспа как Лямбда-исчисление в виде S-выражений.
>>1350082 С чего это вдруг? БНФ как я понял использовалась в ранних версиях Лиспа. Сейчас повсеместно прижился другой синтаксис. Но семантика осталась прежней.
>>1350065 >а анон, ты слился уже, причем в двух разных дискуссиях Ты хочешь сказать, что этот ИТТ тхреад не состоит из семенов студентоты без опыта чуть менее, чем полностью? Аргументы-то про кложу для риал-ворлд, это примерно как Генту в дата центрах.
>>1350097 Ну с того, что он не имеет практически ничего общего с лямбда-исчислением. Да и вообще, утверждение вида "семантика х - это y в виде s-expr'ов", ну оно некорректное, потому что секспры - это же синтаксис, а не семантика.
Кстати, в ранних версиях Лиспа (именно Лиспа, не семейства, а конкретного языка от Маккарти) вроде использовались f-expr'ы, но я уже не помню деталей.
По-моему все-таки лиспы - это про синтаксис и некоторые вытекающие из этого особенности. Есть си-подобные языки, есть лиспообразные. В лиспах мы читаем поток символов и получаем структуру данных, которую можем потом ворочать макросами. В си-подобных мы ебемся в фигурные скобки. Плюс еще репл, но это неспецифично для лиспов, репл в форте и смолтоке тоже есть. Ну и еще важно не путать лиспы как семейство и Лисп как язык, который построил Джек придумал Джон.
>>1350105 Я не знаю, из кого там что состоит, я не телепат. Я просто читаю тред и вижу то, о чем я написал в прошлом посте. Вот и сейчас ты продолжаешь то же самое (по-моему совершенно зря, но дело хозяйское).
>>1350126 >секспры - это же синтаксис, а не семантика S-выражения это прежде всего структура данных. Может записываться по разному. В БНФ синтаксисе или по другому.
>>1350126 >не имеет практически ничего общего с лямбда-исчислением Как это не имеет. Лисп основан на математических моделях таких как теория рекурсивных функций, Лямбда-исчисление, Комбинаторная логика. Все это почти что одно и тоже.
>>1350126 >Есть си-подобные языки, есть лиспообразные. В лиспах мы читаем поток символов и получаем структуру данных, которую можем потом ворочать макросами. В си-подобных мы ебемся в фигурные скобки. Ты говоришь о синтаксисе, а не о семантике. JS хоть и имеет Си-подобный синтаксис, но также имеет в основе Лямбда-исчисление, которое не про синтаксис. Его легко можно использовать как язык подобный Лямбда-исчислению, так как в нем есть функции первого класса и высшего порядка. В ES6 синтаксис функций сделали еще более приближенным к синтаксису ЛИ.
Посмотри как выглядят выражения в синтаксисе Лямбда-исчисления и в синтаксисе JS. Это почти одно и тоже.
>>1350204 >S-выражения это прежде всего структура данных. Ну вот википедия: In computing, s-expressions, sexprs or sexps (for "symbolic expression") are a notation for nested list (tree-structured) data - википедиоры опять все перепутали? Вот сам маккарти: http://www-formal.stanford.edu/jmc/recursive/node3.html
>В БНФ синтаксисе или по другому. Блядь, какой еще бнф синтаксис вообще? БНФ - система записи кс-грамматики, при чем они тут?
>Как это не имеет. Ну открой PCL или ansi cl и почитай.
>JS хоть и имеет Си-подобный синтаксис, но также имеет в основе Лямбда-исчисление Блядь, жс имеет в основе императивную динамикодрисню, на которую сбоку прилепили лямбды. Ты уже совсем хуйню какую-то пишешь. Х-ль имеет в основе лямду (не простую, а систем ф), а жс и кл имеют к ней такое же отношение, как и с++. Иди смотри https://en.wikipedia.org/wiki/Lambda_cube
>Его легко можно использовать как язык подобный Лямбда-исчислению С++ тоже можно, давай теперь говорить, что лямбда является формальной моделью крестов. Ну хуйня короче, разговор ни о чем.
Кончайте срач, кложа не манна небесная, все знают, а за лиспы трепаться делайте свой тред и трепитесь там. Я вам даже шапку скину, если сами не найдете.
>>1351328 У Reason есть поддержка крупного вендора. У ClojureScript такого нет. Экосистема CljS сильно размазана по полотну, нет целостности, так как нет вендора и соответственно вектора развития.
>>1351412 >У Reason есть поддержка крупного вендора. Ризон - это просто нескучный синтаксис для окамла. Окамлом плотно занимается джейнстрит, хз насколько он крупный по сравнению с когнитектом.
>Экосистема CljS сильно размазана по полотну, нет целостности Ты какую-то хуйню несешь, если честно, нафига спорить, если не шаришь в теме. Ты пришел по делу спросить или тупо срач устроить? Если тебе нужно прямо сейчас сесть и фигачить приложения в продакшн, то клжс для этого отлично подходит (и сравнивать его надо с жс и тайпскриптом, а не с ризоном), ибо есть относительно зрелая инфраструктура. Если тебе просто поиграться с функциональным языком, который может в компиляцию в жс, то я бы на твоем месте вообще взял чистый окамл, без надстройки от фб. С другой стороны, ризон удобнее в плане того, что любая жс-макака может одной командой его установить, это хорошо. С другой другой стороны, с окамлом у тебя есть опам и все, а с ризоном у тебя сразу же вагон билдтулов, половина из которых из жс, а половина в пермаментной альфе. Ну тут хуй знает, шило на мыло, но я бы все равно склонялся в сторону чистого окамла.
>>1351546 >Ризон - это просто нескучный синтаксис для окамла. На выходе JS как в случае с CljS.
>>1351546 >Окамлом плотно занимается джейнстрит Facebook вообще то.
>>1351546 >ибо есть относительно зрелая инфраструктура Вот с этим я и не согласен. Тулинг хреновый. Все размазано. Компилятором пользоваться неудобно. Поэтому запилили несколько разных оберток тоже не очень хорошего качества. Сами создателя языка тупо забили на тулинг. Для Clojure даже нет нативных пакетов под линукс.
Несколько оберток для реакта, непонятно зачем столько. Походу они все хреновые, раз постоянно появляются новые. Давно слежу за Clojure & ClojureScript, и вижу что за все время экосистема не стала лучше. Она загнивает. Экосистема Окамла (не Reason) намного превосходит. Все четко, все автоматизировано. В Clojure весь тулинг через зад сделан.
>>1351571 Если язык(два) с одним единственным инструментом по сути(ляйн) для тебя это >Все размазано , то что для тебя туллинг в чисто js, где webpack, bable, npm, bower и еще 2 или 3 тулзы, это дэфолт, обязательный для каждого хелло-ворлда? >Несколько оберток для реакта, непонятно зачем столько Потому что библиотеки пилет комьюнити? Я могу еще одну обертку написать, или даже две, сам язые от этого станет хуже? Опять таки, в самом js сотни и тысячи фреймворков, это минус что ли?
>>1351546 Сайт Reason переведен на русский. Это подтверждает, что проект поддерживает крупный вендор, который заботится о пользователях. Не забивает болт на разработку. В противоположность этому, экосистема Clojure похожа на российскую деревню в глубинке. Уныние и разруха. Никто не хочет ничем заниматься и ничего менять.
>>1351579 >Кложа плохо, reason хорощо >>1351192 >ReasonML vs ClojureScript? Ну там что за вопросы? Тебе нужно одобрение двача? Одобряем-с, юзай себе reason на здоровье
>>1351578 >ляйн Еще есть deps cli, который почему то появился только в прошлом году! через 12 лет после появления языка! Это говорит о том, что разработчикам похер на все. Они сидят в своем болоте, и думают что всем комфортно сидеть вместе с ними. Вся экосистема Clojure протухла. Хотя нет, она изначально была такой.
>>1351578 >где webpack, bable, npm, bower и еще 2 или 3 тулзы, это дэфолт Все это юзать не обязательно. Если нет задачи использовать ES8/9/10, то babel можно уже не юзать. NPM нормально решает свои задачи, и это нативный инструмент, а lein левая штука. В JS экосистема отточена. Это раньше было все плохо. Сейчас есть все что нужно, и все работает так как нужно.
>>1351578 >Потому что библиотеки пилет комьюнити? Я могу еще одну обертку написать, или даже две, сам язые от этого станет хуже? Опять таки, в самом js сотни и тысячи фреймворков, это минус что ли? Когда там ring обновляли? Последний релиз 28 октября прошлого года. В сообществе Clojure нет вектора развития. Поэтому я говорю что все размазано. Все либы пишутся непонятно кем и непонятно как.
>>1351578 >Опять таки, в самом js сотни и тысячи фреймворков, это минус что ли? Не сотни и не тысячи. Для фронта и бэка по несколько штук. Но все они имеют четкий вектор развития, свою философию, поддержку, выполняют свою определенную задачу. В Clojure и близко нет библиотеки с такой же поддержкой. Половина либ тупо не документирована.
>>1351584 >то раньше было все плохо. Сейчас есть все что нужно, и все работает так как нужно. Стало быть, это от хорошей жизни появлются всякие ризоны и слжсы, по 3 новых либы и фремворку каждый день, те самые >ES8/9/10, typescript и еще, еще, еще... Да кложа сырая, юзай ризон, в чем проблема? В любом случае, любое говно лучше чем js, переход на что то другое, это путь в одну сторону, обратно уже не возвращаются.
>>1351590 JS очень приятный язык, с отличной экосистемой. Мне просто хочется чего то нового. Мне нравятся лиспы, но блин, в Clojure реально хреново с экосистемой. Сам язык хорош, но на все остальное забили болт. Печально.
>>1351571 >На выходе JS как в случае с CljS. Блядь, ты даже ридми у него не осилил прочитать, ну анон. На выходе жс у окамла (баклскрипт). Ризон - это просто нескучный синтаксис для него. Иди ртфм.
>Facebook вообще то. Джейнстрит, см. выше. Гугли, читай.
>Все размазано. Что это значит? Я не понимаю, что такое "размазано", у тебя какая-то своя, особая уличная терминология, лол.
>Компилятором пользоваться неудобно. Поэтому запилили несколько разных оберток Это примерно как говорить "v8 пользоваться неудобно, поэтому запилили npm", что-то из этой же серии. Ты по-моему путаешь компиляторы с системами сборки\пакадж менеджерами.
>Для Clojure даже нет нативных пакетов под линукс. Эм, так она как бы на жвм работает, какие еще "нативные пакеты"?
>Несколько оберток для реакта, непонятно зачем столько. А зачем столько фреймворков для жаваскрипта?))0) Ну анон, смешно же такие вопросы задавать. В клжс их, кстати, всего 3 штуки.
>Экосистема Окамла (не Reason) намного превосходит. Все четко, все автоматизировано. В Clojure весь тулинг через зад сделан. Ну анон, учитывая, что ты путаешь ризон и окамл, и не можешь привести ни одной конкретной проблемы (кроме "все размазано", лол), возникает ощущение, что ты ни с тем ни с другим не работал и просто пришел сюда троллить, уж извини за прямоту.
>>1351577 Ну так отличие в том, что фейсбуку положить хуй на ризон, у них просто была отдельная команда, которая занималась разработкой их компилятора для пхп (на котором написан фб), они работали на окамле и они же потом запилили ризон. Сам фейсбук использует жс, а это - сайд-проект отдельной команды. Так вот, отличие в том, что фейсбук может завтра взять и прекратить им заниматься (как например гугл взял и выкинул первый дарт, ну и десятки пользовательских сервисов), потому что он им не приносит никакого дохода, их бизнес на него никак не завязан. А тот же когнитект не может выбросить кложу, потому что у них все продукты на ней написаны, весь бизнес в итоге на нее завязан, и они полюбому будут вкладывать в нее деньги, пока все не помрут от старости.
Ну и насчет финансовых ресурсов, я еще раз говорю, посмотри на две странички по ссылкам. На первой - секси дизайн, красивые логотипы, хороший продажный текст, ну сразу видны финансовые ресурсы корочи, и 10 компаний. На второй - просто на отъебись одним чуваком выложен список в плейнтексте, и 100 компаний, в десять раз больше. В этом и отличие. Я же говорю, тут смотря что тебе надо: либо шашечки, либо ехать.
>>1351584 >Еще есть deps cli, который почему то появился только в прошлом году! через 12 лет после появления языка! И в чем проблема? Ты уже определись: то тебе не нравится, что появился deps cli, то тебе не нравится, что он не появился на 12 лет раньше. А в джаве, питоне и жс до сих пор нет аналога deps cli, атата, какой кошмар, все размазано! В чем конкретно у тебя проблема-то, ты можешь сформулировать?
>Все это юзать не обязательно. Ну если тебе нужно анимацию на жквери к форме прикрутить, тогда необязательно, да))0)
>NPM нормально решает свои задачи, и это нативный инструмент, а lein левая штука. Шта? lein на кложе написан, что значит "левая штука"?
>Когда там ring обновляли? Последний релиз 28 октября прошлого года. Блядь, ну это просто форменный жаваскрипт головного мозга. Если библиотеку не обновляли больше двух часов, значит она уже устарела и надо переходить на что-то более трендовое, ага. Слышали, знаем.
>>1351585 >Но все они имеют четкий вектор развития, свою философию, поддержку, выполняют свою определенную задачу. Ну так и с клжс фреймворками все то же самое. Есть дефолтный выбор (ре-фрейм), есть легковесный (ром), есть хитровыебанно-навороченный (ом). В чем у тебя проблема-то?
>>1351593 >Мне нравятся лиспы Ну потыкай ракетку, например, но по-моему ты просто (повторяюсь) либо троллишь, либо специально ищешь какие-то надуманные отговорки.
>>1351725 Хуета ваш Clojure. Колхоз ебучий. Языку хрен знает сколько лет, а они до сих пор не знают его правильно устанавливать. Мне неохота вот щас дрочиться отвечать на каждое предложение, а хочется, потому что в каждом у тебя написана хуета тупая.
Как бы мне не нравились лиспы, но вынужден признать, что даже экосистема racket намного круче чем в clojure. Clojure это вроде C++ в 90-е начало 2000-х, где не было ничего, ни пакетного менеджера, нихую. Хули тебе объяснять что то если ты ничего не видел, только кукарекаешь. Посмотри на экосистему эликсира, руби, или окамла, и сравни.
>>1351744 >Колхоз ебучий Еще все размазано, да))0)
>Мне неохота вот щас дрочиться отвечать на каждое предложение Просто ты пытаешься в жирнющий троллинг, а на факты тебе ответить нечего.
>Clojure это вроде C++ в 90-е начало 2000-х, где не было ничего, ни пакетного менеджера, нихую Только тут есть пакетный менеджер и все остальное, а так да))00)0
>Посмотри на экосистему эликсира, руби, или окамла, и сравни. Посмотрел. В окамле ад и пиздец по сравнению с сабжем, в эликсире до сих пор все в вечной альфе и релизы периодически поломанные, руби и эликсира нет на клиенте. А так спору нет, если для тебя главный критерий - это наличие документации на русском, лол, то руби для тебя единственный верный выбор а лучше жс а лучше 1с
>>1352365 Потому что нахуя писать типы, если можно не писать? Оверхеда и шума много, а профита хуй да нихуя.
Плюс вот ты затипизировал свою бизнес-логику, а когда полезешь склеивать все с другими либами - их-то авторы клали на них хуй, никому это не надо. В итоге получается, что тайпчекается у тебя та часть кода, которая в идеале и так полностью чистая, прозрачная, тестируемая, ну и от типов там никакого толку.
Ну и тащем-то ~> cljs ClojureScript 1.10.516 cljs.user=> (defn foo [x] (if (string? x) (+ x 1))) WARNING: cljs.core/+, all arguments must be numbers, got [string number] instead at line 1 <cljs repl> #'cljs.user/foo например
>>1353306 Не совсем понял, при чем тут CL - там же нет разделения на конкретные коллекции и последовательности, ну и соответственно соглашения что первые идут первым аргументом, а вторые (если их одна штука в сигнатуре) - последним.
>user=> ([1 2 3 4 5] 0) Это да, но обычно позиционность имеет смысл в контексте трединг-макросов. Я вот как раз на автомате написал (->> чотатам (map хуяк) (iterate хуяк-хуяк) (nth эн)) - и тут понял, что ошибся.
Не, можно конечно скипнуть и взять голову, но блин... к тому же get работает для всего, где nth имеет смысл, для всяких там строк тоже.
>>1353618 > ну и соответственно соглашения что первые идут первым аргументом, а вторые (если их одна штука в сигнатуре) - последним.
В Кложе есть такое соглашение? Не знал.
>Это да, но обычно позиционность имеет смысл в контексте трединг-макросов. Я вот как раз на автомате написал (->> чотатам (map хуяк) (iterate хуяк-хуяк) (nth эн)) - и тут понял, что ошибся. На самом деле, меня лично этот синтаксис (ну, реализация IFn (?) для коллекций и прочего, не суть важно) - раздражает, пропадает лисповая интуиция, что головная форма - это функция, инородно выглядит вообщем.
Меня как раз поэтому и смущает nth, потому что вроде бы логически он в первую очередь нужен именно для последовательностей.
>интуиция, что головная форма - это функция Так ведь она и есть функция, даже чисто с математической точки зрения. Я считаю, что особо усердствовать не надо конечно, иногда читабельней написать с get, а иногда - без него. Ну и всякие штуки типа (map {:from :to} coll) и (some #{:find-this} coll) довольно удобны и естественны.
Плюс есть еще довольно тонкие семантические нюансы, типа если пишешь (:k m), то подразумевается, что m - это не просто рандомная мапа, а какой-то бизнес-энтити, а если (m :k) - то просто мапа, в которой так уж получилось, что ключи - это кейворды. Ну типа а могло бы быть и (m "k") или (m 42). Но по-моему на практике эта грань зачастую слишком тонка, чтобы на нее не забить.
>>1342400 (OP) clojure - это игрушка для бездельников-студентиков. ну или пидорасов, которые кроме трёпа на конференциях для тех же студентиков нихуя ничем не занимаются
работы нет даже если вакансия есть, то по бабкам столько же сколько в жаве
максимум зачем нужна кложа - это потратить хуеву тучу времени (а оно в таком количестве есть только у школьников-студентов) и отрастить чсв. всё, больше ни для чего не годится
это никакой не троллинг, если чё. реально так думаю
>>1355052 > clojure - это игрушка для бездельников-студентиков. > ну или пидорасов, которые кроме трёпа на конференциях для тех > же студентиков нихуя ничем не занимаются
> работы нет > даже если вакансия есть, то по бабкам столько же сколько в жаве > это никакой не троллинг, если чё. реально так думаю
Продолжай так думать, тратя весь рабочий день на еблю с рейсами, дедлоками и обезумевшим стейтом. А я пока напишу очередной ETL или event stream за пару часов, запакую в контейнер и пойду заниматься своими делами, ночью отдам его заказчику, а утром письма о пополнение счета на 200$ и слова благодарности за то, что встало без проблем и работает, как надо.
>>1355091 извини, забыл, что shared mutable state - обязательное условие написания кода на жаве >слова благодарности за то, что встало без проблем и работает, как надо а слова "благодарности" от человека, которому твоё поделие достанется не хочешь выслушать? ты понимаешь, что он тебя будет проклинать за то, что ты решил выебнуться вместо того, чтобы выбрать инструмент, который знает каждый? >ночью отдам его заказчику, а утром письма о пополнение счета на 200$ так ты фрилансер что ли? лол, так ты ничего серьёзного и не писал считай. говорю же - поделка для студентиков естественно, что хеллоуворлды можно и на кложе написать, чтобы своё чсв потешить
>>1355831 Что ты хотел сказать, когда разместил ссылку на твит какого-то хуя с галеры? Как его слова про то, что он запускает проект на макбуке 2010 года, опровергают мой главный тезис о том, что изучение кложи является нерациональной тратой времени?
>>1355861 Мимо-другой-анон Должен заметить, что у тебя суждения просто пиздец. Стань гей шлюхой, нахуя вообще что то учить, если можно больше зарабатывать посасывая хуец 10 минут в день?
>>1355929 Ну ты кроме как пука ничё не сказал. Ты апеллируешь к авторитету (по твоему мнению), который сказал, что он запускает кложепроект на макбуке 2010 года в ответ на мой аргумент, что кложа не стоит времени, которое нужно потратить. Всё блять. У тебя очень большие проблемы с логикой, как ты вообще программистом стал?
>>1356333 Так а мне тоже ответь, нахуя тратить время на программирование, если за 10 минут сосания хуйца в день можно зарабатывать больше и учиться не нужно?
>>1356333 >на кложе никто ничего не пишет, только студенты хелловорлды делают >даешь ссылку на увожаемого господина с коммерческим проектом на 600k+ строк >бля ну чо ты, ну я не это имел в виду, ну чо ты а?
15 ШТУК БАКСОВ бля. Ну игра охуенная, ок, на полчасика погонять, но 15 штук? С какого хуя? Я вообще нихуя не понимаю этот ваш рыночек, буржуи там совсем ебнулись короче в своей загнивающей. небомбит.пнг
>>1355191 shared mutable state тем не менее очень важен в задач, где требуется перфоманс, иммутабл дрисня реально только для лаб годится и всякой некритичной бизнес-логики. Вычисления, IO, алгоритмы - настоящий праздник отсоса любителей имутабельных структур.
>>1357087 Тащем-то любителям иммутабельных структур итт никто не мешает использовать shared mutable state. Это ж кложа, а не хаскель хотя и в хаскеле можно, если очень хочется
>>1357307 Ну я понял что второе. Ну то есть он собрал 15к и на фултайме не торопясь пару месяцев пилил опенсорсный петпроджект. Я блядь нихуя не понимаю.
Ну и где справедливость, блядь, а? Куда смотрит профсоюз?
Хотя этот тоже буржуин зажравшийся, максимальный гоал у него стоит на 6 тысяч баксов в месяц за петпроджекты на жидхабе. Сука, он там черную икру вилкой собрался есть в своей сибири?! Вот уж верно говорят, что каждый пролетарий - это просто буржуа, испытывающий временные трудности.
>>1359373 Не совсем понял, а нахер тебе граалем компилировать веб-апп? Для веб-аппа он подходит, если у тебя например код на жс и на джаве (и на сабже), и тебе хочется из одного дергать методы другого. Ну и если вебстак тянуть, то бинарники жирные и будут. Зип-архив с джарниками джетти весит 20 мб, вот и считай.
Ну и я же написал: >каждую либу надо проверять Во-первых далеко не вся джава пока еще работает с граалем, во-вторых (это уже специфично для кложелиб) не должно быть рефлекшн варнингов.
Если тебе просто надо легкие микросервисы и всю хуйню, то просто бери кложескрипт+ноду. Грааль (как я его вижу) это в первую очередь херовина для того, чтобы оракл мог написать на джаве свой жс-движок и скомпилировать его в нативный код. Во-вторую очередь для того, чтобы можно было делать интероп между практически всеми существующими языками, и в третью - для небольших консольных утилит (размер все равно будет 10+ мегабайт).
>>1342404 >4. Скорость разработки. 5. Главная фича языка - интерактивная разработка, горячая компиляция (hot reloading) и выполнение кода прямо внутри работающего приложения (в том числе задеплоенного в продакшн, можно подключиться своей ide к серверу и залить хотфикс, включить дебаггер или просто проверить текущее состояние процесса). Вся инфраструктура под это заточено, в комьюнити много инструментов, упрощающих написание reloadable кода. Пожалуй, это главный selling point. Алсо, можно хуяк-хуяк и в продакшн.
Тут нужно балл снять, потому что сейчас хуже чем в CL.
Анон, подкинь краткий хардкорный гайд по Кложуре, чтобы чётко по делу на 200 страниц. Трогал общелисп пару лет назад, проходил кложуркоаны, хочу быстро вкатиться.
Кто вообще на нем пишет? Полторы калеки? Сомнительный график, даже если ему верить то котлин спустя год подобрался, а через год и вовсе обгонит вашего товарища.
>>1353697 > лисповая интуиция, что головная форма - это функция ну может с вектором это странно, зато map IFn это ванлав. потому что это же самый канон определения функции - отношение аргумента и результата. map это реально самая чистая и явная fn.
>>1353882 > смущает nth мнемоническое правило - если fn работает с коллекцией как перебираемым множеством (map/filter/take/drop) и соответственно подходит как к vector, так и к lazy-seq & list то коллекция идет в конце и все это хорошо пишется с ->>
а если fn эксплуатирует вектор как структуру (единое) leveraging it's structure, то как и всякие fn подобные методам из ооп - главный объект будет первым аргументом, как в nth. по идее nth - fn именно для вектора.
однако у тебя там не вектор, а seq, но тут другая история:
>>1355089 вот я читаю это и плачу, потому что я уже лет 5 работаю с кожурой (и по фану и по работе), но ни вокруг себя в application-коде, ни в коде прикладных библиотек не видел использования чего-то кроме atom или (редко agent для запустил-и-забыл).
ref видел 1 (один) раз где-то внутри clojure.test для аггрегации результатов и репортинга, но и чувство, что это там костыль и можно было обойтись прямой передачей в агрументах и reduce-ом итд.
короче аноны, не шарьте это вражескому лагерю, а просто тыкните носом в гитхаб, где оно юзается
>>1366217 Мне это тоже кажется в чем-то даже забавным, что в реальном коде в 2k!9 на самом деле очень редко приходится иметь дело с обильной многопоточностью, когда важен write-параллелизм. Ну может еще лет через 10 наконец вырастет количество ядер и ситуация изменится, лол, но что-то я в этом не уверен.
Эстонцы запустили фриланс-биржу специально для фп-блядков, если кто хочет попробовать найти одноразовую работу на кложе\элике\расте\прочих прикольных штука - регайтесь: https://newlambda.com/blog
>>1372848 да ну ладно, есть же вакансии. Другое дело, что я вот в русскоязычный чатик вкатился, они там каждый день обсуждают реакт компоненты, цсс, вебпаки и прочую жс дрысню.
>>1372917 > Другое дело, что я вот в русскоязычный чатик вкатился, они там каждый день обсуждают реакт компоненты, цсс, вебпаки и прочую жс дрысню. Кстати, два чаю этому. Родина дала им современный лисп - пиши! Пиши метагенераторы абстрактных оперденей! Не хочу, хочу жс-говно жрать! Что такое? Это программисты?! Суки... Мудачьё - кложуристы. Вебпаком обмазались и на реакте говно жрут - пидоры, блядь, ёбаные...
>>1373923 Кек. Ну у них так принято, хуль. Я вообще проигрываю, когда вижу вакансии на уберсиньоров $300k в секунду, и при этом половина текста вакансии про то, какие у них там парки хорошие и речки красивые, лол.
>>1376181 лампово выглядит. Но если копнуть глубже, то бессмысленная хуйня. В чем прикол? Это не имеет отношения к кложе вообще. Человек это не быстро сделал, потратил время на нахождение конкретной библиотеки (а скорее и сравнения), более менее в голове отложил API, подключил на экран трехмерный вывод, ну и естественно изучил формулы для построения данной опердени. От кложи тут только репл. Так же бы получилось в любом интерпретируемом языке
Ангуляр сосет абсолютно по всем фронтам кто бы сомневался, ре-фрейм на первом месте по краткости и выразительности и в лидерах по производительности, эльм вон вообще по скорости на втором месте.
И еще раз, медленно: ре-фрейм быстрее, чем реакт+редукс. Иными словами, в 2k20 жс уже ненужен. Оправдывайтесь, макаки.
>>1342400 (OP) Пугает состояние Clojure на отечественном рынке. На HH всего 25 вакансий и то там какая-то мешанина из Go/Ruby и Data Science позиций. На Scala уже получше - порядка 540 вакансий и практически все подразумевают бэкэнд разработку. Неужели все так плохо и работу на кложуре можно найти только на удаленке?
>>1342404 Вот когда ответите почему на легко-сопровождаемом (по вашим словам) языке мало кто пишет, тогда и можно начинать беседу с "за и против". А пока это выглядит как тупой маркетинг, уж простите.
Не думаю что будет ответ, но хотя бы проветрил от приторного запаха маркетинга (Автор этого поста был забанен. Помянем.)
>>1342400 (OP) >http://circleci.com - Continuous Integration and Delivery. Бэкенд и фронтенд на clojure+clojurescript. Как подобные проекты в принципе остаются на плаву? Всякие CircleCi и TravisCi, со своими конскими ценниками в 20-70 бакинских. Это же сюр какой-то. Кто этим пользуется и главное зачем? Почему нельзя купить VPS у какого-нибудь хетзнера и развернуть там тот же Jenkins или TeamCity?
>>1378328 Да нет, просто в это время произошла миграция в слак и дискурс. Ирц, например, тоже практически опустел, и гуглгруппа тоже. Это вообще печальная общемировая тенденция, имхо.
>>1378435 Хуй знает. Надуманная проблема на самом деле. TeamCity с полпинка заводится на каком-нибудь AWS. AWS сервер стоит копейки. Стало мало одного, смигрируй виртуалку на сервер побольше. Я просто не догоняю, кто можешь башлять всем этим CircleCI и TravisCi, когда можно поднять собственное решение или воспользоваться Google Cloud Build. Там ценник совсем смешной. 120 минут бесплатно в день, потом $0.003 в минуту.
>>1378468 >Я просто не догоняю, кто можешь башлять всем этим CircleCI и TravisCi, когда можно поднять собственное решение Я думаю все дело в низкой культуре деплоймента в Восточной Европе, лол.
>Там ценник совсем смешной. 120 минут бесплатно в день, потом $0.003 в минуту. Ну в сирклсиай так-то тоже не особо какой ценник в новых планах, сто баксов в месяц за премиум-аккаунт. К тому же емнип он появился раньше, не?
>>1378433 Как переезд из чатиков связан с потребностью в ответах на SO, если сам SO это как раз альтернатива чатиков и форумов?
(Автор этого поста был забанен. Помянем.)
>>1378591 Ты серьезно? Вот смотри: раньше у тебя был выбор, спросить в списке рассылке, на СО или в ирц. Теперь у тебя выбор спросить на дискурсе или в слаке.
>>1378617 Ээм, нафига спрашивать в сраках и каких-то дискурсах? Мой вопрос на SO и чей-то ответ - помогут тысячам, а в твоих чатах уплывет или смешается с флудом. И потом придет еще один анон и спросит тоже самое и потом еще раз.
>>1342404 >Единственный язык, который реально (а не для галочки) работает на jvm, clr и js платформах. Все трансляторы для галочки, а у нас не для галочки. Классика же.
>Можно писать Всем известное "можно" с большим "НО". Проходили.
>за отсутствие инструментов для формального доказательства свойств программ. В этом весь ФП, формально там что-то друг другу доказывают, воздух сотрясают, а по факту ФП где-то в андеграунде а в реале тупо усиленное процедурное программирование
>Главная фича языка - интерактивная разработка, горячая компиляция Сомнительная радость при большом числе нюансов. Ну, то есть, проще ребутнуть, чем словить магические ошибки.
>Отсутствие статической типизации заставляет разбивать монолитный проект на микроили не очень микросервисы с четко документированными апи Вот это я понимаю - маня-фантазия!
>Пожалуй, лучший язык по части многопоточности Пока программа будет клонировать тонну иммутабельных данных на каждый чих записи, мы еще позавидуем 50 наносекундам синхронайза.
>Найти сотрудников в проект легко. Ох! Это чудесно.
>Много обучающей литературы 5 minutes later >С другой стороны, нет такого количества туториалов и документации, как например У меня от тебя мозаичное мышление.
>>1378230 >только на удаленке? Ну, не только, но по факту - да. Хотя в сбербанке были вакансии, например, но в общем и целом ты либо приходишь на новый проект и приносишь с собой свой toolbox, либо удаленка. Ну либо у тебя знакомые и они тебя зовут.
>>1378829 >Ээм, нафига спрашивать в сраках и каких-то дискурсах? Потому что удобнее, быстрее, уже открыто, еще что-нибудь. Попробуй провести опрос и выяснить, почему люди предпочитают слак и дискурс, я-то тут при чем.
>>1378854 >Все трансляторы для галочки, а у нас не для галочки Ты не разбираешься в вопросе, анон. На кложе для всех трех платформ существуют крупные проекты и хороший тулинг. В большинстве других платформ это именно что трансляторы для галочки. Кстати, если ты будешь продолжать аватаркофажествовать, то тебя зарепортят и все твои посты удалят.
Остальной пост состоит из каких-то ахов, вздохов и смехуечек, так что не вижу смысла это как-то комментировать.
>>1379212 >Кстати, если ты будешь продолжать аватаркофажествовать, то тебя зарепортят и все твои посты удалят. Какая потеря.
(Автор этого поста был забанен. Помянем.)
>>1398260 Ну понятно. Перформанс говно. Динамическая типизация из-за которой нужно писать 100500 никому ненужных юнит-тестов. Хуевые библиотеки из-за которых приходится использовать тот же Hibernate для работы с базой данных. Отсутствует нормальные фреймворки или библиотеки для разработки. Найс язык и экосистема, лул.
>>1398378 >приходится использовать тот же Hibernate для работы с базой данных До этого было просто упитанно, но на этом моменте ты начал вытекать из треда.
>>1398387 Достаточно напомнить любителям кложи, как в языке реализовано отображение стектрейсов и все встанет на свои места. Кому всрался этот язык? Уж лучше тогда Erlang/Elixir заюзать в новом проекте. Там хоть имеются интересные концепции и с языком идет толковый рантайм. Ну или Scala, если хуй еще стоит.
>>1398401 > как в языке реализовано отображение стектрейсов Поздравляю с подключением к интернету, в 1.10 стектрейсы переделали, чтобы было, как везде а не как в тонкой лисповой обёртке над JVM.
>>1398890 Отображение ошибок до сих пор работает через задницу. Это одна из проблем из-за которой компании спешно переходят с Clojure на Kotlin или Scala.
>>1404577 >Проорал в голосину с его английского. На скольких международных конфах лично ты выступал?
>Рассказ как ребята переписывают сервисы на Go. Го очень часто используется в связке с сабжем (ну типа как пайтон+си, только кложа+го), по-моему status.im первые эту моду задали, лол.
>>1404770 >На скольких международных конфах лично ты выступал? Я не выступаю на конференциях. Нахуй оно мне надо?
>Го очень часто используется в связке с сабжем (ну типа как пайтон+си, только кложа+го), по-моему status.im первые эту моду задали, лол. Нахер тогда нужна эта кложа, если парни чуть ли не весь сервис переписали на Гоу? Рест сервисы можно было и на каком-нибудь ссаном руби написать или пайтоне, а всю числодробилку вынести на гоу. Нахуя ебаться с лиспом, лул?
>>1434453 Да у него просто такой ПЕРИОД имхо. И он типа кинул не сабж, а вообще решил удариться в байтоебство после разочарования в интернетах и современной инфраструктуре вообще.
Хотя с "раст быстрее кложи, ПРЕДСТАВЛЯЕТЕ?!!" я конечно легонько проиграл.
>>1435074 Ну там все таки акцент был на то что "не сильно парясь можно легко написать на расте тоже самое и будет быстрее". Но вообще похуй, он наебщик и чепушило.
>>1435223 Читал на нашем любимом сайте (здесь, кажется в мы вам перезвоним). Что он кого-то развел на супер-инновационный-неимеющийаналоговнет проект на кложе, пилили-пилили, но кроме бабосов нихуя не распилили.
>>1435317 >кроме бабосов нихуя не распилили. Все правильно сделал, значит. Лох должен страдать и платить и страдать. Этого требует гармония мироздания.
>>1435317 Стартап назвался Echo (aboutecho.com, в данный момент уже недоступен). Они во главе с Львом Валкиным пилили какой-то ололо стартап в области social media и web 2.0. На кложе писалась очень мутная система мониторинга, которая по-хорошему нахуй никому не всралась, т.к. этих систем мониторинга на тот момент было хоть жопой жуй. В итоге ребята игрались со всеми этими кложами и эрлангами, а когда пришло время показывать результат, то жидко обосрались. В итоге у инвестора закончились деньги и тот признал проект неудавшимся, что привело к разгону команды. Чуть позже, по очень большому знакомству, всю команду забрала к себе машинзоун, которая клепает какие-то мобильные игрушки. Т.к. машинзоун не ожидала, что к ней прибудет десяток рыл из РФ, то не знала чем их занять и они какое-то время занимались тем, что писали какую-то хуету в стол. По итогу их и из машинзоун выгнали на мороз. Ну, а дальше вы и так все знаете.
>>1404577 > Рассказ как ребята переписывают сервисы на Go > some of the infrastructure services are transitioning into golang > for bread-and-butter stuff Clojure is still our go-to and the best thing we have.
>>1435303 Обычно так говорят либо те, кто не писал на кл, либо те, кто не писал ни на чем нормальном кроме кл.
>>1435317 >>1435438 Это намеренный троллинг или вы и вправду в это верите?
Во-первых, echo имеет мало отношения к кложе и тонскому. Он там был обычным девелопером ну ладно, потом тимлидом, на кложе там были пару внутренних проектов типа парсилки логов. Основной код был на эрланге, окамле и си.
Во-вторых, echo - один из самых успешных русских стартапов вообще-то. У них было до того много бабла, что они несколько лет устраивали буткампы (выезжали на природу, ставили там генераторы, сцену, вай-фай и делали всякие презенташки и прочие айти-тусовочки для студентов и местных разрабов) и практически в одну харю превратили Ульяновск в неплохой такой IT-центр по меркам мухосрансков. Причем эффект сохраняется до сих пор.
В-третьих, они пилили не "какой-то ололо стартап", а систему комментирования а-ля disqus, которая изначально называлась js-kit. Точнее наоборот: это disqus - а-ля js-kit, потому что js-kit появился раньше дискаса и был в свое время самым популярным (и одним из первых) сервисом такого рода.
В-четвертых, "время показывать результат" пришло в 2006 году, лол, Валкин тогда релизнул жскит и вскоре после этого пришли инвестиции и была основана компания.
В-пятых, компания росла, и в итоге тот продукт, который изначально был жс-китом, решили задисконтинюить. По сути на этом рынке они проиграли конкуренцию дискасу и гуглофейсбукам, после чего менеджмент принял решение прекратить его разработку и сфокусироваться на других проектах.
В итоге Валкин уехал в Долину, а команду отправили в блатной отпуск в Калифорнию, лол. Ну а дальше кто куда, тонски вон щас в жидбрейнс сидит.
Но к сабжу это все не имеет вообще никакого отношения.
>>1435583 Да не гори ты так, Никита. Все понимают, что разработчик из тебя так себе. Сначала в Ксореде говно разгребал, потом тебя по знакомству устроили в нужные компании. Сам понимаешь, что тебе грех на что либо жаловаться.
>>1398260 >https://www.learnreframe.com - для любителей видеокурсов годноту подогнали Ебать. Сейчас бы выпускать курсы по мёртвому языку с аудиторией 20 человек за 300 евро.
>>1439723 А чего это ты хихикаешь? Все он правильно говорит. Язык умер и используется только среди маргиналов, которые что-там у себя пишут. Всем же понятно, что для серьезных проектов язык с динамической типизацией не подходит, т.к. первое - он будет очень медленным (никитонский это уже подтвердил), а второе - это то, что он не подходит для какого-нибудь серьезного рефакторинга и требует колоссальных затрат на написание юнит-тестов, т.к. в компайл-тайме не проверяются элементарные вещи, такие как типы передаваемых параметров в функции и их количество и тип возвращаемого значения из этих функций. Т.е. все те детские ошибки, которые ты ловишь при компиляции в Java/Scala, ты будешь ловить в рантайме в Clojure.
>>1439723 >баттхерт нищука >>1439770 Интересная теория, но я просто имел ввиду, что требовать деньги за курс, да и вообще его создавать за деньги, по языку, который мало того, что просто далеко не самый распространённый, так ещё и лисп - странное занятие. Люди, которые уже работают на кложе - им он не нужен, они и так всё знают в нём. Даже если просто так его купить, то что, тратить 10%(в лучшем случае) от месячной зарплаты, чтобы повторить (+ 2 3)? А новички не пойдут в ЖабоЛисп за 300 евро.
>>1439770 Интересно, это все тот же тралль, или просто аноны с одними и теми же набросами похожи до неразличения?
>>1439814 Тем не менее, раз что-то продают, значит кто-то это что-то покупает. Пока ты тут думаешь и рассуждаешь, зачем создавать видеокурс, чувак просто взял и сделал. Согласись, это более продуктивно.
>>1342400 (OP) К сожалению, на Кложур практически невозможно найти оплачиваемую работу. Пример НИКИТОНСКОГО ЗЕ ХЕ БЛЯДЬ, ЗЫСЫС ТРЫЗЫС, отчетливо это подтвердил.
>>1454844 >Пример НИКИТОНСКОГО ЗЕ ХЕ БЛЯДЬ, ЗЫСЫС ТРЫЗЫС, отчетливо это подтвердил. Каким образом он это подтвердил, не понял? Он же как раз успешно нашел высокооплачиваемую работу на сабже (несколько раз).
Найти работу относительно несложно, но только если на удаленке и только если ты очень крутой синьор.
I’ve programmed systems in many different languages; from assembler to Java. I’ve written programs in binary machine language. I’ve written applications in Fortran, COBOL, PL/1, C, Pascal, C++, Java, Lua, Smalltalk, Logo, and dozens of other languages. I’ve used statically typed languages, with lots of type inference. I’ve used typeless languages. I’ve used dynamically typed languages. I’ve used stack based languages like Forth, and logic based languages like Prolog.
Over the last 5 decades, I’ve used a LOT of different languages.
And I’ve come to a conclusion.
My favorite language of all, the language that I think will outlast all the others, the language that I believe will eventually become the standard language that all programmers use…
>>1342404 >Главная фича языка - интерактивная разработка, горячая компиляция (hot reloading) и выполнение кода прямо внутри работающего приложения (в том числе задеплоенного в продакшн,
Я уже много лет делаю то же самое на Java EE, очень доволен.
>>1467118 Какой тебе пруф? Что изменённый джава/джсп код на лету перекомпилируется сервером и тут же подгружается класс-лоадером, без перезагрузки всего сервера? Так это на нормальных системах реально с начала нулевых уже есть.
Или что я могу на работающем апп-сервере запускать груви (или даже руби) скрипты и "выполнять код прямо внутри работающего приложения"? Поверь, могу. И ты сможешь, лол.
И это всё без непонятных изъёбов и марсианского тулинга. Тут важно понимать, что такие возможности тебе даёт вовсе не язык, как таковой. А сервер, рантайм и прочее.
Реальное преимущество лиспа в том, что "Отсутствие статической типизации заставляет разбивать монолитный проект ...". Только дело, конечно, не в типизации, а в самом по себе лиспе.
Ещё хуй знает когда было сказано (в сикпе где-то или Graham сказал), что программист на лиспе вынужден сразу же плодить тучи функций, т.к. писать стандартную императивную дрисню на лиспе просто невозможно.
>>1467130 >изменённый джава/джсп код на лету перекомпилируется сервером и тут же подгружается класс-лоадером А что произойдёт с уже созданными инстансами классов, у которых изменены определения? Жидкий обосрамс?
> программист на лиспе вынужден сразу же плодить тучи функций, т.к. писать стандартную императивную дрисню на лиспе просто невозможно Пиздец у тебя каша в голове. Вон тот же Common Lisp все лисперы обсирают за то, что на нём можно императивную парашу писать да ооп обмазываться. Никто тебя ничего не заставляет делать, успокойся.
>>1467185 >с уже созданными инстансами классов Чудес не бывает, сынок.
Естественно, сохранённые _данные_ в памяти не изменятся, при изменении определения класса, если ты понимаешь, как всё это работает внутри. И это хоть на джаве, хоть на кложуре, хоть на чём. От этого помогает правильный дизайн кода.
А если ты имеешь в виду, что на кложуре все данные в сырых мапах и листах, то это так себе достоинство.
>Пиздец у тебя каша в голове. Пиздец, ты токсичный ебанат. Я написал вынужден безо всякого негатива. В оригинале было чуть пафоснее, но, я дословно не помню. Найди, блядь, эту цитату, и посмотри, какая там интонация.
>>1467130 >Тут важно понимать, что такие возможности тебе даёт вовсе не язык, как таковой. Ошибка. Ртфм.
>Реальное преимущество лиспа в том, что "Отсутствие статической типизации заставляет разбивать монолитный проект Есть статически типизированные лиспы, есть динамически типизированные нелиспы, нерелевантно.
>писать стандартную императивную дрисню на лиспе просто невозможно. Возможно, всю жизнь на кл и имакслишпе, и прочем спокойно писали.
>>1467269 >И это хоть на джаве, хоть на кложуре, хоть на чём. Ошибка.
>А если ты имеешь в виду, что на кложуре все данные в сырых мапах и листах, то это так себе достоинство. Это совершенно нерелевантно топику вашего диалога, но вообще это как раз и есть главное достоинство, да.
>Пиздец, ты токсичный ебанат. Но у тебя правда каша в голове, это факт. На уровне "слышал звон да не знаю где он". Про репл и хот релоадинг - почитай про отличия моделей исполнения обычных и image-based языков (хотя чтение лучше подкрепить практикой, иначе профиты осознать не факт что получится).
>>1467571 >Нет, не делаешь. Ну, тебе виднее, конечно.
>image-based А что, кложура image-based? Каким образом? Как мне сохранить/загрузить имидж?
Или ты имеешь в виду, что не нужен текстовый редактор, загрузка файлов, компилятор и т.п., чтобы поменять определения в работающей программе, т.к. всё это делается через репл самим рантаймом языка?
>>1467718 >Ну, тебе виднее, конечно. В данном случае - apparently да.
>А что, кложура image-based? Нет, но наследует модель выполнения именно от таких языков.
>Или ты имеешь в виду, что не нужен текстовый редактор, загрузка файлов, компилятор и т.п., чтобы поменять определения в работающей программе, т.к. всё это делается через репл самим рантаймом языка? Не совсем; суть в том, что (в отличие от того же хот-релоада в джаве) там нет отдельной операции "поменять определение в работающей программе" - у тебя весь (любой) код всегда¹ выполняется в репле, выражение за выражением. Поэтому для языка (рантайма) нет принципиальной разницы, во-первых, откуда он читает эти выражения - из файла или из сокета; во-вторых, нет принципиальной разницы между перекомпиляцией определения (как мы это делаем в джаве) и выполнением любого другого кода - печатью строчки в stdout, изменением состояния и т.п. На практике это означает, что ты работаешь с образом запущенной программы, и единообразно тыкаешь что состояние рантайма (скомпилированные определения), что состояние своего приложения; короче говоря, более корректным сравнением было бы не "я в джаве так же делаю", а "я в консоли браузера так же делаю". В теории это означает, что у тебя минимальная единица компиляции и выполнения - выражение (не класс, не модуль, не пакет), а это уже характеристика языка, а не одного лишь рантайма.
[1]: ну там типа есть aot и подобные нюансы, но в контексте данного обсуждения это детали реализации.
>>1470913 Вот как раз LFE - это сферическое ненужно в вакууме.
>>1470782 Разумеется, ну мне кажется вообще немного неразумно сравнивать проект одного чувака джаст фо фан и целый эликсир. В ридми там кстати есть секция, которая дает ответ на твой вопрос - чувак хотел научиться писать языки, плюс портфолио видимо, ну и ему просто по кайфу.
Алсо, >tfw чувак для хобби-проектов пишет код и организует процесс лучше чем 99% галер и студий
Ну а если сравнивать кложу и эликсир в вакууме, без учета того факта, что эликсир - это такой руби 2.0, на который естественно гораздо проще пересадить людей, то чисто с точки зрения самого языка кложа-то получше (почище и помощнее) будет. Хотя элик тоже няшка, конечно.
Yo dawg, I've heard you like editors, so we put vim in our jvm so you can include an editor as a library in your project so you can code while you code
>>1471131 Кложа и Эликсир языки из одной категории и вообще почти одно и то же. Ну, можно согласиться что кложа чуть более продвинута в плане фич для обычного программирования, но эликсир более продвинут в плане concurrency. Просто не вижу понту от кложи на эрланговской VM, она ж медленнее JVM в раз 20 и для как бы для других целей.
>>1472144 >Кложа и Эликсир языки из одной категории и вообще почти одно и то же. Ну хз, субъективно. Они похожи тем, что оба - динамическая функциональщина (ну и элик вообще испытал сильное влияние кложи), но вообще-то в целом это очень разные языки.
>но эликсир более продвинут в плане concurrency. Почему? Как раз наоборот же.
>Просто не вижу понту от кложи на эрланговской VM Ну пользоваться-то этим необязательно, а так - пусть будет, почему бы и нет. В руби на эрланговской вм есть понт - вот пусть и кложа там будет.
Может у кого то есть в закладках видео, там сравнивают и рассказывают про две (или 3) cjs либы, показывают их различия в подходе, мод одна манипулирует структурами данных, а вторая предлагает что то вроде деларативного движка. Оче надо, но не могу найти
>>1500299 Работа DOM и шаблоны (Enfocus, Dommy) Была серия уроков по кложе, с задачами, там это видео. clojurecourse.by Хз насоклько эти уроки сейчас актуальны, вроде как 5 лет прошло.
>>1500392 >Enfocus, Dommy Ну да, конкретно вот это не очень актуально, скорее для общего развития.
Но вообще прикольно, я не знал, что такое есть. И никитонски там тоже засветился. Да и вообще в целом выглядит очень годно, затронута куча разных тем, плюс задачки есть. Годнота.
>>1342400 (OP) Так, че там по сладкой удаленочке за даллары на этой вашей кложе? Писал на Java и Scala ебать их в сраку. Сложно вкатиться в Кложу и начать педалить буллетпруф бэкенд сервисы? Фронтенд не интересует.
>>1515714 Устал я от Java. Со всеми ее спрингами и хайбернейтами - такое-то уныние. Пока что-то работоспособное соберешь уже месяц пройдет. На Scala не лучше - тулинг хромает, концепций дохуя - удовольствия от разработки нихуя. Clojure привлекает тем, что там по сути есть только данные и функции и уже на этих понятиях строятся какие-то более мощные концепции.
>>1520946 Ну если устал от жавы и скала не зашла из-за громоздкости и непрактичности, то по сути сабж тебе прямо в яблочко должен зайти, да.
Правда насчет тулинга я бы и тут не обольщался - минимализм-с, все дела.
У Гришаева кстати в блоге книжка книжка-блог по частям выкладывается, если душа просит на русском что-нибудь почитать - самое то, все с точки зрения практика.
>>1534950 Это новая итерация говножорства? Сначала жс петухи жруг говно из жопы других жспетухов через нпм, потом приходяю сложаскриптдебилы и начинают подъедать уже на жспетухами. Такая-то человеческая многоножка.
>>1535487 >Скажите, обязательно ли знание стандартной библиотеки Java для того чтобы писать код на Clojure? Нет. Ну или хз что ты понимаешь под стандартной библиотекой, javax.* знать конечно не надо, но надо уметь например прочитать джавадок к классу String, тому що кложастроки это джавастроки. Ну то есть если ты не конченый аутист, то проблем не возникнет. Алсо джавафобия иррациональна, тебе ж писать-то на ней не надо будет.
>На одной чаше весов Clojure, а на другой Elixir. От Erlang меня подташнивает, но от Java еще больше Ну пили что-нибудь на clojurescript тогда, например. Поддержка jvm и js практически одинаковая.
>>1342400 (OP) Не мешает ли динамическая типизация в Clojure, когда разрабатываешь крупные проекты? Я к тому, что если я перепутаю тип аргумента метода где-нибудь в Java или Scala, то компилятор ругнется и не соберет код. Не буду ли я тратить больше времени на подобные ошибки в Clojure?
>>1536904 Ты, видимо, не умеешь писать тесты и не вполне понимаешь, для чего они нужны и как это работает.
>>1536863 Помогает ли система типов задеплоить систему из 10 микросервисов и не ошибиться в вызовах рестовых\графкуэльных\базаданновых API? Вопрос риторический.
>>1537092 >Ты, видимо, не умеешь писать тесты и не вполне понимаешь, для чего они нужны и как это работает. Проиграл с дауна. Тебе конкретные примеры привели, которые показывают, что подобные ошибки у тебя будут появляться в рантайме, когда какая-нибудь Scala или Java отловят это еще на этапе компиляции. Иди обтекай, клоун.
>>1536904>>1537300 Тесты поведения стоят на уровень выше, чем тайп-чеки, и если тест написан через TDD, то есть покрывает 100% возможных вариантов использования компонента, то никакого практического смысла в тайп-чеках не остается. Единственное исключение - это публичные библиотеки, где можно добавить проверку на какой-нибудь nil, чтобы пользователю этой библиотеки выбрасывалась более подробная ошибка, но это уже идет как часть публичного API и тоже подходит под использование компонента. http://blog.cleancoder.com/uncle-bob/2019/06/08/TestsAndTypes.html https://blog.cleancoder.com/uncle-bob/2016/05/01/TypeWars.html
Анон, хочу немного с кложей познакомиться думаю с какой стороны подойти. Подскажи какие типовые задачи она решает. Как-то не очень видется кложа языком общего назначения, хотя, я, конечно, никого не хочу обидеть и знаю, что это всё же он самый. Но в любом случае - если бы я решал задачу на кложа - какой бы эта задача наиболее вероятно была?
>>1539190 На кложескрипте - написание больших и сложных UI. На кложе - в основном вебня, рест\графкуль-апи всякие, пайплайны обработки данных, микросервисы и т.п.
То есть если тебе надо просто круд-сайтик и добавить анимации, то лучше рор\джанга и ванильный жс. Если же у тебя сингл-пейдж аппликейшен с дата-кранчинг бэкендом, то вот это уже ближе к теме.
>>1539190 >Подскажи какие типовые задачи она решает. Какие задачи решает JVM по-твоему? Такие же и даже больше решает Clojure. Кроме матурной с большим количеством либ JVM, Clojure добавляет еще свои фичи.
>>1547098 И кроме того, изучение разных языков необходимо для роста общего профессионального уровня. Вот ты писал на Лиспах? Если нет, то ты многое потерял. Лисп ломает мозг, открывает понимание новых методов программирования, которые кроме как через Лисп никак не постичь.
>>1547111 >Вот ты писал на Лиспах? Писал на Racket, когда учился в ВУЗе. Но потом быстро понял, что работы найти на этом вашем лиспе мне не удастся и очень быстро перебежал на Java, о чем не жалею. Так бы сейчас гнил где-нибудь в канаве, если бы серьезно изучал лиспы, лол.
>>1547109 Тогда это кардинально меняет дело! Если какой-то чувак действительно устроился, то значит и мы сможем, лол! Ты сам-то в это веришь, старина? На всем HH наберется от силы вакансий 20, где упоминается Clojure. В половине вакансий это будет как бонусный скил и на самом деле язык не используется в проекте. Остальная половина будет поделена между проектами, которые переписывают с Ruby/RoR на Clojure (предполагается, что у кандидата есть продакшен опыт в рубях и рельсах), а вторая половина - какие-нибудь мутные ололо-стартапы, которые прожигают деньги инвесторов. Туда, разумеется, требуются только бывалые кложуристы, которые уже месили скобки пару лет в какой-нибудь фирме.
>>1547123 >Ты сам-то в это веришь, старина? Это не легенда. Я сидел в одном чате для вкатывальщиков. Достаточно долго. Всех там знал почти. Конечно все делились опытом, кто как и куда устроился, и сколько времени потратил на обучение. Один чувак учился писать на JS, а когда уже немного опыта набрался, ему посоветовали попробовать Clojure. Он начал его задрачивать, и через несколько месяцев уже довольно уверенно писал код. После в чате нашлись люди, знакомые которых пишут на Clojure в продашне. Его прособеседовали, он всех устроил, его взяли на работу. Кроме того там были чуваки, которые тоже на Clojure пишут, но правда сначала проработали на JS около года.
>>1547130 Ну это далеко не показатель. Работы на Clojure - хуй да нихуя. А та что есть - это переписывание проектов с Ruby, либо вообще не связанный с Clojure проект, где Clojure нужен как доп. скилл, который показывает кругозор кандидата.
>>1547134 Показатель - непоказатель, мне как-то все равно. Я знаю, что если человек знает свое дело, он найдет работу. Знает хорошо Haskell - найдет работу на нем, знает Clojure - найдет работу на нем. А ты рассуждаешь неправильно. Типа дайте мне много работы на Clojure, а я потом подумаю стоить ли изучать его. Такого никогда не будет.
>>1547152 >Типа дайте мне много работы на Clojure, а я потом подумаю стоить ли изучать его Я этого не говорил. Я подхожу к проблеме с прагматичной точки зрения. Открываю HH и вижу, что работы на Java на несколько порядков больше чем на Clojure/Scala/Haskell вместе взятых. Отсюда я делаю вывод, что у меня не будет проблем найти работу на Java и у меня будет выбор контор, в которые я могу пойти работать. Что нельзя сказать о Clojure и прочих Scala.
>>1547184 > Открываю HH Ты же ведь понимаешь, что по-настоящему годные вакансии в паблик никогда не попадают и закрываются посредством личных знакомств в коммьюнити?
>>1547186 Твое коммьюнити - это полторы калеки в каком-нибудь телеграм канале, плюс несколько сотен наивных дурачков, которые дрочат кложуру в свободное время, мечтая вкатиться на сытую удаленочку.
>>1547195 Забей, это тот же шизик, что срал в Elixir треде. Тупо те же самые фразы. Для некоторых людей мир ограничивается мейнстримом, языки оцениваются по возможности продать жопу в местный бадишоп, а если за языком не стоит анальная корпорация (тм) то он вообще сразу не нужен.
>>1547257 >устроились по знакомству Сейчас бы анус подставлять всяким малознакомым микрочеликам за работу программиста, когда нормальные люди просто открывают HH/Linkedin, откликаются на вакансию и уже через пару дней работают за приличные деньги.
>>1547305 Ты дегенерат? По объявлению тебя и выипут. Придешь хер знает куда, хер знает к кому. Не буду называть имен/названий, но чел устроился в одну из самых крутых продуктовых компаний РФ, которая к тому же пишет на Clojure. Ты же по объявлению найдешь только проституцию в бодишопах. И о Clojure не мечтай даже.
>>1547319 >по объявлению найдешь только проституцию в бодишопах Топовые компании РФ постоянно ищут программистов через HH/Linkedin, а ты мне про каких-то мутных челиков из телеграм каналов рассказываешь, лол.
>>1547319 >И о Clojure не мечтай даже. Сейчас бы в 2к19 писать на динамикопараше и ебаться с ошибками в рантайме, которые приличный компилятор отлавливает еще на этапе компиляции твоего говнокода. Беги скорее писать тесты на передачу всех возможных типов в функцию, лол.
>>1547121 >очень быстро перебежал на Java, о чем не жалею. Так бы сейчас гнил где-нибудь в канаве, если бы серьезно изучал лиспы, лол. У тебя какое-то искаженное восприятие реальности. Если тебе кажется, что джава и лисп - это взаимоисключающие варианты, то у тебя еще многое впереди.
>>1547184 Что ты пытаешься доказать? Что этот тред следует запретить, а всех кложуристов насильно пересадить на джаву? Или что? Это по-твоему прагматично?
Тыкаю https://clojurecourse.by/ Функция select уже была в коде, что в ней не так? Что значит эта стрелочка? Второй день кложур смотрю, не кидайся какашками анончик Execution error (NullPointerException) at csvdb.core/order-by* (form-init9235460488737194202.clj:96). null
>>1510707 >Why Isn't Functional Programming the Norm? Потому что слишком тугая абстракция. Императивные алгоритмы намного проще создавать, потому что они являются натуральными для человека, т.к. все бытовые задачи - это изменение окружения через последовательность действий.
>>1550764 >Императивные алгоритмы намного проще создавать Нет. Все математики/программисты согласны, что рекурсивные алгоритмы (рекуррентное соотношение) проще для написания и понимания. Они естественно выводятся из определения задачи. Например факториал, его рекуррентная формула легко переводится в код. А чтобы эту формулу перевести в императивный алгоритм, нужно неестественно извернуться.
>Императивные алгоритмы являются натуральными для человека Нет. Когда человек выполняет вычисление, он не записывает ничего в переменные, и потом их не изменяет. Он вычисляет декларативно, как это принято в математике. Это естественный способ мышления.
>все бытовые задачи - это изменение окружения через последовательность действий Еще раз нет. Приведи пример.
>>1342400 (OP) >— Что нужно для вкатывания? >Знать английский, не быть тупым, иметь опыт программирования. Куда вкатываться-то? Кложур-программисты нужны только с многолетним опытом в Java или Ruby. Просто так заскочить на проект не выйдет.
>>1551373 Ебать ты наркоман. Пример - практическе любое обучение или инструкция, от сборки икеевского шкафа и кулинарного рецепта, до физических упражнений. Это всё итерации с условиями. Рекурсия, блядь, вообще противоестевственна для человеческого мышления, кроме математиков, у которых оно нихуя не обычное и довольно специфическом образом пришибленное. Приведи контр пример рекусривной бытовухи, которая будет проще цикла.
>>1558932 >до физических упражнений Чистая декларативщина же. Никто не пишет "возьмитесь за турник; число повторений равно нулю; подтянитесь, увеличьте число повторений на один, если число повторений = 10, то закончите, иначе повторите". Пишут: подтягиваться надобно хватом такой-то ширины, с такой-то техникой; программа: столько-то подходов по столько-то повторений.
>кулинарного рецепта Опять декларативщина, не? Ингридиенты: <список ингридиентов>. И потом последовательность трансформаций. Прямо один-в-один как код на кложе: (def ingredients {:eggs ... :sugar {:amount [5 :tablespoons] ...} ...}) (->> eggs (take 5) (filter :white) (map whip) ...) ...ну что-то в таком духе.
>сборки икеевского шкафа Если ты мне приведешь фотку инструкции от икеи, в которой будет цикл, то я удолю етот итт тред признаю, что тут что-то есть. Или вообще приведи любой пример, где есть циклы.
Ну и вообще циклы с рекурсией сравнивают только зеленые (в смысле ньюфажные) мудаки, которым нечем заняться и которые толком не писали ни ООП, ни ФП код.
Давно не заходил, что то проигрунькал с людей "зачем учить кложу, если надо уччить джаву". Скажите им, что можно нужно знать несколько языков. Хотя может, им и один дался кровью и потом, хз.
Какие задачи ваще кложа решает? Она сейчас актуальна или это чисто когда делать нехуй поковыряться? Или писать самому себе операционку emacs я знаю что там другой диалект. Пытаюсь найти себе причины выучить LISP но одного использования emacs'а не хватает. Жалко ради одного него учить язык.
>>1585649 Типичный веб. Поговаривают, что в той же Clojure и Elixir веб-разработка сделана как надо и не нужно учить всякие монструозные фреймворки как в энтерпрайзной джаве со всеми ее Spring Framework и Hibernate в которых черт ногу сломит.
(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://putchar.org/ - реддит здорового человека (автор постит кучу интересных ссылок; алсо, код выложен на гитхабе).
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
Clojurescript
https://clojurescript.org
https://figwheel.org
https://github.com/Day8/re-frame
Документация
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
Комьюнити
https://www.reddit.com/r/Clojure/
https://clojureverse.org/
http://clojurians.slack.com/
#[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
IDE
https://cursive-ide.com
https://cider.readthedocs.io/en/latest
http://lighttable.com
http://nightcoders.net
https://sekao.net/nightcode && https://sekao.net/lightmod
Библиотеки
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 || http://http-kit.org/
DI: https://github.com/weavejester/integrant || https://github.com/stuartsierra/component || https://github.com/tolitius/mount
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
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".
— Че там по пост-иронии?
https://www.youtube.com/watch?v=jlPaby7suOc
— Батя одобряет?
Да: https://www.youtube.com/watch?v=-ktUXFxkSkI&t=25m25s