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

『現実の世界』というものは、多くの限度にまで、その集団の言語習慣の上に無意識的に形づくられているのである。
エドワード・サピア 『言語 - ことばの研究序説
サピア=ウォーフの仮説(The Sapir-Whorf Hypothesis)というものをご存知でしょうか。人が話す言語と、人の物事に対する考え方・理解の仕方には密接な関係があるという言語学分野における有名な仮説です。
有名な例として、虹の色数の話があります。日本では、7色が通例ですが、これは万国共通の認識ではなく、場所によっては8色であったり、6色であったりします。日本でも、緑色のことを「青」と呼ぶことがありますが、このように青と緑を区別しない言語圏では「青」と「緑」が区別されないので色数が減ることがあるそうです。
他の興味深い例としては、
  • オーストラリアのある民族は、紙に書かれた矢印を「上下左右」ではなく「東西南北」で認識する
  • 数字をあらわす言葉として1と2しか持たない(それ以上はたくさんになる)アマゾンに住むピラハー族は、数の違う電池、魚などが写っている画像を使う「マッチング課題」において、数が3以上になると物体が何であっても判定するのに苦労する
等という話があります。

サピア=ウォーフの仮説はあくまで「仮説」ですが、このような自然言語と思考との関係は、プログラミング言語と設計・分析プロセスとの関係についても言えるのではないでしょうか。プログラミング言語は実装の道具というだけではなく、設計・モデリングを行う時の思考の道具でもあります。要求仕様を聞いて頭に設計イメージが浮かべる時、C言語を主に使っていると考え方も手続き指向になり、Javaを主に使っていればオブジェクト指向になるのではないでしょうか。言語の使用経験の長い人ほど、すぐに実装イメージを思い浮かべるため、このような傾向がありそうです。

よくC言語の経験の長い人の場合、オブジェクト指向設計に慣れるのが難しいという話を耳にします。勿論、C言語でもオブジェクト指向的なプログラミングは可能ですが、言語仕様がオブジェクト指向ではないため、実装に多少のぎこちなさが出ます。C言語では手続き型で書いた方が自然なのです。

とはいえ、大規模開発においてオブジェクト指向設計は優れた方法論ですC言語のみのプロジェクトであっても、その考え方を導入する価値はあります。しかし、その理屈だけ頭に入れてもなかなか思考はかわってくれません。こんな時に思考を変えるには、まず言語を勉強するのが一番です。勿論、言語仕様を頭に入れるだけでは意味がありません。実際に使ってみる必要があります。

私のいる組み込み業界では、使用するプログラミング言語は多くの場合C言語です。できることなら、いろんな言語を使ってみたいのですが実際なかなかそうはいきません。慣れない言語をいきなり業務で使用するのも危険です。そこで、私の場合は、開発やテスト用のツール作成等、割合自由の利く部分で、普段使わないような言語を使うようにしています。

世の中にプログラミング言語はごまんとあります。コンパイラ言語にスクリプト(インタープリタ)言語。関数型に宣言型。オブジェクト指向にアスペクト思考。多くの言語に触れることで、思考の幅も広がり、柔軟な設計も可能になります。普段同じプログラミング言語ばかり使っている方は、是非ともいろんな言語を使ってみて下さい。
異文化交流は言語習得から、です(^^)

【関連リンク】
言語は思考を決定するのか?(スラッシュドット・ジャパン)
サピア=ウォーフの仮説 (ざつがく・どっと・こむ)
言語相対性理論 ~サピア=ウォーフの仮説~
サピア=ウォーフ仮説再考
虹の色数の話
プログラミング言語一覧(Wikipedia)

【関連書籍】
言語―ことばの研究序説 Edward Sapir
言語の相対性について
認知パターン―オブジェクト技術のための問題解決フレームワーク ロバート コニツァー他

コメント

非公開コメント

トラックバック

■サピア・ウォーフの仮説 (はじめての言語学 第二章)

はじめての言語学(第二章)より、思いついたことを書く。  紹介図書として、『言語

本のおすすめ

4873115655

4274065979

4822236862

4274068579

4822255131

B00SIM19YS


プロフィール

  • Author:proger
  • 組み込み関係で仕事してます

ブログ内検索