Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Schmonference 2012: Introducing "CoffeeScript I...
Search
Michael Ficarra
June 29, 2012
Programming
1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Schmonference 2012: Introducing "CoffeeScript II: The Wrath of Khan"
Michael Ficarra
June 29, 2012
More Decks by Michael Ficarra
See All by Michael Ficarra
Data Encodings and Representations
michaelficarra
1
94
Introduction to Property Testing in JavaScript
michaelficarra
3
1k
Getting Started with PureScript
michaelficarra
16
4.4k
SpiderMonkey Parser API: A Standard For Structured JS Representations
michaelficarra
14
6k
[WIP] Foundations of Functional Design, Abstract Algebra, and Category Theory
michaelficarra
5
400
Select Ways to Harness the Power of JavaScript
michaelficarra
4
210
An Analysis of the Redesign of the CoffeeScript Compiler
michaelficarra
7
1.7k
Redesigning the CoffeeScript Compiler
michaelficarra
11
2k
MINIX
michaelficarra
0
420
Other Decks in Programming
See All in Programming
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
580
プロポーザルを書いてもらう
pvcresin
0
590
Deep dive into the select statement (GopherCon UK)
jespino
0
150
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
270
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
510
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
570
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
320
Flow は今どうなっているか
mizdra
PRO
0
760
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
550
高専キャリア LT 発表内容
crysta1221
5
4.7k
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
800
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
How to build a perfect <img>
jonoalderson
1
5.9k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Typedesign – Prime Four
hannesfritz
42
3.1k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
So, you think you're a good person
axbom
PRO
2
2.1k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
Michael Ficarra Schmonference 2012 CoffeeScript II: The Wrath of Khan
None
None
THIS GUY
http://kck.st/HDNjnC
http://arborjs.org/halfviz/#/MjU3Mw
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
None
None
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
None
advantages • standardised intermediate representations • more powerful parser •
better error reports • forces consistent indentation ▪ and allows a consistent base indentation, useful for compiling copied sections of code • two-pass variable naming • specify output formatting • line mappings
advantages: tooling • automatic code formatting in editor • syntax
highlighter • code coverage • static analysis tools ▪ dead code detection ▪ cyclomatic complexity ▪ reassignment warnings ▪ detecting non-idiomatic style (linting)
None
and now for something completely different
let-expressions do ($ = jQuery) -> ... (function($){ ... })(jQuery)
not in, not of, not instanceof a not in b
a not of b a not instanceof b [].indexOf.call(b, a) < 0 !(a in b) !(a instanceof b)
anonymous classes fn class then method: -> fn((function() { function
_Class() {} _Class.prototype.m = function() {}; return _Class; })());
switch on truthiness switch when a then b switch (false)
{ case !a: b; }
destructuring everywhere a for {prop: a} in b var a,
_i, _len; for (_i = 0; _i < b.length; _i++) { a = b[_i].prop; a; }
destructuring everywhere ({prop: a}) -> (function(_arg) { var a; a
= _arg.prop; });
semicolon is seq operator a = (fn(); b) var a;
a = (fn(), b);
binary number literals 0b1001100110111 0x1337
follow the project on twitter @CSatGRPN https://twitter.com/CSatGRPN
None