Как стать автором
Обновить
0.93

Clojure *

Уголок языков Clojure и Clojure REPL

Сначала показывать
Порог рейтинга
Уровень сложности

Язык Janet для смертных. Часть 1 — Значения и ссылки

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 2.3K

Это первая глава перевода небольшой книги о языке Janet за авторством Иана Генри (Ian Henry). В этой книге раскрываются различные аспекты работы с языком, обьяснение синтаксиса и некоторых приемов программирования.

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 5

Новости

Minecraft и REPL: взаимодействие

Время на прочтение 8 мин
Количество просмотров 1.4K

История одной оптимизации во время мастер-класса Clojure Minecraft

В июне компания JUXT приняла участие в ClojureD, ежегодной замечательной конференции по Clojure в Берлине. В течение дня проводился ряд семинаров, на которых рассказывалось о конкретной идее или инструменте и предлагалось поработать с ними. Наша группа решила посетить семинар "Изменим мир (Minecraft) с помощью кода", который проводили Арне Брассер (Arne Brasseur), Ариэль Алекси (Ariel Alexi) и Фелипе Баррос (Felipe Barros). В этом посте рассказывается о том, как мы использовали полученные на семинаре знания для создания изображений в игре и оптимизировали код с помощью Tufte.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 0

Как писать ненормальный код и зачем это может быть нужно

Время на прочтение 5 мин
Количество просмотров 12K

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

Читать далее
Всего голосов 27: ↑24 и ↓3 +21
Комментарии 35

Абстрактный Clojure

Время на прочтение 10 мин
Количество просмотров 1.3K

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 0

Истории

Принципы SOLID в Clojure

Время на прочтение 7 мин
Количество просмотров 1.3K

Роберт К. Мартин (Robert C. Martin) (дядя Боб) назвал пять основных принципов проектирования программного обеспечения SOLID. Такой акроним помогает людям легче запомнить их. Мне очень нравятся подобные мнемоники, потому что всем нам нужна помощь для фиксации в памяти необходимой информации. Чем проще закрепить знания, тем большему мы способны научиться.

Благодаря большому опыту проектирования программного обеспечения, эти принципы были разработаны для того, чтобы помочь создать ПО, которое можно поддерживать в работоспособном состоянии на протяжении длительного времени. Это благо для мира ОО (object-oriented — объектно-ориентированный), что об этих и подобных принципах так много говорят. Они были идентифицированы, переработаны, названы и кодифицированы. И теперь можно открыто говорить о них, при этом люди понимают, что вы имеете в виду. Такого рода вещей, как ни странно, совершенно не хватает в мире функционального программирования.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 1

Clojure за 15 минут

Время на прочтение 7 мин
Количество просмотров 8K

Краткий экскурс в синтаксис Clojure, который настолько лаконичен, что вы сможете прочитать этот раздел примерно за 15 минут.

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 5

Зачем Clojure Flutter

Время на прочтение 13 мин
Количество просмотров 6.9K

”Если вам нравятся Руби, Свифт, Дарт, Эликсир, Эльм, С++, Питон или даже С, используйте их ради бога. Но выучите Кложур, и выучите его хорошо” — Дядя Боб (твит, а также твиты: 1, 2, 3).

Статей о Clojure написано много, цель этой — дать свое видение некоторых преимуществ языка для кросплатформенной разработки на Flutter. Ориентируюсь в первую очередь на dart-разработчиков, но статья может быть интересна всем, кто работает с Clojure и/или Flutter.

Читать далее
Всего голосов 16: ↑14 и ↓2 +12
Комментарии 17

Как начать писать приложения на ClojureDart

Время на прочтение 4 мин
Количество просмотров 4.8K

16 апреля зарелизился ClojureDart, а это значит, что для любителей Clojure открылась возможность писать мобильные, веб- и десктоп-приложения на Flutter. Зачем использовать для этого Clojure, как бы очевидно это ни было, выходит за границы фокуса статьи.

На текущий момент инструменты еще не отшлифованы, нет репла(!) и автодополнений для dart-интеропа, но пользоваться можно, и некоторые плюшки кложуры уже показали себя (например, nest-макрос, убирающий проблему вложенности).

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

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 2

DIY VSCode плагин для Clojure

Время на прочтение 4 мин
Количество просмотров 3.8K
image

На энном году работы с использованием Clojure/Clojurescript в качестве основных языков разработки, я наконец-то дошел до стадии, когда «больше терперть уже нельзя», и написал таки свой плагин для этой цели. Это явилось результатом многолетних поисков, лишений и страданий. Как говаривал Мичурин: мы не можем ждать милостей от природы, взять их у нее – наша задача. Интересующихся прошу под кат.

Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 2

