みなさんは、自分が普段使っているプログラミング言語がどんな言語か理解していますか?
とある面接にて
先日、僕はとある研究所の面接で次のような質問を受けました。
「普段、Javaを使っているとのことでしたが、Javaってどんな言語ですか?」
僕は少し考えた後に次のような感じで答えました。
「一度作成したプログラムが、アーキテクチャの異なる複数のマシンで動くのが特・・・・・」
最後まで答えきる前に次のように返されました。
「それは中間コードを生成するプログラムの説明であって、Javaの説明にはなっていない」
僕以外の面接者が「ガベッジコレクション」のことを話していましたが、それも意図した答えではないようでした。
「答えはあってないようなもの」
と言われ、面接は終了しました。
結局その日、質問の答えが明かされることはありませんでした。
それから少し考えたこと
それからしばらく、
「Javaってどんな言語だろう」
「なんで僕はJavaを使っているんだろう」
みたいなことを考えました。
でも、僕がJavaを使っている理由を考えてみても、
- 大学で2番目に習った言語で、みんなやってるから
- 大学でオブジェクト指向を習うときに使った言語で、それ以来「プログラムを書くならオブジェクト指向→オブジェクト指向で書くならJava」というイメージを持ったから
のような、他人が主体となるものしか浮かんできません。
Javaはいったいどのような言語なのでしょうか?
Javaと他の言語との本質的な違いは??
今まで深く考えたことの無い事。
考えずに使っているのは僕だけなのでしょうか?
自然言語に置き換えてみる
少し煮詰まったので、自然言語に置き換えて考えてみました。
僕が一番使えるのは「日本語」です。
僕が日本語を使っている理由は、
- 両親が日本語を使っていたから
- 自分の生活圏にいる人と会話するのに日本語が一番便利だから
だと思います。
つまりは、「みんな日本語使っているから」。
日本語が他の言語と比較してどんな言語か考えたこともないです。
実はそれはとてもいけないことで、日本語と中国語、日本語と韓国語などなど、近隣諸国の言語と比較することで、「日本語とはなんであるか」について日々追求していかなければならないのかもしれません。
だから学校で古文とか漢文とかを習うのかもしれない。
まとめ
自然言語に話を置き換えて余計に混乱したかもしれません。
でも、自分の使っている言語の事は、他人に聞かれたら明確に答えられるくらい知っておかなければならない気がしてきました。
いや、きっとそうです。
僕は現状、Javaがどんな言語で、どんな特徴を持っているのか、正しく答える事ができません。
これはもしかすると、とても危機的な状況なのかもしれません。
なので、僕はこれから、今自分が使っている言語がどういうものであるかということを、常に意識しながらプログラムを書いていきたいと思います。
ある言語について知るためには、もしかすると他の言語についても知る必要がありません。
特定の言語だけではなくて、プログラミング言語全体の流れ・歴史のようなものも知っておく必要があるかも知れません。
もしかして、こんな事を考えているのは僕だけなのでしょうか?
実は、「自分が使っている言語がどのようなものであるか」を知らないのはごく少数?
みなさんは自分が使っている言語のこと、きちんとわかってあげられてますか?
- Newer: 人に何かを教えるのってとても大変
- Older: 評価に差を付けるためのアプローチは良くない
- 「JavaScriptでテトリスみたいなゲームを作ろう!」はとても良い教材だと思う
- ホームネットワーク構築のためのミドルウェアにはプロトタイプベースオブジェクト指向言語が適している?
- クラス・ベースのオブジェクト指向とプロトタイプ・ベースのオブジェクト指向
- 研究室のPC環境が快適になりました。
- 博士課程に進むことで得られる力
