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
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
48
React Kyiv – Dec 19, 2017
roman01la
1
230
React & ClojureScript in production at Attendify
roman01la
0
200
Web Apps performance & JavaScript compilers
roman01la
3
140
Introduction to React.js
roman01la
0
94
React Native: Native Mobile Development in JavaScript @ LvivJS 2016
roman01la
0
160
React Native: Are we there yet? (Pokémon edition) @ VinnytsiaJS '16
roman01la
0
430
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
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.9k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
スマート反転とウェブアクセシビリティ
camiha
0
210
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
450
Java 27新機能 / Java 27 new features
kishida
2
150
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
180
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
650
What We Talk About When We Talk About XP
m_seki
2
660
Family mrubyの進捗
kishima
1
130
Are APIs Still Relevant in the AI Era?
soyuka
0
280
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.6k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.5k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Exploring anti-patterns in Rails
aemeredith
4
510
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Curious Case for Waylosing
cassininazir
1
510
The untapped power of vector embeddings
frankvandijk
2
1.9k
Chasing Engaging Ingredients in Design
codingconduct
0
320
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
530
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
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