プログラム
CommonLisp 他多数 Scheme 少し EmacsLisp 多数 OCaml 株式会社サイエンス社 株式会社新世社 株式会社数理工学社 (id:taisuke_hさんのコメントより) ML 2冊 Haskell やはり、ひねくれ者の俺としては、OCamlですかね。
関数型言語でない言語でいくら関数型プログラムをやってもピンとこない。 やはり関数型言語をしっかりやらないとだめな気がする。 あとは、Haskellをやるか、OCamlか、意表をついてLispをやるかが問題だ。
オブジェクト指向はオブジェクトの雛型であるクラスを再利用するという考え方が根底にある。 クロージャ、関数型は、処理を再利用する(ポータブルにする)という考え方がベースに あると考えられる。Javaで関数型変数やクロージャが使えるようになるのは結構…
再帰関数で、return時に再帰呼出しをする方法。 コールスタックを節約できるので、スタックオーバーフローを回避できる。 OCamlではコンパイラにより、ループの形に最適化される。 # 末尾再帰未対応 def func(x) if x <= 1 return 1 else return x + func(x …
Javaの場合今まではソース内にインナークラス、匿名クラスなどを定義しなければならない。 そうすると汎用性の無いクラスがいっぱいできて邪魔である。 これはオブジェクト指向の意味(人間にわかりやすい)にも反することである。 またソースがごちゃごちゃし…
by マーチン・ファウラー http://capsctrl.que.jp/kdmsnr/wiki/bliki/?CollectionClosureMethod だそうです。 これからはループ処理はワンライナーで。
いまいちピンと来ない Javaではクロージャの代用としてこれまで良く使われていたインナークラスや匿名クラスは もっぱらGUIのイベントハンドラの実装に用いられるが、何故こういうコーディングが 都合がいいのかはまだよくわからない。 とりあえず今思いつく…
http://dikini.net/php_design_patterns Javaのとは微妙に違うようだが。 Accumulator passing Closure Control abstraction Coroutines (generator based) Dynamic dispatch Dynamic loading Facade Factory and Abstract Factory Fluent Interfaces/ Metho…
病気でしょうか?(笑) 問題は継承なんだよな。これがすっきりしたら最強かも。 あと、クラスベースじゃないからファイルごとにまとまらず、ライブラリ構成がやりにくい。 まあ、アーカイブ(Jar)にまとめるという手があるが。。。 1998年ぐらいに俺のプログラ…
オブジェクトのメンバとして、式の中で定義できる処理。高階関数的な処理(処理の使いまわし)ができる。 関数型言語や、最近のスクリプト言語には大体あるが、Javaにはない。 (Groovyにはある。)
Javaばっかりやってると、こうなる。 PHPや、JavaScriptのバリアント型に近いかな?
参照透過性 ある変数の値がどこで見ても変わらないこと。 →変数の値が変わらない →副作用が無い →変な値が入らない →バグが減る こんな感じ。 (アバウト過ぎ?)
なんか仕事に対する閉塞感を感じる今日この頃。 ここは飛び道具で行きますか。 関数型言語の本を持って中国で勉強することにしよう。 ↓これで、一発逆転を狙うかな。 ほんとはOCamlやりたいんだが、本が無いからHaskell経由でいくか。。。
Haskell本が2冊も出ているのが気になる。 いよいよ流れが変わってきたのかも。
流行ってるんですかね。 でも、個人的にはOCaml(ML)の方が好きである。 理由はコードがきれいだから。 あまり意味が無い?(笑)
日本ではいまいちマイナーな言語。 しかし海外ではよく使われている。この辺はOCamlに良く似ている。 海外で使われているということなら、やらずにはいられない。(意味不明) というわけでやってみたりして。 続くかなあ。。。
久しぶりにJavaの仕事をしたら、だいぶ忘れてる。まあいいや。 もう以前のようにJavaにはこだわらなくなった。今はもう、スクリプト言語や、 関数型言語に興味が移ってしまった。
JavaScriptはそのように分類される。 JavaやC++は、クラスベースオブジェクト指向言語に分類される。 プロトタイプベース プロトタイプという実体があって、そこに属性を追加していく。 クラスベース あらかじめ定義されている雛形を元に、オブジェクトを生…
いいものを見つけた。 http://www.geocities.jp/lethevert/softwares/ocaml/index.html これで、なんか作れるかな? http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/ これも参考になるかも。 users:henry:ojacare:index.en.html Javaとの…
はっきりはわからんが、思うに、面倒くさいと言うのがあると思う。 プログラム言語の進化と言うのは、より簡単に複雑なことができるという方向に 進化している。たしかにJavaもそういう流れに乗ることで一世を風靡している。 しかし、Webアプリケーションを…
誘惑に負けてしまいました。(笑) 仕事が無いとき用。(笑)
今更かも知れんが、アジャイルによってプロジェクトが早まるわけではない。 (結果的にそうなる可能性が高いという程度だと思う。) スパイラル(plan/do/see)が早まるということである。それは何によってそうなるかというと、 単体テストの自動化ツール等の使…
とか、言ってみたりして。 というのも、最近メジャーになっている言語としてHaskellがあるが、 実は、最近Ajaxの流行で、すっかり名誉挽回したJavaScriptが、 関数型言語の特徴も持っていることを最近風の便り(?)で知った。 そして、目立たないが、.NETフレ…
入門Haskell―はじめて学ぶ関数型言語 おお、こんな本が出たんですね。欲しいです。 でもほんとは、OCamlで、こんな本が出て欲しかったけど。 Haskellは、Pugs(Perl6のVM)で使われてるくらいだから。 これも時代の流れというものなんでしょうか。