Как стать автором
Обновить
0
Рейтинг

Clojure *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

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

Python *Программирование *Функциональное программирование *F# *Clojure *
Tutorial

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

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

Новости

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

Python *Программирование *Функциональное программирование *F# *Clojure *
Recovery mode

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

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

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

Программирование *Lisp *Emacs *Clojure *
Перевод

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

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

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

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

Программирование *ReactJS *Учебный процесс в IT Clojure *
Перевод
Tutorial
Хабр, привет.

Я — 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
Просмотры 2.2K
Комментарии 0

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

Ненормальное программирование *Программирование *Функциональное программирование *Clojure *
Перевод

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

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

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

Функциональное программирование *Читальный зал Clojure *

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



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


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


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


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

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

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

Блог компании SkillFactory Программирование *Учебный процесс в IT Clojure *Лайфхаки для гиков
Перевод
Рич Хикки — создатель языка программирования Clojure, независимый разработчик ПО и консультант с 20-летним опытом работы в различных областях разработки ПО. Примерно 2,5 года в одиночку работал над Clojure, прежде чем кому-либо его показать.

image

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

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

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

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

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

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

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

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

Блог компании Exness Программирование *Функциональное программирование *Clojure *Финансы в IT

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


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


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

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

Java *Lisp *Функциональное программирование *Clojure *
Из песочницы
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Pragmatic Functional Programming» автора Robert C. Martin (Uncle Bob).

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

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

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

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

Программирование *Алгоритмы *Функциональное программирование *Clojure *
imageПри создании приложения, активно взаимодействующего со сторонними сервисами и системами, часто требуется обеспечить обмен информацией с ними, односторонний или двусторонний

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

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

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


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

Книга «App from scratch»

Совершенный код *Проектирование и рефакторинг *ООП *Функциональное программирование *Clojure *

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


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


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


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


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


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


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

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

Визуализируем FHIR — IT-стандарт для медицины

Разработка веб-сайтов *IT-стандарты *API *ECM/СЭД *Clojure *



Здравствуйте. Меня зовут Андрей, я работаю в компании, создающей IT-решения в области медицины. В качестве основного языка разработки мы используем Clojure, а также (в зависимости от проекта/модуля) Python, Javascript, Go, C, C#, Rust, Objective-C и т.д.

Важное место в нашем технологическом стеке занимает международный стандарт FHIR (Fast Healthcare Interoperability Resources), определяющий формат хранения/обмена/предоставления медицинской информации в электронном виде и включающий в себя спецификацию RESTful API клиент-серверного взаимодействия.

Некоторое время назад я начал пет-проект приложения, которое визуализирует содержимое ресурсов произвольного FHIR-сервера и позволяет производить базовые CRUD — операции. В КДПВ показан скриншот страницы редактирования элемента ресурса типа Patient.

Под катом небольшое описание и ссылка на онлайн-демо — можно будет пощупать настоящий живой FHIR-сервер, потыкать кнопочки, посмотреть/посоздавать/поредактировать различные ресурсы и даже попробовать вызвать тот самый хабраэффект! )
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 7.3K
Комментарии 14

OpenSource на Clojure

Блог компании Конференции Олега Бунина (Онтико) Разработка под iOS *Разработка мобильных приложений *Дизайн мобильных приложений *Clojure *
В Run Loop приглашают тех, кто делает классные продукты своими руками. Никита Прокопов (tonsky) — человек и пароход, успел сделать несколько OpenSource проектов, которыми с удовольствием пользуются другие люди.

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



О госте: Никита Прокопов примечателен тем, что создал FiraCode, внёс заметный вклад в развитие Clojure сообщества и опубликовал в OpenSource такие проекты как Datascript и Rum. Помимо этого он пишет на Objective-C под macOS: программа AnyBar подскажет о наступлении какого-либо события в statusbar, ой, menubar вашего компьютера.

Ведущие: Роман Бусыгин (разработчик Яндекс.музыки для iOS) и Алексей Милеев (App in the Air).
Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Просмотры 4.2K
Комментарии 4

Make frontend «backend» again

Блог компании JUG Ru Group JavaScript *Clojure *
Николай Рыжиков предложил свою версию ответа на вопрос, почему же так сложно разрабатывать пользовательский интерфейс. На примере своего проекта он покажет, что применение на фронтенде некоторых идей из бэкенда сказывается как на сокращении сложности разработки, так и на тестируемости фронтенда.



Материал подготовлен на основе доклада Николая Рыжикова на весенней конференции HolyJS 2018 Piter.
Всего голосов 30: ↑25 и ↓5 +20
Просмотры 10K
Комментарии 16

Операция на сердце: как мы переписывали основной компонент DLP-системы

Блог компании Ростелеком-Солар Информационная безопасность *Анализ и проектирование систем *Управление продуктом *Clojure *
Переписывание legacy-кода как поход к стоматологу – вроде, все понимают, что надо бы пойти, но все равно прокрастинируют и стараются оттянуть неизбежное, потому что знают: будет больно. В нашем случае дела обстояли еще хуже: нам надо было переписать ключевую часть системы, и в силу внешних обстоятельств мы не могли заменять старые куски кода на новые по частям, только все сразу и целиком. И все это в условиях нехватки времени, ресурсов и документации, но с требованием руководства, что в результате «операции» ни один заказчик не должен пострадать.

Под катом история о том, как мы переписали основной компонент продукта с 17-летней историей (!) со Scheme на Clojure, и все сразу заработало как надо (ну, почти :)).


Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Просмотры 4.1K
Комментарии 2

О декомпозии кода замолвим слово: контекстное программирование

Совершенный код *Clojure *

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

Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 5.7K
Комментарии 28

Erlang-like микросервисы в Clojure приложении: это просто

Erlang/OTP *Параллельное программирование *Clojure *Микросервисы *

Как известно в кругу Erlang разработчиков: только Erlang разработчики знают как "жить" правильно а все остальные "живут" — неправильно. Не пытаясь оспаривать этот факт, приведем пример Clojure приложения в стиле Erlang, используя библиотеку Otplike.

Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 5.2K
Комментарии 19

Java 9 — Вы уже перешли? Нет? И не надо ...!?

Программирование *Java *Scala *Clojure *

Недели две назад InfoQ напомнил, что официальная поддержка Java 9 заканчивается… в Марте 2018г. (т.е. через 20 дней :)


Вот cсылка на официальный EOL от Oracle, в которой в разделе "Java SE Public Updates" черным по английскому говорится, что Java 9 будет поддерживаться до Марта 2018, а Java 8до Января 2019 (или позже) и Декабря 2020 (или позже).

Читать дальше →
Всего голосов 29: ↑24 и ↓5 +19
Просмотры 42K
Комментарии 36

Объединяем Websockets, Lisp и функциональное программирование

Ненормальное программирование *Разработка веб-сайтов *Lisp *Функциональное программирование *Clojure *
Из песочницы

Alt text


Объединяем Websockets, Lisp и функциональное программирование. Но как?

Читаем
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 5.7K
Комментарии 4

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

Совершенный код *Функциональное программирование *Clojure *
Перевод

Движение к функциональному программированию началось всерьез примерно десятилетие назад. Мы видели как такие языки как Scala, Clojure и F# стали привлекать внимание. Это движение было больше чем просто обычное восхищение «О, круто, новый язык!». Было что-то действительно побуждающее это движение — или мы так думали.

Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Просмотры 15K
Комментарии 100

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