ソフトウェア開発の歴史を振り返ると、数学的記号や機械語の羅列に始まり、マクロやサブルーチンによる構造化を経て、オブジェクト指向やドメイン駆動といった方法論を編み出してきた。今や、アジャイルという考え方まで登場し、その流れは、ますます哲学的になっていくような気がする。これに伴いプログラミング言語も進化し、言語自体が一つのパラダイムを、いや、一つの哲学を成すような。パラダイムとは、考え方の枠組みであり、一つの世界観。いずれも、柔軟性、拡張性、分かりやすさを追求してきた結果でもある...
「アインシュタインの言葉を言い換えて引用すれば、可能なかぎり作りやすく、しかしそれ以下にならないように...」
巷では何事も、それに至るプロセスよりも、結果を重視する傾向がある。しかしながら、複雑で多様化していく世界では、結果を出すにも困難が増大していく。特定の結果に目を奪われ、設計ストレスも限界へ。人間社会とは、まったくエントロピーな世界だ。
そして、文化やプロセスに目が向き、なぜそうなっているのか?どうあるべきか?と、その意義を問わずにはいられない。仕事の意味と目的が確立されれば、自由と信頼が得られ、満足度も上がる。自己満足で終わることもあるにせよ。こうした思考プロセスが、パラダイムを生み出す原動力となるのであろう...
ジェームズ・O・コプリンは、一つのパラダイムだけでは対処できない状況にあることを告げ、オブジェクト指向が「優れた設計手法」と同義語になっている危険性を指摘している。
マルチパラダイムとは世界観の融合ではあるが、手っ取り早く、良いとこ取りに走ることも。それはそれで調和すればいいが...
ますますカオス化し、答えの見つからない世界では、多種多様な手法を組み合わせるバランス感覚が求められる。ソフトウェア工学は、抽象原理に後押しされ、ますます哲学へ導かれていくかに見える。いや、あらゆる研究分野が...
尚、平鍋健児 + 金澤典子 + 羽生田栄一訳版(ピアソン・エデュケーション)を手に取る。
「どのようにカテゴリ化を行っているかを理解することは、我々がどのように考え、どのように役割を果たしているかを理解するための核心となる部分であり、それゆえに我々を人間としているものが何であるかを理解するための核心ともなる。そして、カテゴリが共通の特性により定義されるという考え方は、カテゴリとは何かといった場合の日常的な定義であるだけでなく、学問的にも基本的な理論として扱われてきた。我々が 2000 年以上にわたって馴れ親しんできた考え方である。」
... George Lakoff
本書は、「ファミリ」、「共通性」、「可変性」といった語をキーワードに掲げる。
プログラミング言語の特徴に、クラス化やパラメータ化、柔軟性や拡張性といったものがある。それは、自然言語とて同じ。人間の論理的思考は、なんらかの意味合いを表す記号群に支えられ、人類の進化にこうした言語現象を重ねることができよう。それは、複雑で多様な世界を認識するためのプロセスであり、言語の優れた特性は、曖昧かつ不明瞭なものまでも記述し、不明確で不確実な状況に応じて判断を下すために機能する。こうした抽象原理こそが言語機能の本質やもしれん...
ファミリとは、グループ化やカテゴリ化の抽象度を上げた概念といったところであろうか。共通性はファミリの肝となる特性で、可変性はファミリの柔軟性や拡張性と結びつけることができよう。
また、アプリケーションやドメインという限定されたエリアから、ソリューションという広範な領域へ目を向けることを要請している。
実際、まったく異なる分野からアイデアを拝借して問題解決の糸口とすることも多々ある。他業界で成功しているコンセプトがヒントとなって新たな事業を生み出すことも。
対象が経験や知識から遠くにあれば、その関連性に気づくことは難しく、複雑な事象に潜む本質的な構造を見抜くには、より抽象化した洞察力が求められる。
ところで、システム構築で、気を使うものの一つに例外処理ってやつがある。それが設計思想に適合すれば問題ないが、コア部を崩壊させてしまうことがあり、システムの致命的な欠陥にもなりやすい。人間でもパニックに陥る要因の一つに想定外ってやつがあるが、まさにそれだ。
どんな原理にも、どんな思想にも、そして、どんなパラダイムにも、矛盾がつきまとう。こうした状況に対応するものとして、本書では「負の可変性」という語を見つける。マルチパラダイムデザインは、こうした状況下で強力なメカニズムを提供するとしている。
ただ、事例がイマイチか...
通信システムにおいて、メッセージがボディを持つと定義した場合、ボディを持たない特殊メッセージの実装例が紹介され、分かりやすいといえば、そうだけど。要するに、C++ という言語の抽象を超えた抽象として...

0 コメント:
コメントを投稿