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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
93
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
Flow は今どうなっているか
mizdra
PRO
0
650
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
740
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
130
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
250
Dockerfile CMD for Node.js
grazie1999
0
110
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
340
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
160
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
560
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
VibeCodingからAgenticWorkflowへ
starfish719
0
700
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.9k
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
350
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Design in an AI World
tapps
1
280
Balancing Empowerment & Direction
lara
6
1.2k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
650
A better future with KSS
kneath
240
18k
We Are The Robots
honzajavorek
0
300
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
Prompt Engineering for Job Search
mfonobong
0
410
How to make the Groovebox
asonas
2
2.3k
Utilizing Notion as your number one productivity tool
mfonobong
4
550
Google's AI Overviews - The New Search
badams
0
1.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
350
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