vol.52】英語とプログラミング言語スティーヴ・ジョブスの伝記を読んでいます。600ページの大作のまだ10ページ目ですけど。英語に苦労しながら、昔、プログラミング言語に苦労したことを思い出しました。いまから40年以上前、私が初めてプログラミング言語の習得に苦労した話です。ここでいまふと思いついたのが、英語とプログラミング言語との共通点です。「たくさん読む」「たくさん書く」「実践してみる」、この3つが習得最良の方法であるということが二つの言語の最大の共通点だと思います。「読む」と「書く」は同じですが、「実践する」方法はちょっと違いますね。英語の実践は英会話が中心ですが、プログラミング言語の実践はプログラムを動かしてみることです。この違いが実はなかなか面白いのです。英会話は「多少、間違っていても通じる」ものですが、プログラムは「ちょっとでも間違っていたら動かない」ものです。英会話をたくさん続けた人であっても「英語が正しくない人」は結構いますが、プログラムをたくさん動かした人は「正しいプログラムを作れる人」になります。「しゃれたプログラムを作ろうと努力を続けた人」は効率的でセンスのあるプログラムを作るようになります。「同じようなプログラムをつくる機会が来たら、前回と違う方法、もっとしゃれたプログラムを作ることに挑戦して欲しい」ということです。「1からnまでの整数を加算した合計を求める」というプログラムを作る場合を考えてみましょう。「等差数列の和の公式」を使うとつまらないので、n回ループさせるようなプログラムを考えてみてください。「1からnまでの整数のうち3の倍数だけを加算した合計を求める」というプログラムを作る機会があったら、さきほどとはちょっと違う方式を考えてみて欲しい。これは英会話でも同じで、たとえば「自分の趣味を説明する」ときに数週間前とは違うもっとしゃれた言い方に挑戦する、みたいなことです。「1からnまでの整数のうち、3の倍数であるが9の倍数ではないものだけを加算した合計を求める」というプログラムに挑戦するとき、さらに違うやり方を考えて欲しいのです。ITのプロとなって働き始めたとき、たとえば「入力された情報が既にデータベース中に存在するか否かを判断し、その結果で場合分けする」という機能をプログラムに盛り込むことは人生で数百回や数千回、取り組む可能性があります。最初におぼえた方法を数十年も続ける人もいれば、常に「もっとしゃれた方法はないか」と挑戦し続ける人もいます。数十年後、二人の間の差はものすごく大きなものとなるはずです。最近、組んだプログラムを思い出してみてください。正しく動くことが一番大切ですが、その次に、どれだけしゃれているかを考えてみてください。今後発生する修正がどのようなものかを事前に推測し、それに対応しやすい方法を採用しているか、など、「しゃれているかどうか」はかなり高度な問題なのです。自分が組んだプログラムが「ちょっとダサいな」と感じたら、もう一回、違う考え方で組み直してみてください。長くなりますが、もう一つ、別なことを書きます。「世界中に、英語が苦手な天才プログラマは(結構)いる」という事実です。英語とプログラミング言語にはやはり違いがあり、高校時代に英語が苦手だった人でも、プログラミング言語が得意になる可能性が十分にあるということです。この法則は、私は、インド人でIT会社を経営している知人からの情報でも確認しました。インドの母国語はヒンディー語であり、第一外国語が日本と同じ英語なのです。最後にさらに一つ、別なことを書きます。「天才プログラマにも英語が苦手な人はいるが、システムの設計やユーザへの説明などが得意な人は英語も得意になっていく」という法則があることです。これには理由があります。システム設計をするときなど、最新技術を調べようと思ったら英語のマニュアルや文献を調べないといけないことがよくあります。海外の事例などを調べる際にも英語があると心強い。世界中のIT関連の文献や書き込みは、技術的なこともビジネス的なことも、どの国の人も英語で書くからです。日本語に正しく翻訳されたものが出回るのはこの中の少数であり、かつ、かなり時代遅れ的なタイミングになります。英語が苦手な人も、プログラミングの天才を目指してください。天才プログラマ、あるいは、その近くにまで到達したら、チャンスは大きく広がります。世界で活躍するようなプロをめざし、その過程で英語も得意になっていってください。事業戦略策定コンサルティングを兼務。「ダメなシステム屋にだまされるな」(2009年日系BP)など、IT関連の著書も多数。