Erlang ブーム ?
lethevert さんの 「4/27を境に突然日記の数が増えたような。」という言及を見て,4/27 に何があったんだ ? と思っていたんだけど.
どうやら Erlang が @IT とやらに取り上げられたらしい (via Matz にっき).
あんがい,世の中ってのは,動くときはすぐ動くんだなーと.ボクが Erlang を始めて知ったのは 2 年ぐらい前,卒論の下調べのために KL1/GHC 周辺を色々調べていた頃.「並列論理型言語があるのに,理論的性質がほとんど同じ並列関数型言語ってのはないのかね ?」と疑問に思っていたら,shelarcy さん経由あたりで知ったような.
# まぁ,関数型とか論理型とかいうのは本質を外した古い見方で,重要なのは理論的に扱い易い形にプログラムを書いておいて,あとは破壊的更新なり,並列分散実行なりは機械的な最適化の結果に過ぎない (人間が最初から意識して書く必要は無い),というパラダイムだと思う.
そして k.inaba さんがひっそりと取り上げていたのを見ていたような頃には,今のこういう動きなんて想像もしてなかったよ.
一過性のブームでも何でも良いので,名前や考え方自体が広がるのは良いことだと思う.だいたい,3 年ぐらい前,Ruby が今ここまでメジャー (?) になる (なんせ,東大の般教や,刑務所の更正プログラムに採用されるほど) なんて誰も思ってなかっただろうし.Java から Ruby へ,なんて本,当時は冗談としか思えなかっただろうし.
# 今なら,Ruby から Haskell へ ! ぐらいの無茶度だと思う.
あんがい,あと 5 年ぐらいしたら,普通に Plan9/Inferno あたりがブームになったりしないかね ? ま,そりゃ無いか.OS の世界は,MS が圧倒的だからなぁ.
個人的には,プログラミング言語なんてのは単なるインタフェースだから,OS が古いパラダイムなのに,表層だけ変わってもしょうもないと思うんだけど.人類の通過儀礼というか,段階的なパラダイムシフトのための儀式だと思えば,非常に意義深く重要だと思う.あと 30 年ぐらいしたら,MS Windows じゃなくて Google の分散 OS が主流になってるかもしれないし (ボクは 54 歳か… まだまだ定年じゃないね).
極論を言えば,並列・分散技術ってのは,仕様とは全く関係無い一最適化技術なので,プログラマが意識してはいけない領域だと思う.逐次環境だろうが,並列分散環境だろうが,動作は同じになるはず.違いは使えるリソースの量だけ.つまり,逐次と並列分散環境で,プログラムの書き方が変わるような言語は,抽象化が不十分と言わざるを得ない.
ただ,並列言語や関数型プログラミングが流行るのは良いけれど,それらはあくまでも手段に過ぎないので,肝心の本来の目的の方が忘れられなければ良いな,とは思う.オブジェクト指向とやらの二の舞にならないように (オブジェクト指向の枠組みに綺麗にハメルことが重要なんじゃなくて,特定の問題を上手く解決できるということが重要).
どうやら Erlang が @IT とやらに取り上げられたらしい (via Matz にっき).
あんがい,世の中ってのは,動くときはすぐ動くんだなーと.ボクが Erlang を始めて知ったのは 2 年ぐらい前,卒論の下調べのために KL1/GHC 周辺を色々調べていた頃.「並列論理型言語があるのに,理論的性質がほとんど同じ並列関数型言語ってのはないのかね ?」と疑問に思っていたら,shelarcy さん経由あたりで知ったような.
# まぁ,関数型とか論理型とかいうのは本質を外した古い見方で,重要なのは理論的に扱い易い形にプログラムを書いておいて,あとは破壊的更新なり,並列分散実行なりは機械的な最適化の結果に過ぎない (人間が最初から意識して書く必要は無い),というパラダイムだと思う.
そして k.inaba さんがひっそりと取り上げていたのを見ていたような頃には,今のこういう動きなんて想像もしてなかったよ.
一過性のブームでも何でも良いので,名前や考え方自体が広がるのは良いことだと思う.だいたい,3 年ぐらい前,Ruby が今ここまでメジャー (?) になる (なんせ,東大の般教や,刑務所の更正プログラムに採用されるほど) なんて誰も思ってなかっただろうし.Java から Ruby へ,なんて本,当時は冗談としか思えなかっただろうし.
# 今なら,Ruby から Haskell へ ! ぐらいの無茶度だと思う.
あんがい,あと 5 年ぐらいしたら,普通に Plan9/Inferno あたりがブームになったりしないかね ? ま,そりゃ無いか.OS の世界は,MS が圧倒的だからなぁ.
個人的には,プログラミング言語なんてのは単なるインタフェースだから,OS が古いパラダイムなのに,表層だけ変わってもしょうもないと思うんだけど.人類の通過儀礼というか,段階的なパラダイムシフトのための儀式だと思えば,非常に意義深く重要だと思う.あと 30 年ぐらいしたら,MS Windows じゃなくて Google の分散 OS が主流になってるかもしれないし (ボクは 54 歳か… まだまだ定年じゃないね).
極論を言えば,並列・分散技術ってのは,仕様とは全く関係無い一最適化技術なので,プログラマが意識してはいけない領域だと思う.逐次環境だろうが,並列分散環境だろうが,動作は同じになるはず.違いは使えるリソースの量だけ.つまり,逐次と並列分散環境で,プログラムの書き方が変わるような言語は,抽象化が不十分と言わざるを得ない.
ただ,並列言語や関数型プログラミングが流行るのは良いけれど,それらはあくまでも手段に過ぎないので,肝心の本来の目的の方が忘れられなければ良いな,とは思う.オブジェクト指向とやらの二の舞にならないように (オブジェクト指向の枠組みに綺麗にハメルことが重要なんじゃなくて,特定の問題を上手く解決できるということが重要).
J - ■ 新入社員が社内トップレベルとかいうはなし。
「Lispを勉強するとGoogleのMap Reduceを理解するのに役立つとかRadium Software Developmentで読んだんですけど、Lisp勉強するのて役に立つんですか?」とかそんな感じのことを聞かれてちゃんと答えられない僕。情けない。(TODO:Map Reduceを勉強する(しない))
lethevert is a programmer - ■MapReduce
MapReduce の場合はGFSを前提にして作っているので、XXXを使ってMapReduceライブラリを作ったYO、とか言っても、おいおいGFSまで実装したのかよみたいな、感じなので。そもそも、mapしてreduceするだけなら、シェルでもできそうなので、なんでもできるでしょ、みたいな気がする所を、まーネタだから、とわかっているうちはいいのでしょうけど、それを忘れてくると言葉だけが独り歩きしはじめて、一気にBuzzword化してしまって、もともとのものが持っていた問題意識とその解決策を忘れてしまって、またそのうち誰かが別の言葉で再発明して、みたいなループは生産的でないですからね。
