Drkcore

05 07 2011 javascript coffeescript Tweet

coffeescriptを触ってみている

ついでにnode.jsのアップデートをしつつ、npmを入れた。/usr/localのownerを変更するのは気持ち悪いが、自分しか使わないのでまぁいいかなと(参考)。

注)こっちのほうが良いやり方らしい

tar xvfz node-v0.4.9.tar.gz 
cd node-v0.4.9/
./configure 
make
sudo make install

sudo chown -R $USER /usr/local
curl http://npmjs.org/install.sh | sh

npm install -g coffee-script

さて、CoffeeScriptとはjavascriptにコンパイルできる小さな言語です。文法がPythonっぽいのでとっつきやすそう。

関数適用に括弧がいらない

引数が一つのときだけ?

coffee> add = (x,y) -> x+y
[Function]
coffee> add(1,2)
3
coffee> add 1 2
Error: In repl, Parse error on line 1: Unexpected 'NUMBER'
    at Object.parseError (/usr/local/lib/node_modules/coffee-script/lib/parser.js:472:11)
    at Object.parse (/usr/local/lib/node_modules/coffee-script/lib/parser.js:548:22)
    at /usr/local/lib/node_modules/coffee-script/lib/coffee-script.js:29:22
    at Object.eval (/usr/local/lib/node_modules/coffee-script/lib/coffee-script.js:88:10)
    at Interface.<anonymous> (/usr/local/lib/node_modules/coffee-script/lib/repl.js:39:28)
    at Interface.emit (events.js:64:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)

coffee> add1 = (x) -> x+1
[Function]
coffee> add1 3
4

内包標記が使える

coffee> numbers = [1,2,3,4,5]
[ 1, 2, 3, 4, 5 ]
coffee> odds = (n for n in numbers by 2)
[ 1, 3, 5 ]

なかなか楽しげ

ベターJavaScript!? CoffeeScriptが注目されるワケ

Ashkenas氏によれば、JavaScriptからCoffeeScriptに移植したあるライブラリは、元の1/3のコード量になったものがあるといいます。また、JavaScriptにある仕様上の欠陥や落とし穴の多くはCoffeeScriptによって避けられるとしています(欠点を知り、それらを避ける方法をまとめた「JavaScript: The Good Parts――「良いパーツ」によるベストプラクティス」という書籍もありますね)。

ProductName JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Douglas Crockford
オライリージャパン / 1890円 ( 2008-12-22 )


JavaScriptにある仕様上の欠陥や落とし穴を知っておくということも大切ですね。というわけで、次回の読書会は7/30に静岡でやる予定になっています。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021