Основы функционального программирования на Python

Время на прочтение 19 мин
Количество просмотров 51K

Этот пост служит для того, чтобы освежить в памяти, а некоторых познакомить с базовыми возможностями функционального программирования на языке Python. Материал поста разбит на 5 частей:

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 42

Функциональное ядро в виде конвейера на Python

Время на прочтение 12 мин
Количество просмотров 8.4K

Главная задача этого поста – показать один мало применяемый на языке Python архитектурный шаблон под названием «функциональное ядро - императивная оболочка», в котором функциональный код концентрируется внутри, а императивный код выносится наружу в попытке свести на нет недостатки каждого из них. Известно, что функциональные языки слабы при взаимодействии с «реальным миром», в частности с вводом данных пользователем, взаимодействием с графическим интерфейсом или другими операциями ввода-вывода. В рамках такого подхода весь императивный код выталкивается наружу, и внутри остается только функционально-ориентированный.

Читать далее
Всего голосов 9: ↑1 и ↓8 -7
Комментарии 78

Что не так с Лиспом?

Время на прочтение 8 мин
Количество просмотров 17K

Я попытаюсь проанализировать некоторые часто повторяющиеся критические замечания в адрес Lisp, чтобы пролить свет на этот вопрос и на то, почему его так часто задают.

Позвольте мне начать с пары слов для тех кто не в курсе. Lisp - это семейство языков, включая Common Lisp, Emacs Lisp и несколько диалектов, которые...

Так что же не так с лиспом?
Всего голосов 29: ↑20 и ↓9 +11
Комментарии 207

Reagent: Минималистичный React для ClojureScript

Время на прочтение 8 мин
Количество просмотров 3.8K
Хабр, привет.

Я — PM, которые лезет в то, что его может сожрать. Так что, я перевела часть документации по Reagent, если будет полезно, выложу продолжение.


In the no-holds-barred world of coding, the end justifies the extreme.

Введение в Reagent


Reagent обеспечивает минималистичное взаимодействие между ClojureScript и React. Он позволяет вам создавать эффективные компоненты React, используя только простые функции ClojureScript и данные, которые описывают пользовательский интерфейс, используя Hiccup-подобный синтаксис.

Цель Reagent — сделать возможным создание произвольно сложных пользовательских интерфейсов, используя пару основных понятий, и быть по-умолчанию достаточно быстрым, чтобы вам редко приходилось думать о производительности.

Простейший компонент Reagent

может выглядеть примерно так:
(defn simple-component []
  [:div
   [:p "I am a component!"]
   [:p.someclass
    "I have " [:strong "bold"]
    [:span {:style {:color "red"}} " and red "] "text."]])


Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Ближайшие события

Функциональное программирование, знакомься — ООП

Время на прочтение 9 мин
Количество просмотров 11K

Мне нравится экспериментировать с разными парадигмами и играться с разными интересными (для меня) идеями (некоторые из них превращаются в посты: раз, два). Недавно я решил проверить, смогу ли я писать объектно-ориентированный код на функциональном языке.

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 6

Книга «Clojure на производстве»

Время на прочтение 7 мин
Количество просмотров 8.5K

Неделю назад в издательстве "Ридеро" вышла книга "Clojure на производстве". Как ее автор, расскажу о ней подробнее: что внутри и кому она полезна.



Общие сведения


Это книга о том, как применять Clojure в настоящих условиях: не сортировать списки в олимпиадных задачах, а поднимать веб-приложения, строить системы, писать тесты. Мой опыт с Clojure показывает, что переход от теории к практике происходит болезненно. Руководства обещают чистоту и неизменяемость, но на практике нам дают код, полный побочных эффектов и состояния.


Это книга — попытка облегчить погружение в практику. Одновременно хочу развеять ложные надежды: Clojure — прекрасный язык, но и в нем не бывает чудес.


От других материалов по Clojure книга отличается следующим. Прежде всего, это не перевод. Я не зря делаю на этом акцент во вступлении. Проблема переводов в том, что в издательствах не понимают технические термины и пытаются их адаптировать. Token становится маркером, trait — чертой, persistence — сохранностью. Формально перевод корректный, но пропадает живость описания, и к нему падает интерес. В своей книге я не срезал углы: если у слова нет однозначного перевода, я ставил английский вариант — тот, в котором мы видим его каждый день.

Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 36

Гамак дривен девелопмент: «Сон — это важная часть работы программиста»

