K(Kanasan.JS の感想)(難しい話)
表題は K Combinator で書かれています。
1日遅れですが Kansan.JS の感想を。
まず、主催者の Kanasan さん, ujihisa さん、お疲れ様でした。
ID にさん を含む人に敬称を付けるとおもしろいなあと思った。
関西だけであれだけすごい人がいるのかと思うと
眩暈がして吐き気がしてしばらくくらくらしてた。
昨日はここまで書いて力尽きた。ここで終わるのはあんまりなので、
漸く落ち着いてきたところで、メモと記憶を頼りに Kanasan.JS の復習、感想など。
- 遠足は家に帰るまでが遠足、勉強会は家に帰ってブログに感想書くまでが勉強会!
- ビルトインオブジェクトとブラウザ固有のオブジェクトがある(後者は window, navigator)
- prototype.js は Ruby にかなり影響されてるらしい
勉強会にも、Ruby をやってる人がたくさんいた。
- 暗黙の型変換
「!!」は暗黙の型変換を利用した boolean 値への変換である
- K Combinator, I Combinator, Y Combinator
- Prototype.K の K は K Combinator の Kらしい。
- K Combinator は K(a)(b) = a となるもの。
- I Combinator は I(a) = a となるもの。
- Y Combinator は正直よくわかりません。
以上、こちらを参考にした。
http://openlab.jp/skk/SKK.html
ところで、Prototype.K はこう定義されてる。
function(x) { return x }
あれ?でも K Combinator は K(a)(b) = a となるものだから
K Combinator は例えばこうなるんじゃないのか。
K = function(a){
return function(b){return a}
}
Prototype.K はむしろ I Combinator では?
表題のように、難しい話は俺 K Combinator で単語だけ書きとめてスルーしたので、この辺覚えてない。「むしろ ID だ」っていう話も出てきてたはず。
combinator の定義はこういうことらしい。コピペ。
http://www.loveruby.net/ja/misc/ycombinator.html
ちなみにコンビネータっていうのはプログラム意味論の用語。手続き名も含む「変数」がすべて束縛変数である (引数になっている) λ式のこと。そういうλ式はまわりの環境に依らずに同じ動作ができる……つまり完全に自分自身の意味が固定されている。
ここは Y Combinator を理解できるまで要復習。
- lexical scope と dynamic scope があって、javascript は lexical scope である。
static scope という言い方もするみたい。
内容は以前にクロージャって何だろうと思った時に理解した部分。
呼び方は覚えてなかった。最近、単語を全く覚えられない。dybamic scope は debug 大変、LISP はそうらしい。
- prototype と __proto__ の違い
ActionScript のドキュメントがわかりやすかった。
http://livedocs.adobe.com/flash/8_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002584.htmlオブジェクトの作成に使用された、クラスの prototype プロパティ (ActionScript 2.0) またはコンストラクタ関数 (ActionScript 1.0) を参照します。
ここは後でもちょっと復習する。 - arguments.callee の読み方は「コーリー」(今まで自分の中でカリーって読んでた)
こういうの使ってるとプロっぽい。って言ってる時点でアウトか。
- for ループで出てこないのは dontEnums 属性が設定されてる property で、これは中の人にしかさわれない
dontEnums 属性の付いてるものは結構一杯あるぽい。 http://d.hatena.ne.jp/brazil/20060521/1148223479
- for in ループの時、int とか boolean は代入だけど Object は参照らしい。
- ブラウザによって event Object の取得方法が異なるので、bindAsEventListener がある
そういえば、自分は prototype.js の bind の実装を見て始めて apply, call を理解した。 それまで this 参照がどこ行くのかよくわからなかった。
まとめ
勉強会はものすごい刺激になった。 自分一人だと絶対に適当なところでスルーしてしまうようなことに対して、 言語仕様や他の言語の知見を元に理解している、しようとしている姿勢には衝撃を受けた。 わからない部分、ちょっとむず痒い部分を誰かが挙げると、 それに対してかなり深い部分から考察が入るので、 その場で理解できなかったことまで含めて、相当の勉強になった。他の人のレベルがすごすぎて比喩的表現ではなくて、帰途以降吐きそうだ。
今後の自分の方向性を見失いかけてるけど、まあ楽しいと思える範囲でぼちぼちやって行ったらいいや。
SE 方向にズレるとか、なんか会議でおもしろいことを言う人とかの方向性に逃げるのはまだ早い。それも大事なことだけど。もうちょっとプログラマとしてがんばろうと思う。吐かない程度に。
トラックバック(0)
このブログ記事を参照しているブログ一覧: K(Kanasan.JS の感想)(難しい話)
このブログ記事に対するトラックバックURL: http://pm.11op.net/mt/mt-tb.cgi/90
コメントする