Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ClojureScript, что ты такое?
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Roman Liutikov
May 22, 2016
Programming
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ClojureScript, что ты такое?
KharkivJS #6 21.05.2015
Roman Liutikov
May 22, 2016
More Decks by Roman Liutikov
See All by Roman Liutikov
ClojureScript × Type Inference
roman01la
0
52
React Kyiv – Dec 19, 2017
roman01la
1
240
React & ClojureScript in production at Attendify
roman01la
0
210
Web Apps performance & JavaScript compilers
roman01la
3
140
Introduction to React.js
roman01la
0
99
React Native: Native Mobile Development in JavaScript @ LvivJS 2016
roman01la
0
170
React Native: Are we there yet? (Pokémon edition) @ VinnytsiaJS '16
roman01la
0
440
React Native: Native mobile development with JavaScript
roman01la
0
210
ClojureScript: what are you?
roman01la
2
140
Other Decks in Programming
See All in Programming
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
140
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
Workers Cache を知る
syumai
0
360
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Jetpack Compose Mechanisms
skydoves
3
820
golang-bob.pdf
iwatsukayura
0
130
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
残高管理から台帳サービスへの進化
artoy
1
200
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
How to Talk to Developers About Accessibility
jct
2
580
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
How to build a perfect <img>
jonoalderson
1
6.1k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Transcript
ClojureScript что ты такое? Роман Лютиков
Зачем мне другой язык для веба?
Возможные причины • Я делаю сложные интерфейсы • Я хочу
быть более эффективным • Я устал от JavaScript
Зачем нам языки компилируемые в JavaScript? • Я все еще
хочу разрабатывать в вебе • Но сложность систем растет с каждым днем • Мне нужны соответствующие инструменты • Меньше сложности и неочевидности
Что же выбрать?
Идеальный язык должен быть… • Простым • Выразительным • Минимум
синтаксических конструкций • …
None
None
None
(CAR (CDR (CAR '((A B C) D E F))))
Сервер Клиент
(defn double [x] (* x 2)) (double 4)
function double(x) { return x * 2; } (defn double
[x] (* x 2))
Влияние на JavaScript • Неизменяемые структуры данных • Интерактивная разработка
• Единое глобальное состояние • Трансдьюсеры • Деструктурирование • Остаточные параметры
ClojureScript • Функциональное программирование • Неизменяемые структуры данных • Отличная
стандартная библиотека • Интерактивная разработка • Надежная экосистема • Мощный оптимизирующий компилятор
Где это можно использовать? • Сервер: JVM, Node.js • Клиент:
ClojureScript + React.js • Mobile: ClojureScript + React Native
Совместимость с JavaScript • Доступ к window в пространстве имен
js • Модули: AMD, CommonJS, ES2015 • Набор функций для работы с примитивами JS
Инструменты Код • Atom, LightTable, Vim, Emacs, … • Parinfer
Инструменты Сборка
Инструменты Сборка • Leiningen (зависимости и сборка) • Figwheel (перезагрузка
кода) • Devcards (разработка UI в изоляции)
None
Инструменты Отладка • Source maps • Dirac (Chrome DevTools для
CLJS)
None
Инструменты Тестирование • cljs.test • doo
SPA • Reagent + re-frame • Om • Rum
Библиотеки • clojars.org • cljsjs.github.io • clojurewerkz.org • www.clojure-toolbox.com
С чего начать? • jsbin.com • cljsfiddle.com • clojurescript.net •
planck-repl.org
Что почитать? • clojurescript.ru • kanaka.github.io/clojurescript/web/synonym.html • clojuredocs.org • github.com/clojure/clojurescript/wiki
• gitter.im/dev-ua/clojure • clojurians.net
Недостатки ClojureScript • Синтаксис Лиспа (высокий порог входа) • Непопулярность
• Меньше вакансий, чем на JavaScript
Ну и зачем мне язык, с которым сложно найти работу?
Чтобы расти как разработчик • Чтобы улучшать свои инструменты •
Чтобы перенимать практики • Чтобы не замыкаться в рамках одного языка/ парадигмы • Чтобы быть лучшим разработчиком
(вопросы?) Спасибо! @roman01la