エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

言葉に左右される思考(2)

ソフトウェア開発をしていると、思考が、プログラミング言語によって左右される場面にでくわします。特に悪いという思いはありません。でも、そのことに気づかず、「プログラムはかくあるべし」という考えにとらわれてしまうときがあります。後になって、なんでこんなプログラムを作ってしまったんだ、と嘆くこともすくなくありません。
極端な話では、プログラミング言語の仕様を、プログラムの性質と混同してしまったりするわけです。たとえば「1が真、0が偽」というある言語の仕様が、どんなプログラムでも成り立つと考えてしまったりします。

プログラミングを学ぶとき、一緒にプログラミング言語も学ばなければならないことを考えると、仕方のないことなのかもしれません。

誤解や錯覚を減らして、視野を広げるには、結局、いろいろなプログラミング言語を学ぶことが一番だと思います。演算子を定義できる言語、メタクラスを使える言語、コードジェネリックな言語、手続き型、関数型、などなど。「そんなにいろいろ覚えてどうすんの?」と言われたことがあります。仕事で使うことを考えたら、たしかにいろいろ覚えても使えきれるわけはないですし、そもそも使い切れないでしょう。わたしもいろいろかじってみましたが、日常的に使っていると言えるのは、3、4種類ぐらいでしょうか。…充分多い気もしますが。

いろいろ言語を覚えると、その言語の特徴になる仕様が活きる場面が見えてきます。それは、いままで使っていた言語では考えたこともないような手段だったりします。そういった、なぜその言語が作られたのか、という背景を知っていくことで、今まで気がつかなかったプログラムの可能性を広げていってくれると思います。