Advertisement
Advertisement

More Related Content

Similar to Личный взгляд на Clojure(20)

Advertisement

Личный взгляд на Clojure

  1. Clojure Личный взгляд
  2. Срыв покровов — Это не тот Common Lisp — Разница культур — Это очень мощный и выразительный язык... — ...подкрепленный Лиспом — Скобочки не только круглые )))
  3. Основное — Работа с коллекциями — Неизменяемость — Транзакционная память — Типы там, где они нужны
  4. Все, что есть в ООП — Расширение протоколов — Паттерн-матчинг — Ссылочные объекты
  5. ClojureScript — Компилируется в JS — Модульность, неймспейсы, макросы — Повторное использование кода Clojure — Om — биндинг к React
  6. Свобода действий — Макросы — свой DSL, например, ORM — работа с деревьями (XML, HTML) — многопоточность
  7. ORM DSL example (-> (select :*) (from :users) (where '(= id 5) '(= status "active")) sql/format)
  8. Еще о макросах (/ (* 2 (+ 2 3)) 100) (expr (2 + 3) * 2 / 100) (for [item some-seq] (* item 2)) (-> initial func1 func2 func3)
  9. IDE — Емакс (trollface) — Light Table — Idea plugin — Cursive IDE
  10. Гомогенность — Ring — призводительный веб-фреймворк — приложение это функция (app request) — добавили роутинг — получили функцию — добавили мидлварь — получили функцию — и тд.
  11. Разве можно ничего не менять? (defn wrap-user [view] (fn [request] (view (assoc request :user (when-let [user-id (-> request :session :user-id)] (get-user-by-id user-id)))))) (def app (-> app-routes auth/wrap-user))
  12. Не надо про скобочки! — Они теперь разные (function($){$('.foo').click(function() {alert(123);})})(jQuery); — 18 шт
  13. Лисп упрощает сам себя (get (get (get response :data) :user) :name) (getin response [:data :user :name]) (-> response :data :user :name)
  14. Pros — библиотеки — простота — uberjar: деплой, дистрибуция, кроссплатформенность — свобода — производительность — Google for "awesome-clojure"
  15. Cons — непривычно! — для серьезной разработки нужен Емакс — (пока еще) мало вакансий — ограничения Java-платформы
  16. Спасибо! Вопросы?
Advertisement