Posted at

「探求のパラドックス」を避ける

More than 3 years have passed since last update.

古代ギリシャの哲学の中に、現代にも通じるような古くて新しい問題が含まれていることがあります。今回は、そんな問題の1つである「探求のパラドックス」について考えてみます。


探求のパラドックスって?

プラトンが説いたパラドックスなのですが、


物事を探求するとして、その物事を知っていればそもそも探求する必要が生じない。逆に、その物事を知らなければ探求することもできない。


というような内容です。


プログラムを書く上で

ただし、プログラムを書くにあたっては、「必ずしも探求しなくていい」という点は最大の違いです。標準関数や演算子など、知っていれば探求せずに書くことができます。


知らなければ探せない

とはいえ、逆向きの「知らなければ探求のしようもない」という部分は、プログラミングにあたっても健在です。最初からあった機能を知らないばかりに、手間をかけて自分で実装して、挙句にはバグを発生させて…となってしまっては全く意味がありません。

ということで、こちらは何とかして避けないといけません。


回避するための手法


リファレンスを通読しておく

まずは、使う言語やライブラリのリファレンスにはひと通り目を通しておきましょう。丸暗記する必要はありませんが、「こんなのがあったかな」と思えるようになれば、あとで探すこともできます。


「世界観」をつかむ

複数の言語を使ってみると、標準ライブラリのなかにほぼ同じ機能、あるいは似たような機能のものが存在することがわかると思います。また、最近は言語ごとにライブラリのリポジトリを作ってあることも多いので、どんなものがあるのかざっとのぞいておくと、「Rubyのgemには○○があったけど、似たようなのはnpmにあるかな」というように、「あるかも」という感覚を身につけることができます。


アンテナを広げておく

ほとんどのプログラミング言語はチューリング完全なので、(速度を無視すれば)理論上はどの言語でも実装できる機能は同じです。また、多くの言語には他言語のライブラリを呼び出すような機構が存在します。ということで、自分の使っている言語に限らず、バインディングあるいはコード書き換えで他言語の魅力的なライブラリが使えるようになることもあるので、他言語でも気になるものはチェックしておいたほうがいいでしょう。