第二回名古屋Scala勉強会に参加してきた

http://groups.google.co.jp/group/NagoyaScala?pli=1

id:bleis-tiftが参加していたのと、言語を学ぶ機会を増やすということで、名古屋Scala勉強会に参加してきました。
この勉強会で使用するScalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)(通称コップ本)を前日に衝動買いしたのは良いのですが、翌日はテストだったので、テスト勉強と並行して読んでいました。
そのときに初めてScalaのコードを読んだのですが、正直面白い。
個人的には静的型付けの方が扱いやすいことが多いと思っている*1ので、その意味でも、関数型とオブジェクト指向をハイブリッドに扱えるという点も非常に興味深い言語でした。
まあ、これについては学習を含めて後々。


同様に参加するid:rf0444と共に電車に乗り、id:bleis-tift名古屋駅で合流して会場まで徒歩で移動。時間も遅かったので、結構ギリギリになってしまった。
自己紹介の後にあらかじめ提出されていた疑問点を話始めましたが、Ruby, Java, Eiffel, Common Lispなど、別の言語に関しての話がかなり膨らみました。
その中でも、個人的に収穫が大きかったのが、「動的OOP」はそもそも「静的OOP」と違うという事でした。今までRubyなどのLL言語がそもそもOOPと呼ばれるのにすごく違和感があったのですが、その理由は型を用いていないので、そもそもそれに関する扱いが異なるということだったのですよね。
型を用いていないので、そもそもLSP*2の適応ができないのです。
LSPはOOPの原則と受け取っていただけに、大分イメージが変わりました。
その代わりに、動的OOPでは、どの様な原則を適用すべきかという問題点が未だにあるということに気がつきましたが……。


ただ、今後Scalaをやっていこうと思えるモチベーションはいただけました。
何とか時間を作ってやりたいですね、色々と。

*1:あくまで個人的。動的型付けはなんだかしっくり来ない。動的型付け言語を扱った事がないので、あくまで参考程度にしておいて下さい。

*2:リスコフの置換原則。簡単に言えば上位のクラスのインスタンスはサブクラスのインスタンスに置き換え可能で無ければならない。そうしなければ、サブクラスのインスタンスを使用したときに副作用が発生する可能性がある。