- 2008/10/17 11:02
- dev
関数型言語に最近、またにわかに興味がわいてきました。
前にHaskell本を読んだ際には、「なるほど、再帰使ってループするのか」「変数の再代入が出来ないのか」ぐらいしか頭に入らず、実際どうやって使うんだこの言語??と思ってました。
しかし本を読んで以降、よく分かんないけど何か面白そう・・・!!とモヤモヤしていました。
関数型言語は、MELとPythonと、その他スクリプト言語ぐらいしか知らない僕にしてみたら、
今まで触れてきたもの(手続き型とかオブジェクト指向)ではない、何か全く別の形態に見えて、
非常に興味深いものとして脳に焼き付いたことは間違いないのです。
となったら使ってみたい。
でもどうやって使って良いものか。
まぁそもそもまだモナドとか遅延評価とか、言語自体がイマイチよく分かってませんので、
それも問題なのかもしれんのですが、Haskell使ってプログラム書く時って、具体的にどんな書き方になるんですか、というものが全く見えてこない。
クイックソートばっかり見せられても、正直アレですからね。。
そういえばこの感覚、MELを初めて触った時の感じとすごく似てる。
覚えたら絶対便利なんだけど、どこからどう触って良いか分からない。
当時はlsすら知らなかったから、
「おぉ!このコマンドで選んでるやつ持ってこれるのか!!」
「これでアトリビュートのセットが出来るわけね。」
「ここをこうすればこいつらが一斉に・・・動いた!よっしゃ!」
「うわっ!Syntax Error??なにこれ??どこが悪いの??この行見ても何も問題ないじゃん!エラーどこd・・・あ、上の行にセミコロンが無い。。。orz」
なんつって1コマンド動く度に一喜一憂してましたねー。懐かしい。
結局当時は会社にあったスクリプト、それもTDとかテクニカル強い人じゃなくてデザイナーの人が書いたホントに簡単なスクリプトを見て、いろいろ自分で解析して、自分風にアレンジして、なんてやってみてました。
今から考えるとあのスクリプト、いらない変数使ってたし、for文もまともな書き方じゃなかったし、もっと良い見本はいくらでも存在しえたんですよねー。
でもあの1歩があったからこそ今の僕が存在しているわけで、と考えると、汚いスクリプトでもまぁ無いよりは100倍マシだったわけで。
というわけでHaskellでもなにかお手本になるようなプログラムを探してみることから始めてみます。
CGに関連したネタと言うと、レンダラとOpenGLぐらいしか思いつきません。
ってホントはもうちょい普通のアプリケーション探せば良いんですけどね。
まぁモチベーション維持ってことで、、
で、見つけて来ました、レイトレーサwww
Htrace – Haskell Raytracer
HRay – a Haskell ray tracer
Ray Tracing in Haskell
この辺も見つつ、普通のアプリケーションなんかも探してみつつ、実際に書いてみるとかしてみようと思います。
まぁホントはPythonの一つも覚えた方がいいんでしょうけど、それだけだと飽きちゃうのが僕なので。。
なのでいろんな言語を覚えるのは結構好きだったりします。
Haskellがある程度使えるようになったら、他の関数型言語にも触れてみたいところです。
ErlangとかOCamlとかSchemeとかGaucheとかScalaとかいろいろあるようですし、適当に見繕って。
使いこなすことにも意義はあると思うんですが、僕はその言語の思想を、広く取り入れるという行為にも意義はあると考えています。
浅いところにばかりいたら理解できない思想もありますけどね。それはそれ。
C++もほどほどに放っておいてこんなんばっかりでいいのか、という気もしますが、
この後3年でCG屋辞めたりするわけじゃないですし、まぁやりたいようにやってみます。
- Newer: にわか関数型ブーム
- Older: RPS14リリースセミナー行ってきた。
Comments:2
- hohehohe2 2008/10/17
> 使いこなすことにも意義はあると思うんですが、僕はその言語の思想を、広く取り入れるという行為にも意義はあると考えています。
これは私も思います。視野広がるので言語にしても何にしても新しいもの覚える時はその奥の思想や概念を知るのが楽しいですね。mapreduceなど関数型言語の概念はいろんな所で使われているようですし、1つ位自分の中でベースになる言語作っとかないとなーと思ってます。極端な話知識が役に立たないでもいいです(いや、でもどうせならできれば・・・)。
Hugsインストールしてたので走らせて見ました。あ、できた、面白い♪
コメント行省いて169行(データ込み)で簡単なレイトレーサができるもんなんですねー。- tai 2008/10/17
>hohehohe2さん
> これは私も思います。
お、同意が得られて心強いですw僕が初めてそう思ったのは、以前MELしか使えなかった頃に、オブジェクト指向の言語(なんだったかは忘れましたが・・)の考え方に触れた時でした。
それ以降MELの仕様なんかにイライラ来てしまったりして、、w
それまでMELに不満なんてほとんど感じてなかったのに不思議。
そこでいろんな言語を知ることの意味を実感しました。> 1つ位自分の中でベースになる言語
現状Haskell触ってますが、特に明確な意味はなくて、なんとなく一番関数型然としているらしいから触ってみるか、、ぐらいなノリなので、僕も何か一つぐらい心のよりどころが欲しいです・・・w> Hugsインストールしてたので走らせて見ました。
僕は昨日ghcで走らせてみました。
速度的には結構アレですけど、こんなレイトレーサが存在するのか!と思うとすごく楽しかったです。今度是非関数型のネタもブログに書いてくださいw