オブジェクト指向なんて今すぐやめてください
■ このスレッドは過去ログ倉庫に格納されています
0516デフォルトの名無しさん
2014/07/22(火) 20:10:54.95ID:vNYu1ctv・着眼点としては良いけど、ちょっと足りないかな
・まず、疑似コードの意味をコメントとして付け加えてみる
i=CInt(S) # 関数 CInt へ文字列値 S を適用(apply)する
i=S.ToInt # 文字列オブジェクト S へメッセージ ToInt を送る
・この1番目のスタイルは一般に「手続き型」(または「関数型」)と呼ばれ、
計算モデルとしては「命令型計算モデル」(または「適用型計算モデル」)に分類される
・命令型と適用型とは、副作用を伴うか/伴わないかという違いで区別される
・同様に2番目のスタイルは「オブジェクト指向」と呼ばれ、
計算モデルとしては「アクタ(actor)計算モデル」に分類される
・1番目のスタイルはオブジェクト指向でも模倣できる
i=CInt.Value(S) # 関数オブジェクト CInt へメッセージ Value(S) を送る
・ここでアクタ計算モデルでは、命令型に相当する副作用を伴うアクタを「不純アクタ」と呼び、
関数型に相当する副作用を伴わないアクタを「純粋アクタ」と呼ぶ
・まとめると、「アクタ計算モデル(オブジェクト指向)とは、命令型計算モデル(手続き型)と
適用型計算モデル(関数型)とを統合した計算モデルである」と言うこと
・結果として適切な言語設計をすれば、たとえば Swift/JavaScript/Ruby のような
手続き型/関数型も可能なオブジェクト指向言語が存在しうることになる
■ このスレッドは過去ログ倉庫に格納されています