SlideShare a Scribd company logo
Open your Clojure 
https://www.dropbox.com/s/5ge6ppbcgchc02v/clojure-nick.pdf 
Николай Линкер
Clojure -это 
•Лисп 
•Динамический строго типизированный 
•Функциональный 
•Под JVM 
•Тёплое ламповое коммьюнити
Самый быстрый способ погружения
О, б-жечки, скобки!
Мы –рабы привычек 
•Обычные калькулятры 
•МК-61
Но мы можем выработать новые привычки! 
•Java 
•!k, ++a, a++ 
•!a ? b + 1: b –1 
•new java.util.ArrayList(10) 
•Math.pow(2, 10) 
•“hello”.substring(1, 3) 
•Integer.MAX_VALUE 
•obj.field 
•alist instanceof java.util.List 
•Clojure 
•(not k), (inc a), … 
•(if (not a) (inc b) (dec b)) 
•(new java.util.ArrayList 10) 
•(Math/pow 2 10) 
•(.substring “hello” 1 3) 
•Integer/MAX_VALUE 
•(.field obj) 
•(instance? java .util.List alist)
Гармония, как она есть 
(+ 2 3) 
Это просто список 
Сначала вычисляются аргументы 
Затем сама операция
Code = data = code 
•Код = абстрактное синтаксическое деревонепревзойдённая лёгкость оперирования с самой программой
Динамический строго типизированный 
(count [1 2 3]) 
(count {:a 1 :b 2 :c 3}) 
(count #{1 2 3}) 
(count ‘(1 2 3)) 
(:a {:a 1 :b 2 :c 3}) ; => 1 
({:a 1 :b 2 :c 3} :c) ; => 3
REPLAndroid users: https://play.google.com/store/apps/details?id=com.sattvik.clojure_replУмная командная строка + поддержка IDE
Функциональный 
•Функции –главная движущая сила 
•Неизменяемые коллекции 
•Структуры данных объявляются, не присваиваются 
•Контролируемое изменение данных (atoms, STM)
Функциям здесь хорошо 
•(*42 42) 
•(fn [x] (* x x)) 
•((fn [x] (* x x)) 42) ; => выдаст число 
•(def sq (fn [x] (* x x))) 
•(defn sq [x] (* x x)) 
•#(* % %) ; лямбдочка, 1 параметр 
•#(* %1 %2) ; лямбдочка, 2 параметр
Изменение неизменяемого 
«изменение» списка 
«изменение» дерева
Atoms, Refs, Agents
Как выглядит программа на Clojure 
•Вначале идёт неймспейс 
•Потом декларация(-ии) require
Как выглядит программа на Clojure 
•Потом определяются функции, константы и может быть макросы
Тёплое ламповое коммьюнити 
•Замечательный доклад, программирование в реальном времениhttp://jokerconf.com/#ryzhikov 
•http://clojure.org 
•http://tryclj.org 
•Коммьюнити менее фрагментировано по сравнению со Scala
Have fan!
Спасибо

More Related Content

PDF
Clojure – есть ли жизнь после Java
PDF
Reform: путь к лучшему ORM
PDF
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
PDF
Леонид Васильев "Python в инфраструктуре поиска"
PDF
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PDF
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
PPTX
Stream API: рекомендации лучших собаководов
Clojure – есть ли жизнь после Java
Reform: путь к лучшему ORM
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Леонид Васильев "Python в инфраструктуре поиска"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Stream API: рекомендации лучших собаководов

What's hot (20)

PDF
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
PPT
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
PDF
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
PDF
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
PDF
Парсим CSS
PDF
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
PDF
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
PDF
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
PPTX
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
PPTX
PowerShell
PDF
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
PDF
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PDF
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
PPTX
Groovy и Grails. Быстро и обо всём
PDF
Web осень 2013 лекция 2
PDF
Software Transactional Memory
PDF
Базы данных. Введение
PDF
Асинхронный JavaScript
PPTX
Mysql vs postgresql
PDF
Семь тысяч Rps, один go
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
Парсим CSS
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
PowerShell
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Groovy и Grails. Быстро и обо всём
Web осень 2013 лекция 2
Software Transactional Memory
Базы данных. Введение
Асинхронный JavaScript
Mysql vs postgresql
Семь тысяч Rps, один go
Ad

Similar to 2014-11-01 03 Николай Линкер. Open your clojure (20)

PDF
Java 9: what is there beyond modularization
PDF
Формальная верификация кода на языке Си
PDF
Формальная верификация кода на языке Си
PDF
Formal verification of C code
PDF
Functional
PDF
Лекция 11. Тестирование.
PPTX
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
PPTX
Clojure: Lisp for the modern world (русская версия)
PDF
Cache2012 administrationbasics
PDF
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
PPTX
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
PDF
Лекция #5. Введение в язык программирования Python 3
PDF
Web осень 2013 лекция 6
PPT
Производительность в Django
PDF
Обзор ES2015(ES6)
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
PPTX
Система обработки бизнес-логики server-side приложения на Groovy
PDF
Excel in Javascript
PDF
PostgreSQL performance recipes
PDF
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Java 9: what is there beyond modularization
Формальная верификация кода на языке Си
Формальная верификация кода на языке Си
Formal verification of C code
Functional
Лекция 11. Тестирование.
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Clojure: Lisp for the modern world (русская версия)
Cache2012 administrationbasics
Гареев Роман, Создание генератора промежуточного представления Ssa из полиэдр...
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Лекция #5. Введение в язык программирования Python 3
Web осень 2013 лекция 6
Производительность в Django
Обзор ES2015(ES6)
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
Система обработки бизнес-логики server-side приложения на Groovy
Excel in Javascript
PostgreSQL performance recipes
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Ad

More from Омские ИТ-субботники (20)

PDF
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
PDF
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
PDF
2017-05-06 02 Илья Сиганов. Зачем учить машины?
PDF
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
PDF
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
PDF
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
PDF
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
PDF
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
PDF
2017-02-04 02 Яков Лило. Решение задач
PDF
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
PDF
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
PDF
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
PDF
2016-12-03 03 Евгений Тюменцев. DSL на коленке
PDF
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
PDF
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
PDF
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
PDF
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
PDF
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
PDF
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
PDF
2016-09-17 03 Василий Полозов. WebRTC
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 02 Яков Лило. Решение задач
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-09-17 03 Василий Полозов. WebRTC

2014-11-01 03 Николай Линкер. Open your clojure