[BCN This Week 2010年1月11日 vol.1316 掲載](週刊BCN編集長の谷畑良胤さんの許可を得て記事を掲載)
BCN_ShiTen_20091019

プログラミング言語とプログラマ思考

言語と思考が不可分(密に結びついて切り離せないもの)であるか、はたまた可分であるのか、それを正面切って言及できる立場にないけれど、今回は一人のプログラマとして言語と思考という言語学から脳科学にまで及ぶであろうことについて綴ってみたいと思う。

もしも言語と思考が不可分だとあまりに強く主張すると、脳損傷などにより失語してしまったら、まったく思考ができないことになる。言葉を失っても知的な活動ができるという事実から、おそらく可分なところもあるにちがいない。きっと脳の中で言語野から遠い部分(非言語的な右脳)になるのだろう。

私が最初に習い覚えた言語は日本語である。そして、初めて学んだプログラミング言語はフォートランであった。日本語は今でも私の母語となっているが、フォートランは母語にならなかった。プログラミングにおける私の母語はスモールトークである。ソフトウェアを開発する際に思考の道具として用いている言語だと言っても過言ではない。

あれをやって、それをやって、これを返す、というような手続き的なプログラミング言語ではない。Aさんこれをお願い、その間にBさんはこれをやっておいて、Cさん今の状況を知らせて、というようなメッセージの交信を用いてプログラムを創作するオブジェクト指向プログラミング言語である。

プログラミングにおける思考としての言語は、抽象化や構造化などの論理的なところで威力を発揮する。この面を強調すると、クラスが前面に出てきて、インスタンスとクラスの区別やインヘリタンス(インターフェースと実装を含む)などが主張され、データ抽象やアルゴリズム抽象の推進力となっている。今では多くのオブジェクト指向プログラミング言語が存在するが、この面を主力とするものが大半を占める。

一方、スモールトークにクラスは存在しない、すべてがオブジェクトである。便宜的に登場させるクラスをインスタンスにしてしまう機構を備える。データやアルゴリズムを抽象する推進力を保ちながら、さらに別なことを強いてくる。動的なメッセージ送受信の関係、そして、言語と環境が一体となった世界にプログラマを置くことである。

すべてをオブジェクトのつながり(関係網)の中に沈めてしまう。そこで必要になるのが図形的で位相的な能力である。冒頭に述べた非言語的な知的な活動に関わるのかもしれない。プログラミング言語とプラグラマ思考が可分なところが攻められるのであろう。


Updated: 2010/01/15 (Created: 2009/10/19) KSU AokiHanko