Время на прочтение 20 мин
Количество просмотров 7.9K
Рич Хикки — создатель языка программирования Clojure, независимый разработчик ПО и консультант с 20-летним опытом работы в различных областях разработки ПО. Примерно 2,5 года в одиночку работал над Clojure, прежде чем кому-либо его показать.

image

Предлагаю вашему вниманию расшифровку доклада 2010 года «Hammock Driven Development»

Это просто доклад, основанный на опыте. Не научный доклад, не будет какой-то методологии, науки или чего-то ещё.

Когда был последний раз, когда вы всерьёз думали о чем-то целый час? Чтобы вас никто не беспокоил и вы могли сосредоточиться. Или целый день? Помните ли вы день, когда вы могли целый день над чем-то думать? Или месяц? Почти всё время думая над чем-то? Или год?

Это чрезвычайно ценные моменты, если они у вас вообще есть. Я считаю, что мне очень повезло, я мог думать о трех разных вещах в течение года или более. Одной из них был Clojure. И нет ничего, что я ценю больше, чем такое время.

Еще одна вещь, которую я хотел бы спросить: «Когда вы в последний раз чувствовали себя уверенно, пытаясь сделать то, чего никогда раньше не делали?» И как вы думаете, что нужно, чтобы стать уверенным в том, чего вы никогда не делали раньше?

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

Поэтому я начну с того, что расскажу о некоторых вещах в области разработки софта, о которых мы все знаем, что это правда.
Всего голосов 18: ↑11 и ↓7 +4
Комментарии 7

Оцениваем опционы на Clojure методом Монте-Карло

Время на прочтение 3 мин
Количество просмотров 3.1K

Привет! Меня зовут Рома, я работаю iOS-разработчиком в Exness. А кроме того, пишу на Clojure и инвестирую.


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


Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 4

Прагматическое функциональное программирование

Время на прочтение 6 мин
Количество просмотров 6.2K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Pragmatic Functional Programming» автора Robert C. Martin (Uncle Bob).

Переход к функциональному программированию всерьез развился только около десяти лет назад. Мы видим, что такие языки, как Scala, Clojure и F# привлекают внимание. На самом деле это был большой шаг в программировании: “О, круто, новый язык!” — энтузиазм… Видимо там было что-то особенное — ну или это мы так думали.  

Закон Мура гласит нам, что скорость компьютеров будет удваиваться каждые 18 месяцев. Данный закон действовал с 1960-х до 2000 годов. Затем он прекратился. Частота достигла 3 ГГц, а затем и вовсе поднялась на плато. Мы достигли скорости света! Сигналы не могут распространяться по поверхности чипа достаточно быстро, чтобы обеспечить более высокие скорости. 

Это привело к тому, что инженеры оборудования изменили свою стратегию. В попытках увеличить пропускную способность, они добавили больше процессоров (ядер). А чтобы освободить место для этих ядер, они удалили большую часть оборудования для кэширования и конвейеризации из чипов. Из-за этого процессоры стали намного медленнее, чем раньше; однако их стало больше. В итоге увеличилась пропускная способность. 
Читать дальше →
Всего голосов 21: ↑14 и ↓7 +7
Комментарии 20

Парсим X12 «на коленке»

Время на прочтение 13 мин
Количество просмотров 2.5K
imageПри создании приложения, активно взаимодействующего со сторонними сервисами и системами, часто требуется обеспечить обмен информацией с ними, односторонний или двусторонний

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

Одним из таких форматов электронного документооборота является EDI ANSI ASC X12, достаточно подробное описание которого приведено по ссылке.

КДПВ была взята с этого сайта


Под катом приведен простой алгоритм парсера X12 и код на Clojure, реализующий парсер и пример обработки распарсенных данных.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Книга «App from scratch»

Время на прочтение 2 мин
Количество просмотров 4.5K

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


Я прочитал много книг по программированию, но, часто, после прочтения у меня оставался только один вопрос — Как мне применить эти знания на практике?


Предположим, вы разработчик системы автоматизации, портала или интернет-магазина.
Добавление новой функциональности осложняется наслоениями кода. Запуск тестов занимает полчаса, а релиз — час. Идея о переходе на новую версию фреймворка вызывает нервные подергивания. Вы узнаёте, что PostgreSQL имеет поддержку массивов, jsonb, полнотекстового поиска и lateral join, но ORM не позволяет использовать их в полную силу. Вы прочитали про TDD, но как писать в таком стиле, когда аналитик описывает сценарии, а фреймворк требует создания модели, контроллера и представления?


Как применить SOLID, если сущности наследуют от ORM?


Как избавиться от боли?


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


В какой-то степени книгу можно рассматривать как практический самоучитель по Clojure,
так что знание этого языка не требуется.

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 14

Вклад авторов