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 II: The Wrath of Khan"
Search
Michael Ficarra
June 29, 2012
Programming
3
910
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
37
Introduction to Property Testing in JavaScript
michaelficarra
3
920
Getting Started with PureScript
michaelficarra
16
4k
SpiderMonkey Parser API: A Standard For Structured JS Representations
michaelficarra
14
5.4k
[WIP] Foundations of Functional Design, Abstract Algebra, and Category Theory
michaelficarra
6
300
Select Ways to Harness the Power of JavaScript
michaelficarra
4
170
An Analysis of the Redesign of the CoffeeScript Compiler
michaelficarra
7
1.5k
Redesigning the CoffeeScript Compiler
michaelficarra
11
1.8k
MINIX
michaelficarra
0
170
Other Decks in Programming
See All in Programming
Ruby製社内ツールのGo移行
bgpat
2
270
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
PRO
1
350
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
1.8k
Laravel OpenAPIによる"辛くない"スキーマ駆動開発
kentaroutakeda
2
2.1k
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
110
設計の知識と技能で駆動するソフトウェア開発
masuda220
PRO
19
11k
OpenTelemetry のサービスという概念について
azukiazusa1
1
410
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
9
2.6k
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
Parallel Socket Communication in Swift
s_shimotori
0
260
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
470
SwiftUI, Jetpack Composeの導入で変化した「家族アルバム みてね」のアプリ開発体験
hicka04
6
400
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
14
1.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
11
1.4k
Web development in the modern age
philhawksworth
201
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
242
20k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
The Art of Programming - Codeland 2020
erikaheidi
40
12k
How GitHub Uses GitHub to Build GitHub
holman
467
290k
Designing the Hi-DPI Web
ddemaree
275
33k
Fontdeck: Realign not Redesign
paulrobertlloyd
75
4.8k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
Visualization
eitanlees
135
14k
Why Our Code Smells
bkeepers
PRO
330
56k
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