以下斜め読んだ内容

pseudo translation of useful posts, book reviews, remarks,etc. twitter: feeddict

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
  • technoweenie/coffee-resque - GitHub
    • Resque(ruby/redisベースのbackground jobシステム)のnode/coffeescript/redis版
  • ruby/pythonの影響は少々あるけどcofeescriptはjsのシンタックス
  • jsのシンタックスはとても気に入ってるし
  • cofeescript以外に好きな言語はjs
    • もっとjsにダイブするよ