国語力とプログラミング力の関係 解説編【写真】天才プログラマに聞く10の質問(4)(2/2 ページ)

» 2009年03月18日 00時00分 公開
[竹内郁雄東京大学 教授]
前のページへ 1|2       

良い文は人間の認知負荷を下げる

 ミクロな例を見てみよう。

(例1)


今年10月からの新入社員の中間研修会参加は任意とします。


 (例1)の文は、新入社員は通常4月に入るものだという一般常識を使えば、

(例2)


新入社員の今年10月からの中間研修会参加は任意とします。


と、(例2)のような解釈が可能であるが、今年10月にも社員が入る可能性は残る。誤解を避けるためには語順に気を付けて、最初から(例2)のような書き方をしないといけない。日本語の係り受け構造には理解のための「解釈エネルギー」のようなものがあり、解釈エネルギーが最小になるような文が良い文である。つまり、人間の認知負荷を下げるのが良い文である。実は似たことがプログラムについてもいえる。ループの中で不変な値を、繰り返しごとに毎回計算し直すようなプログラムを書くと、プログラムを読むための解釈エネルギーのみならず、「計算エネルギー」も多く消費してしまう。文章でもプログラムでも無駄を排除することが必要である。もし、その値がループの中で不変であることに気が付いていなかったとすれば、それはそもそも問題の理解が足りなかったということにほかならない。

 次に2つの文からなる少し長めの文章例を見てみよう。(例3)は、とある会社(ABCとしておく)の安全管理室が事故事例の報告として、社内に発信した公式文書から抜き取ったものである。

(例3)


ABC社員は、愛甲石田駅からバイクで出社途中、反対車線の車が右折するためいったん停止したので、バイクの横の車が道を譲るためライトをパッシングさせ合図し停止した。ABC社員はこれに気付かずそのまま走行したため相手車両は急ブレーキをかけたが間に合わず衝突したものである。


 (例3)の文章を読んで、読者がなんの疑問も感じなかったら、ぜひ反省していただきたい。よくあるパターンの事故なので、この事故の状況は容易に想像できるが、だからといって文章構造の整合性の乱れを看過して分かってしまってはいけない。別の珍しい状況をこのたぐいの文章で記述されたら、理解に必要な解釈エネルギーが非常に大きくなる。これと同様に乱れた構造を持つプログラムが、ソフトウェアとしていかに質の悪いものかは、これまた容易に想像できるだろう。なお、(例3)の文章を良い文章に直すのは、文章構造を理解するためのいい練習問題となるので挑戦してみてほしい。

日本語は“抜け”が多い言語

 言葉力というのは、上記の例のような文章やプログラムを書かないように十分に気を配る力のことといってもよい。わたし自身、了解性と厳密性が要求される書き物を日本語版と英語版の両方で用意しないといけないことがよくある。その場合、まず日本語で書き、次に英語で書く。すると、日本語の記述で“抜け”に気付くことが多いのだ。日本語では気にならない記述の省略が、英語にすると情報の欠如になることがある。つまり、異なる意味や構造を持つ2つの言語で同じことを書くと相補的に文章の正確さを高めることができるということだ。ソフトウェア開発の各段階で、コーディング言語以外にいろいろな言語を使うことの意義はそこにある。

林くんを鉄道マニアに例えれば「作り鉄」?!

 冒頭で名前を出した林くんは、一般の高校生の水準を超えた確かな言葉力の持ち主だ。言語(彼の場合、現在はプログラミング言語)の内部構造に非常に鋭敏な感覚を持っている。普通のプログラムをほとんど書かないのに、プログラミング言語を設計・実装してしまうというのは、鉄道マニアの乗り鉄、撮り鉄といった分類にならっていえば、作り鉄(そんなのあるかどうか知らないが)相当だ。

 一般に言葉力は文系的資質であるとされる。わたしは林くんの根本は理系よりもむしろ文系と見た。文系の学生が趣味でプログラムを書くと、とてもいいプログラムができる。少し前にある会社の社長さんから聞いた話だが、文系大学のトップ校の1つである一橋大学は優れたソフトウェア屋さんをたくさん輩出しているという。さもありなんである。言葉を駆使しつつも、(一橋大学が強い)経済という実はかなり数理的な現象を扱うセンスは、ソフトウェアに対するセンスと相通ずるものがあるのかもしれない。わたしが未踏ユースで見つけた英才たちの多くは、何らかの方法で中学ぐらいまでにかなりの言葉力を身に付けている。あるいは、そうでなくても未踏ユースのプロジェクト期間内でソフトウェアを真剣に開発していくうちに国語力をめきめき伸ばす人がいる。

 良いプログラムを書く力と、良い文章を書く力の共通の根源には言葉力があり、この両者には強い相関関係がある、とわたしは考えている。これまでたくさんの研究者や学生と付き合ってきた経験に基づくと、あえて1.0とはいわないが低くない相関係数がはじき出されるだろう。良い文章を書く練習をすれば(その前に他人の文章を構造批判的に読む)、きっと良いプログラムを書く練習にもなっている(その前に他人のプログラムを構造批判的に読む)というのがわたしが強く信じている仮説である。

筆者紹介

竹内郁雄(たけうちいくお)

東京大学情報理工学系研究科創造情報学専攻教授。経済産業省の未踏IT人材発掘・育成事業の未踏ユース・プロジェクトマネージャも勤めている。1951年、幼稚園を3日で中退。1969年5月(!)に東京大学理学部数学科卒業、1971年に同大学院理学系研究科数学専攻修士。当時の電電公社(現NTT)の研究所に入り、主に基礎研究部門で生息。Lispをベースにした記号処理システムの開発などに従事。1997年に電気通信大学情報工学科教授、2005年から現職。博士(工学)。趣味はサッカー、オーディオだが、最近は体が動かず、もっぱらオカルトオーディオの世界にいる。音楽CDの情報はデジタルだが、本当に良い音で聴くためにはケーブルを通す。CDの静電気や磁気など、どれをとっても実に奥深いアナログの世界がある。



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。