« 【再考】プロセスで品質を作りこむ | トップページ | 資本政策の重要性 »

2008/01/14

【感想】JavaScript読書会#2

JavaScript読書会#2へ行ってきた。
48人も集まったよ(~o~)
はるばる東京や三重から来た人もいるし!(^^)!

今日も通称サイ本の輪読。
中身の濃かった勉強会の内容を整理するために書いてみる。

【1】関数型言語HaskellをJavaScriptで書き換えてみる

ライトニングトークスでUjihisa君の話「JavaScriptとHaskell」が興味深かった。
Haskell読書会に出たものの、どうしてもHaskellのソースは読めなかったけれど、JavaScriptで置き換えてくれてようやく、Haskellが分かった気がした。

詳細は発表資料を見ればよいが、JavaScriptの無名関数やブロックを巧みに使うと、Haskellのソースを基本的に全て翻訳できる。
但し、Haskellの遅延評価や無限配列はJavaScriptでは書けないらしい。

JavaScriptを関数型言語で置き換えると、どんな利点があるのか?

僕はまだ分からないけれど、少なくとも、prototype.jsの中身のソースにcuury関数が定義されているように、Ajaxのような非同期処理を読みやすくする技術に使われているようだ。


【2】マルチスレッドプログラミングに弱いJavaScriptを補強するライブラリ群

JavaScriptのマルチスレッド関係のお話も興味深かった。

そのライブラリは、わずか40行のソースで、sleep()やwait()、setTimeOut()をJavaScriptで実現する。
そのライブラリを使ったJavaScriptソースを見ると、try{}catch{}構文ではなく、「.」で繋がったメソッドチェーン形式のソース。
#つまり、5.times.(...)みたいなソースのこと。

そのソースは、初めて見る人はビックリすると思う。

JavaフレームワークよりもRailsが優れている点の一つに、メソッドチェーン形式のソースのため、英語の文章を読んでいるかのような雰囲気になる所があること。
JavaScriptでは、非同期処理をメソッドチェーンで書くという斬新さがある。


【3】プロトタイプチェーンという発想がプロトタイプベースのオブジェクト指向を規定している

サイ本を議論した内容は「ステートメントと式の違いは?」「.(ドット)は演算子なのか?」などのような、まるでJavaScriptの仕様を最初から勉強し直すような高度なもの\(^o^)/

nanya_tさんの下記の質問から、全員を巻き込んだ「プロトタイプチェーン」の熱い議論が始まった。
Lingrから抜粋した一部の会話を見よ。
#以下、Lingrから抜粋したので敬称略。

◆nanya_tさん
//falseは何故?
A=function(){}
A.prototype = {
get: function() {return this.x*2;}
}
a=new A();
alert(a.constructor==A);

//trueは何故?
A=function(){}
a=new A();
alert(a.constructor==A);

◆amachang
A.prototype = {} とすると、もともとの prototype プロパティの中身が破壊されるので constructor がおかしくなる(Object で上書きされる)

よって、さっきの例では、(new A).constructor が Object

◆deq
aはAのインスタンスで,Aはconstructorをもってるけどaはもっていない

a.prototype は A で a.prototype.constructor ってこと,でいいのかな?

◆cuzic
個人的にはメソッド探索のチェインが重要だと思うんだけどな。

◆Tagawa
あかん・・amachang先生とnanto先生の議論に付いていけない。

◆kanasan
多分、かなりの人間がついていってない。

◆nitoyon
amachang先生とnanto先生の議論はあとで配布します(別売)

deqさんのログが、本質的な回答になると思う。


【4】Lingrというチャットを使った議論が新鮮

サイ本を読んでいるバックグラウンドでは、Lingrというチャットルームで、参加者全員が質問や突っ込み、告知を行うというスタイル。
#LingrはRuby on Rails で作られているらしい。
#ちなみに「36 chatters and 10 observers」でした。凄すぎ。。

誰も喋らない間でも、Lingrではすごく熱い。
参考URLを貼ってくれたり、サンプルソースを貼り付けてくれるので、非常に分かりやすい。

僕も突っ込んだり、質問すると、必ず誰かがフォローしたり、答えてくれる。
話すよりも書く方が楽な時もあるので、自分の考えをまとめたり、他人のソースコードを読む時に非常に役立つし楽しい。

一昨日のRuby関西でも、Lingrを使った。
こなみ先生のソースインスペクションのレッスンでも、勉強会の議論は少ないけれど、Lingrでは、お題に上がったソースを皆が色んな観点から批評して、逆に勉強になった。

今や関西の勉強会では、Lingrは必須だ!(^^)!


【感想】
関西のコミュニティの中でkanasan.jsは、最も集客力を誇るRuby関西よりも、参加人数も議論のレベルも上回るかもしれない。

48人もの参加者へ細やかな気配りをして頂いたkanasan、そしてスタッフの方々に本当に感謝です。

|

« 【再考】プロセスで品質を作りこむ | トップページ | 資本政策の重要性 »

コミュニティ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/49479/17696705

この記事へのトラックバック一覧です: 【感想】JavaScript読書会#2:

« 【再考】プロセスで品質を作りこむ | トップページ | 資本政策の重要性 »