Klint Finley「CofeeScriptクリエータへのインタビュー」
ReadWriteWeb Hack 2011.1.7のエントリ
Interview: Jeremy Ashkenas Talks About CoffeeScript
coffeescriptクリエータJeremy Ashkenasへのインタビュー
以下斜め読んだ内容
Q:documentcloudでオープンソースプロジェクト走らせてるのに更にcoffeescript始めたわけ
- jsゴリゴリ書くwebアプリの開発やってるときにアイディアが膨らんでいった
- jsの冗長さからするっと解放してくれる言語、jsのgood partsを取りこぼさない言語
- coffeescriptとunderscore.js。この2つは同じ問題への解決。アプローチが違うだけ
- coffeeプロジェクト=個人プロジェクト。docuentcloudで使うことを正当化できないから。
Q:Jeremyが興味持ってるliterateなプログラミングについて
- Donald Knuth発祥のアイディア。人間が読むエッセーの如くコードを書くこと
- マシン向けにするだけでなく人間にも読みやすく。
- 人間により読みやすくしていくことへ注力
Q:ver.1.0リリースしたけど今後は?
- 安定性。色々なエッジケースに対応。今2kぐらいなのをもっとコンパクトに
- デバッグの改良。例外発生時に.coffeeファイルでマッピングできるようにしていく
- githubのgraphみるとコミュニティに支えられてることがわかる
- ブラウザのjsエンジンが今後coffeescriptのようなjsへコンパイルされる言語へのサポートを充実させていくプランがあるみたいなので期待
Q:coffeescriptを使う利点は?
- 約1/3のコード量で簡潔に一貫性もってコード書ける
- jsのgood partsだけを受け取り、jsのはまるところは脇に追いやれる
- "there's no coercive equality, with(), prototype-chain-mucking-about, fall-through-switch-statements, incorrectly chained comparisons ... and so on"
- jsで書く時と同じ速度のコード。時々jsで書いたときよりも早いコード
- コードが速い理由の1つ。forEach()は使わずforでループ回すから
- 役立つ機能のサポート
- 正しいprototypeベースのclass
- comprehensions over arrays and objects,
- bound function literals,
- safe, lexical variables
- destructuring assignment
Q:coffeescriptのデメリットは?
- jsへコンパイルというひと手間発生
- クリーンで読みやすいjsに変換という部分は守ったままこの手間を軽減したい
- 「--watch」オプションでディレクトリ監視して.cofeeファイル更新されたら.jsも更新したりとか
- マイナー言語同様にcoffee使える人を探す手間が発生
- js知ってる人なら1〜2時間で把握できると思うが
Q:js知らないとcoffeescript使えない?
- YES。coffeescriptのシンタックスはjsそのもの。
- jsのテクニック、tips系はだいたいcofeescriptでも使える
- cofeescriptでjqueryもいい感じで使える。
- シンタックスはjsと同じだからnodeだろうとprototype.jsだろうと大丈夫
- ピュアcoffeescriptライブラリをjsライブラリ側から利用することもできる。
- cofeescriptとjsの相互利用はとかのGWT他のjsへ変換する言語にはない利点
Q:注目してるピュアcoffeescriptのプロジェクト
- いくつかある
- riak-js
- Riakクライアント
- stephank's orona
- tank gameのhtml5版
- technoweenie/coffee-resque - GitHub
- Resque(ruby/redisベースのbackground jobシステム)のnode/coffeescript/redis版
- ruby/pythonの影響は少々あるけどcofeescriptはjsのシンタックス
- jsのシンタックスはとても気に入ってるし
- cofeescript以外に好きな言語はjs
- もっとjsにダイブするよ