После двух с половиной лет разработки представлен релиз динамического языка программирования Clojure 1.12, базирующегося на языковых конструкциях Lisp и сочетающего в себе возможности функционального и многопоточного программирования с чертами современных скриптовых языков. Код программ на языке Clojure транслируется в Java байт-код и выполняется на виртуальной машине JVM. Код компилятора Clojure, библиотек и runtime-компонентов распространяется в рамках лицензии Eclipse Public License...Подробнее: https://www.opennet.me/opennews/art.shtml?num=61827
Юзабельно или для позеров?
Для неосиляторов java, то есть нинужно.
> Для неосиляторов java, то есть нинужно.От крутых программистов слышал что они терпеть немогут java.
Но это же не повод использовать хрень поверх жабы.
>для позеров?Нет, это язык элиты. Клоужур относится к языкам типа Лисп. Поэтому это элитарный язык. Хочешь быть элитарным? Пиши на Лиспе.
А позёр и элита — разве не одно и то же?
Элитарным быть не хочу, элита загнивает.
Вполне используется в индустрии ситуативно.
Примеры использования?
На гитхабе полно проектов.Из коммерческих:
Datomic
Health Samurai+ Разработка языка финансируется каким-то крупным банком.
Вау, целых 2 конторы. Наверное очень просто найти работу?> каким-то крупным банком
Вот за что уважаю анонимов, так это за предоставление ими точнейшей информации.
> Вау, целых 2 конторы. Наверное очень просто найти работу?Что с ходу вспомнил.
>> каким-то крупным банком
> Вот за что уважаю анонимов, так это за предоставление ими точнейшей информации.А тебе тут никто ничего не должен -- гугель в помощь.
>> Вау, целых 2 конторы. Наверное очень просто найти работу?
> Что с ходу вспомнил.Кажется, что это все что ты знал.
>>> каким-то крупным банком
>> Вот за что уважаю анонимов, так это за предоставление ими точнейшей информации.
> А тебе тут никто ничего не должен -- гугель в помощь.Хорошая попытка слиться, но нет.
>>> Вау, целых 2 конторы. Наверное очень просто найти работу?
>> Что с ходу вспомнил.
> Кажется, что это все что ты знал.Ты и этого не знаешь.
>>>> каким-то крупным банком
>>> Вот за что уважаю анонимов, так это за предоставление ими точнейшей информации.
>> А тебе тут никто ничего не должен -- гугель в помощь.
> Хорошая попытка слиться, но нет.Не умеешь находить инфу -- учись, еще не поздно.
>>>> Вау, целых 2 конторы. Наверное очень просто найти работу?
>>> Что с ходу вспомнил.
>> Кажется, что это все что ты знал.
> Ты и этого не знаешь.Cлышал я про них. Health Samurai вообще любит в лиспочатики рекламу своих сборов скидывать, видимо в поисках новых талантов. Задумайся зачем я это написал.
>>>>> каким-то крупным банком
>>>> Вот за что уважаю анонимов, так это за предоставление ими точнейшей информации.
>>> А тебе тут никто ничего не должен -- гугель в помощь.
>> Хорошая попытка слиться, но нет.
> Не умеешь находить инфу -- учись, еще не поздно.Разве всезнающий аноним, на кложуре, эрланге и дудке игрец (надеюсь не на кожаной), не поможет мне с ответом.
> Cлышал я про них."Слышал звон, да не знаю где он." (С)
> Разве всезнающий аноним, на кложуре, эрланге и дудке игрец (надеюсь не на
> кожаной), не поможет мне с ответом.Просвещение местных балбесов мне не интересно.
>> Cлышал я про них.
> "Слышал звон, да не знаю где он." (С)Чтож ты с темы свернул и умолчал про рекламу. Разве популярным конторам нужна реклама в чатиках социофобов-лисперов?
>> Разве всезнающий аноним, на кложуре, эрланге и дудке игрец (надеюсь не на
>> кожаной), не поможет мне с ответом.
> Просвещение местных балбесов мне не интересно.А ты оказывается просто сказочный аноним. Там где ты лежал хорошо просвещали? Зря только тебя оттуда выпустили.
Вытесняется fsharp'ом.
Неюзабельно, не нужно, не работает, не решает никаких проблем, и вообще это игрушка для хипстеров/смузихлёбов/кошкодевочек/что там ещё вы ненавидите сегодня. Проходите мимо, не надо этим интересоваться и уж тем более пробовать. Нам лишние конкуренты ни к чему. Всегда пишите всё на крестах. А ещё лучше — на Си пишите, самый лучший язык программирования в мире, на нём вон даже ядро написано, а на Кложуре этой нашей даже игрушечное ядро никто не написал. Совершенно непригодный для вас язык, не тратьте время.
Язык для любителей рантайм ошибок, типа NPE. Учите лучше Ocaml/Haskell/Rust.
https://logseq.com/
> Юзабельно или для позеров?для позеров как goolang)
Мне вот интересно, в каких IDE пишут под эти языки, чтобы с нормальным автодополнением, всплывающими подсказками, inlay hints и вот это вот всё?
Emacs
> EmacsНе видел ни у одного нормального программиста emacs. Видел mac и что то типа VSCode для мака.
как вы определяете нормального программиста?
Предположу, что он это делает наощупь. :)
score
vscode
А нужен ли ide, вот в чем вопрос?
В общем случае - нет. Но это очень удобно.
Emacs — наиболее естественная и хорошо поддерживаемая среда для работы с Clojure и другими лиспами.См. также: https://clojure.org/guides/editors
Из того, что видел в дикой природе — самые популярные, наверное, Емакс, Cursive (на основе IntelliJ) и VSCode.
>Мне вот интересно, в каких IDE пишут под эти языки, чтобы с нормальным автодополнением, всплывающими подсказками, inlay hints и вот это вот всё?Из-за динамической типизации количество подсказок/автодополнения ограничено.
Задумка была хорошая, но выше jvm не прыгнешь, что даже graalvm не спасет
А зачем прыгать выше jvm? Внутри jvm кайфово и уютно ;)
А достаточно ли он умеет безопасно работать с памятью?
> А достаточно ли он умеет безопасно работать с памятью?Это же jvm https://img.devrant.com/devrant/rant/r_765187_mEXWi.jpg
Какую задачу призван решить этот язык? В чём его преимущества? Что он умеет такого, чего не могут другие языки?
до чего же ленивый анон! погугли про функциональное программирование, про лисе, про кложу.
Он умеет то, что обычно умеют языки семейства Лисп:
- Метапрограммирование на максималках, легко создавать встроенные предметно-ориентированные языки (это наверное самое мощное средство абстракции в программировании вообще).
- Интерактивная разработка и REPL: вместо цикла отредактировать-перекомпилировать-запустить менять код работающей программы.
- Унифицированный синтаксис, поддерживающий структурное редактирование (редактор может непосредственно работать со структурой программы, а не c плоским текстом из строк, который потом отображается в синтаксическое дерево).Чтобы понять, насколько все это кайфово, нужно с этим поработать и врубиться, но это опасно, мейнстримные ЯП начнут казаться убогими.
Смотрите как я умею. И реально нужное не всегда одно и то же.
"Реально нужное" в ЯП — это полнота по Тьюрингу (и то не всегда), остальное — полезное.Перечисленное выше позволяет улучшить соотношение сущностной логики в коде к бойлерплейту и прочей рутине, а также убрать лишнюю рутину из процесса работы с кодом. Не знаю, насколько это ускоряет разработку (если разрабатывается что-то не совсем банальное, то все равно существенное время уходит на обдумывание, а не на тыканье в клавиши), но для меня это точно делает процесс более приятным и интересным.
Ну вот с этим все реально нужное ты можешь напрогать себе сам, причём так как хочешь ты, а не дядя Вася.
> Ну вот с этим все реально нужное ты можешь напрогать себе сам,
> причём так как хочешь ты, а не дядя Вася.Шо и даже либы все нужные напрогаешь сам? Не верю (с).
См. проклятье Лиспа. А в контексте сабжа доступна вся инфраструктура и либы из явы, что покрывает приблизительно все бизнес-кейсы как бык овцу. Но, повторюсь, вам этот язык не нужен, пишите на сях.
ну да, сделать какую-то работающую хрень, совершенно не понимая как работает комп, память, ввод-вывод. Зато потом можно хвалиться, что ты программист.
Ну так понимание работы компа - не самоцель. А смысл всех абстракций - как раз скрывать детали, не имеющие отношения к решению задачи
>>Ну так понимание работы компа - не самоцель. А смысл всех абстракций - как раз скрывать детали, не имеющие отношения к решению задачиПоверь многие не знают как чё работают , а получившийся результат изучают джэвеэмят , кьюбитят , отделяют в квм машине потом под себя чужое осваивают, распилив не мало плевав на автора.
> ну да, сделать какую-то работающую хрень, совершенно не понимая как работает комп,
> память, ввод-вывод. Зато потом можно хвалиться, что ты программист.Давайте писать все на Ассемблере. Я могу, но как-то не хочу без необходимости. Главное, что дает ЯП — это набор готовых абстракций и средства для построения новых. Даже Ассемблер — абстракция над двоичным машинным кодом, но почему-то на этом не остановились.
Программисту совершенно не обязательно знать, как работает компьютер на низком уровне. Ему надо знать, как работает среда выполнения.
> Программисту совершенно не обязательно знать, как работает компьютер на низком уровне.
> Ему надо знать, как работает среда выполнения.Кажется, что это кредо современного веба.
Именно так. Потому что в данном случае среда исполнения — это браузер. Который может быть запущен на винде под x86, может на мобилке под ARM, а может и на линуксе под E2K.
> ну да, сделать какую-то работающую хрень, совершенно не понимая как работает комп,
> память, ввод-вывод. Зато потом можно хвалиться, что ты программист.Если это работающая хрень, да еще и хорошо работающая, то пусть как хочет себя называет. Дайте две.
> - Метапрограммирование на максималкахНу только отлаживать это тяжело, несмотря на наличие макростепера. И ошибки ужасные.
> - Интерактивная разработка и REPL: вместо цикла отредактировать-перекомпилировать-запустить менять код работающей программы.
Это толькож в Common Lisp так и то для этого куча кода написана. А обычный REPL и в питоне есть.
> - Унифицированный синтаксис, поддерживающий структурное редактирование
Просто скажи прямо: всме надоело ставить (а главное редактировать скобочки) и написали плагин, который это делает сам. В языке с остуапми или {} гораздо проще двигать блоки кода.
> Чтобы понять, насколько все это кайфово, нужно с этим поработать и врубиться, но это опасно, мейнстримные ЯП начнут казаться убогими.
Не начнут. Сокрее наоборот. Часто нужен достаточно простой и прямолинейный язык, а вся сложность заключена в алгоритмах, которые больше про математику. К тому же у таких языков обычно проблемы с библиотеками и вечный интероп с окружающим миром.
>> - Интерактивная разработка и REPL
> Это толькож в Common LispСдаётся мне что ты REPL Clojure и Erlang в глаза не видел.
> В языке с остуапми или {} гораздо проще двигать блоки кода.
Нет, такого composable как в лиспах нет больше нигде.
>> ... мейнстримные ЯП начнут казаться убогими
> Не начнут. Сокрее наоборот ...Создатель Clojure смотрит на тебя с ...
Ну на Кложу я не смотрел, этого не скрываю. С лиспом опыт есть, но больше по схеме. Ну так что там с реплом то? Как в коммоне запускается удаленный сервер, которому можно слать команды на обновление участков кода?> Создатель Clojure смотрит на тебя с ...
Что за холуйство, не вижу интереса в кложуре для себя хотя бы из-за динамической типизации, зачем мне нужен еще один яп для этого. Кстати, судя по вакансиям далеко не я один так думаю.
> Ну на Кложу я не смотрел, этого не скрываю. С лиспом опыт
> есть, но больше по схеме. Ну так что там с реплом
> то? Как в коммоне запускается удаленный сервер, которому можно слать команды
> на обновление участков кода?Всё верно.
> не вижу интереса в кложуре для себя
Ну так и не чеши языком о том о чём не знаешь и знать не хочешь.
>> не вижу интереса в кложуре для себя
> Ну так и не чеши языком о том о чём не знаешь
> и знать не хочешь.Ну говорю же типичный фанбой. Держи свое мнение при себе. Ты давай про отладку макросов раскажи или про отстуствие работы. Сам то работаешь за деньги на этом языке?
> Сам то работаешь за деньги на этом языке?Пишу на сабже за деньги. Задавай вопросы.
> Нет, такого composable как в лиспах нет больше нигде.ОЧЕНЬ частое мнение у знающих людей https://www.youtube.com/watch?v=oSmqbnhHp1c , что sexpr синтаксис не для людей. Про это прям слайд есть. Конечно, анону виднее.
Да и если бы все так просто было, то paredit, wisp (https://srfi.schemers.org/srfi-119/srfi-119.html), rhombus и прочая ерунда не появилась бы. Приверженцы скобок останутся в изгнании как жалкая кучка социофобов.
> ОЧЕНЬ частое мнение у знающих людей что
> sexpr синтаксис не для людей. Про это прям слайд есть. Конечно,
> анону виднее.Не позорься, лучше сходи в анналы и почитай почему в лиспе для программиста оставили s-expr.
> Приверженцы скобок останутся в
> изгнании как жалкая кучка социофобов.Скобочкофоб идика ты со своим "ценным" мнением вдоль.
>> ОЧЕНЬ частое мнение у знающих людей что
>> sexpr синтаксис не для людей. Про это прям слайд есть. Конечно,
>> анону виднее.
> Не позорься, лучше сходи в анналы и почитай почему в лиспе для
> программиста оставили s-expr.Это мнение разработчика Naughty Dog.
>> Приверженцы скобок останутся в
>> изгнании как жалкая кучка социофобов.
> Скобочкофоб идика ты со своим "ценным" мнением вдоль.Это мнение и Matthew Flatt
>- Интерактивная разработка и REPL: вместо цикла отредактировать-перекомпилировать-запустить менять код работающей программы.Надеюсь, вы реально пишите на этом языке. Так вот, есть файл, в нём есть пара методов, и этот файл загружен в repl. Тут один из методов удаляется. Как остальной код отреагирует на это удаление? Будет ссылаться на несуществующий метод? Падать? Напишет ли он список ошибок или нет?
>Чтобы понять, насколько все это кайфово, нужно с этим поработать и врубиться, но это опасно, мейнстримные ЯП начнут казаться убогими.Попробовав Ocaml, я уже не хочу возвращаться к динамически типизированным программам.
Метод в FP? 🤦♂️Чтобы удалить функцию из VM тебе нужно перекомпилить весь NS.
Соответственно ты получишь ошибку компиляции.
Я не знаю какая у вас терминология, особенно с учётом jvm. Есть модуль A с функциями foo, bar и b с baz ссылающеся на foo. Вот foo удалён, и я перезагружаю a. Ошибка ктомпиляции прямо на этом этапе? Тогда в чём выгода перед статической типизацией?
> Метод в FP? 🤦♂️
> Чтобы удалить функцию из VM тебе нужно перекомпилить весь NS.
> Соответственно ты получишь ошибку компиляции.И потерять все состояние приложения? Отличный план, Уолтер, просто офигительный, если я все правильно понял, надежный, блин, как швейцарские часы.
А зачем тогда мне все эти свистопляски, если в любом другом яп, я точно также перезапущу приложение и потеряю состояние.
Ты не понял. Состояние никуда не денется, равно как и старый код. NS просто не будет загружен, пока ты не приведёшь все саязанные с ним участки кода в консистентный вид. В твоём примере, нужно будет сперва убрать ссылки на модуль А из модуля Б, и уж потом только загружать новую версию А.
>Какую задачу призван решить этот язык?Нескучный синтаксис для тех, кому стало скучно склеивать абстрактные фабрики фасолин на ванильной яве и захотелось на полшишечки в лисп, фп и прочие крутые слова, и кому плевать на производительность.
>В чём его преимущества?
Сомакбукчники в коворкингах одобрительно качают гривой.
Про синтаксис, конечно, немного утрировал, но это не слишком далеко от истины.
Кложа действительно не полноценный язык в привычном понимании, а тонкая надстройка над явой с небольшим набором собственных батареек и костылей. И об этом глобусе под совой нужно постоянно помнить.
Clojure в продакшене, можно или зашквар - https://www.youtube.com/watch?v=9SOFqWYpf9Y&ab_channel=IT....Это все что я знаю о кложуре.
Покажите что ли как hello world выглядит на ней, сколько платят и какого рода задачи решают. Можно реальные примеры из жизни?
> сколько платят и какого рода задачи решают.Да типичные задачи, которые можно и на другом яп с успехом решить. Платят норм, но "конкурс" на место очень большой, по факту работы мало. В крупных конторах язык забанен (не в списке разрешенных). Думайте.
Нашел такое:(ns hello-world.core)
(defn -main []
(println "Hello, World!"))
$ clj -M -m hello-world.coreСудя по всему на рынке слабо востребовано. Все одно главное это хранилище данных, все остальное пляски в вводе/выводе в него на разных языках.
можно так:(ns max-example.core)
(defn max [a b]
(if (> a b)
a
b))(defn -main []
(println (max 10 20)))
или так:
(ns max-example.core)(defn max [a b] (if (> a b) a b))(defn -main [] (println (max 10 20)))я познаю clojure... только нафига?
> я познаю clojure... только нафига?
Ты встал на путь просветления!
Нишевая штука. Чтоб на ней прогать надо менять мышление, так как там не только lisp(скобочки) но и иммутабельность во все поля.
Бесполезно чуть менее, чем полностью. Потому что ChatGPT вам не помощник, а значит придётся нанимать профессионалов, а это не выгодно. Выгоднее 18 летнего стажера-гуманитария, который с помощью Copilot и JS накидает всё то же самое в 10 раз быстрее и в 100 раз дешевле (-:
Чатгопота в лиспах как раз меньше путается, так как там структура всегда присутствует и она не зависит от tabs vs spaces, { on its own line, и прочих граблей преткновения. Иногда даже весьма дельные советы даёт, если не требовать слишком много.
Язычок чисто на поржать. Работа для избранных.linkedin.com:
python in United States
351,691 resultsjava in United States
318,690 results
c# in United States
62,356 resultsgolang in United States
5,756 results
Lisp in United States
1,461 results
clojure in United States
83 results
Тебе одно нормальное место работы нужно или на 35 работать параллельно будешь?
>> 83 results~1.6 per state
Посмотри, сколько из них находятся близко к дому, а сколько — ремоут. И что это твое единственное место за пару сотен миль.Хотя ты же анонимный гений, они перенесут место работы прямо к твоей двери.
При необходимости тебе и переезд обеспечат, и удалёнку согласуют. Быть программистом и работать в офисе в 2к24 это премия Дарвина.