関数型言語Part2
■ このスレッドは過去ログ倉庫に格納されています
0407391
NGNG折がいいたいのは
クラス型=クラス変数文メンバー関数の本体をメモリに展開する
関数型=作成済み関数のポインタのみを扱う
というのがコンパイラ自体の違いだから使いどころとしてクラス型を使っても
全体的に関数型にできるということ。
あとローテクでいうならば関数型とOOの違いは関数に対してBレジスタなりが
スタックフレームになっているかなっていないかということなんじゃないの?
あとOOじゃないと保持状態が作れないというけれど
レコード型変数で保持してポインタ渡しにするならば
関数自体はコンパイル時に直接生成されるけれど変数は動的に作れるから
プログラムはOOではないけれど機能的には同じで多分実行時メモリは小さい。
これは少なくとも>>376への答えにはなると思う。
例えば>>378はカウンタを例に出しているが
カウンタ値は変数なりファイルなり、あるいは名称や最終更新時間をもったレコードだとして
それがデータベースやファイル、変数やリストになっているとすれば
関数型で先頭アドレスと処理内容を渡してやれば作業はできるし
コードも複雑化しない
OOの場合は実装コードもクラスに記述するか継承するので
パラメータ無しのメンバー関数が作られるが実質的にはスタックフレームが暗黙的に形成されていて
Windowsの場合コントロールごとのステータスと挙動をOOで記述するとわかりやすい気がするが
レコード型の記述と関数型のほうが効率は良い。
実際OOでもソースの中低レベルはそうなっているはず(Ex.DirectXのEnum関係とか)
ということでどう?
■ このスレッドは過去ログ倉庫に格納されています