1.ソフトウェアは、数学的理論探求の上に成り立つ
大槻, 2014.02.17
プログラムの動作原理は、アラン・チューリング、フォン・ノイマンといった偉人によって確立された計算理論に基づいています。関係代数、ラムダ計算、符号理論などのコンピュータサイエンスによって、エンジニアリングは支えられています。これらは、数学的理論といってもよいでしょう。
エンジニアリングとサイエンスというのは、車の両輪です。お互いに切磋琢磨して進歩していくものでしょう。一般的には、ソフトウェアをつくるということは、抽象機械を構築することを意味しています。人間が自由に発想し、新しい概念を生み出し、定式化し、計算を実行する機械として実現します。
クラウドコンピューティングや、進化型のソフトウェア、さらには、人間の認識や脳のモジュール化などを扱っていくための、数学的なアプローチ、科学的な基盤はまだまだ不足しています。ですから、「探求」という言葉で数学的理論整備の取組みも同時並行的に進めていかなくてはならないことを宣言しています。
ソフトウェアづくりの本質が人間の主要な能力の一つである概念操作であると考えています。いろいろな概念を数学的に定式化していく方法を確立すること、逆に、数学的な概念がどのような人間の認知メカニズムに依っているのかなどを究明していかなくてはなりません。レイコフ(George Lakoff)の『数学の認知科学』[Lakoff2001]では、数学的な概念である点、線、空間、集合、無限、複素数などが、人間の身体的な経験に基づいてどのように獲得されてきたかを説明しています。また、人間の新しい抽象的な概念獲得の思考パターンとしてブレンド(混合)とメタファ(隠喩)が本質的であることを主張しています。このあたりは、ソフトウェアの世界での新しいビジネスモデルや仕組みをデザインしていく創造的活動の接近法を示唆していると考えています。
数学には大別して幾何学と代数学とがあります。素朴な言い方をすれば、幾何学は右脳の直感的な空間認識や視覚に関わっており、代数学は時間や演算・計算に関係しています[Atiyah2010]。両者相補的な関係にあります。幾何学はユークリッドに始まり、ニュートン(Isaac Newton)力学、位相幾何学のポワンカレ(Jules-Henri Poincaré)、シンプレクティック幾何学の牽引者としてのアーノルド(Vladimir Igorevich Arnol'd)へといった系譜で捉えることができます。一方、代数学は、ライプニッツ(Gottfried Wilhelm Leibniz)、ヒルベルト(David Hilbert)、ブルバキ(Nicolas Bourbakiという架空の名前を冠した集団)の系譜です。代数は一つの公式を作ることを目的としていて、計算によって答えが得られるようなマシンを作ることになります。ソフトウェアは、幾何学と代数学という対峙から言うと、代数の世界の手段として捉えられると思います。両者は相補的ですが、アイディアや新しい概念創造の源流は幾何学寄りのところに在ると確信しています。