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
3
990
Schmonference 2012: Introducing "CoffeeScript II: The Wrath of Khan"
Michael Ficarra
June 29, 2012
Tweet
Share
More Decks by Michael Ficarra
See All by Michael Ficarra
Data Encodings and Representations
michaelficarra
1
60
Introduction to Property Testing in JavaScript
michaelficarra
3
990
Getting Started with PureScript
michaelficarra
16
4.3k
SpiderMonkey Parser API: A Standard For Structured JS Representations
michaelficarra
14
5.8k
[WIP] Foundations of Functional Design, Abstract Algebra, and Category Theory
michaelficarra
5
360
Select Ways to Harness the Power of JavaScript
michaelficarra
4
190
An Analysis of the Redesign of the CoffeeScript Compiler
michaelficarra
7
1.7k
Redesigning the CoffeeScript Compiler
michaelficarra
11
1.9k
MINIX
michaelficarra
0
340
Other Decks in Programming
See All in Programming
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
12
7.1k
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.4k
iOSでSVG画像を扱う
kishikawakatsumi
0
160
品質ワークショップをやってみた
nealle
0
620
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
350
Pythonに漸進的に型をつける
nealle
1
120
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
950
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
190
NIKKEI Tech Talk#38
cipepser
0
160
ALL CODE BASE ARE BELONG TO STUDY
uzulla
27
6.6k
One Enishi After Another
snoozer05
PRO
0
150
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
800
Featured
See All Featured
Docker and Python
trallard
46
3.6k
Navigating Team Friction
lara
190
15k
How to train your dragon (web standard)
notwaldorf
97
6.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
580
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Faster Mobile Websites
deanohume
310
31k
The Cult of Friendly URLs
andyhume
79
6.6k
RailsConf 2023
tenderlove
30
1.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Why Our Code Smells
bkeepers
PRO
340
57k
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