【感想】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、そしてスタッフの方々に本当に感謝です。
| 固定リンク
「コミュニティ」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- 『世界一流エンジニアの思考法』が学べる環境を手に入れてかつ継続する方法の感想 #devboost(2023.12.10)
- 第25回東京Redmine勉強会の感想 #redminet(2023.11.05)
- パターンカタログよりもモンスターカタログの方が面白いね #jasstkansai(2023.06.24)
- デブサミ2023の感想(2023.02.11)
コメント