2009.03.22
竹内郁雄「良いプログラムを書く力と、良い文章を書く力の共通の根源には言葉力がある」
@IT自分戦略研究所 - 国語力とプログラミング力の関係 解説編 竹内郁雄(東京大学教授)
http://jibun.atmarkit.co.jp/ljibun01/rensai/genius/04/01.html

1月に出ていた「Cyanを設計した高校生、5カ月で5つの言語を習得」という記事で竹内氏が述べていた、「わたしの持論ですが、国語ができる(=日本語できちんとした文章が書ける)人じゃないとプログラムは書けない」という見解についての補足記事。

ITエンジニアにコンピュータ・サイエンスは必須か」で、<プログラミングや設計の能力は、コンピュータ・サイエンス的な「科学の能力」というよりも、むしろ文章を書くような言語運用力、つまり「文芸の能力」に似ていると思う>と書いている私にとっては、全編にわたって共感しっぱなしの、素晴らしい内容だ。

<建物を造るのも、車を造るのも、ソフトウェアを作るのも、何かを「つくる」ことにおいては共通している。しかし、ソフトウェアは、ほかのものと違い、工業的生産物としては、言葉との関連が強い>。

<小さなプログラムですら正しい作法で書けないような人が偉そうにソフトウェア開発全体を管理できるはずがない>。

<小さなプログラムを正しい作法で書けるかどうかと、たった1つの短い文を正しく書けるかどうかとは同根の問題と思われる。それどころか、ファイル名、モジュール名、手続き名、変数名の良い付け方にすら言葉力が大きくかかわる>。

<日本語の係り受け構造には理解のための「解釈エネルギー」のようなものがあり、解釈エネルギーが最小になるような文が良い文である。つまり、人間の認知負荷を下げるのが良い文である。実は似たことがプログラムについてもいえる>。

<良いプログラムを書く力と、良い文章を書く力の共通の根源には言葉力があり、この両者には強い相関関係がある、とわたしは考えている>。

私のようにコンピュータの専門教育を受けていない、ライターあがりのような人間が、「プログラミングの能力は、文章を書くような言語運用力に似ている」といったことを言ってもあまり説得力がないが、竹内氏のような大御所が言うとさすがに説得力がある。

「プログラミング力と文章力の類似」が示唆しているのは、例えば

1) どうやればプログラミングがうまくなるのか
2) いまのIT業界のやり方には問題がある
3) 自覚がなくても、実はプログラミングの才能を持っているという人は多い

といったことだろう。

1)は、「文章力をつける」のとほぼ同じことをやればいい。文章力をつけるには、いい文章をたくさん読んで、自らもたくさん書くしかないが、プログラミングも同じだろう。いいプログラムは、ちゃんと動くという以前に、「読みやすい」ものだ。

2)は、竹内氏も<小さなプログラムですら正しい作法で書けないような人が偉そうにソフトウェア開発全体を管理できるはずがない>と書いているように、ただ人間をたくさん投入すれば早く進む、といった考え方は根本的に間違っている。プログラミングは個人の能力差がきわめて大きく、細かい設計判断の積み重ねなどでも全体が大きく左右されてしまう世界なので、プログラミングができない人間がプロジェクトの指揮をするという体制は、根本的な問題をかかえている。野球をしたことがない人間が、野球チームの監督をしているようなものだろう。

3)は、個人的にはいちばん強調したいポイントだ。現時点ではITと無関係な仕事の人や、主婦の人などでも、少なくとも文章を書くのが好きで、新しいことを学ぶのが好きな人ならば、プログラマになれる素質があると思う。別の業界からIT業界にどんどん転身してきてほしいし、そこまでいかなくても、趣味でプログラミングに挑戦してみてほしい。私がまさに、趣味からITに目覚めたという「遅れてきた人間」なので、このタイプの人を応援したい気持ちがある。

プログラミングはほんとうに面白くて、仕事にもなるし、自分で使いたいものを自分で作ったりできて、趣味としても一生楽しめる。コンピュータとネットさえあれば、道具や環境もほとんどいらず、お金もかからない。そのあたりの「身軽さ」も、文章を書くのと似ていると思う。


関連エントリ:
ITエンジニアにコンピュータ・サイエンスは必須か
http://mojix.org/2008/12/29/it_engineer_cs
ITは「理系」なのか?
http://mojix.org/2008/12/27/it_rikei