世界は関数でできている?

Pocket

プログラムを組むというと「難しそうなことしてますね。」とよく言われます。
出身学部が「法律」なので、「プログラムをどこで勉強したのですか?」と不思議そうに言われたりもします。

プログラムを組むのに適性はあるか?と言われれば、(先日ブログにも書きましたが)いくつかあると思います。
例えば論理的な考え方ができることや、他人への気配りができること、などでしょうか。

(もちろん、「仕事」ですので「速さ」と「正確さ」と「コスト意識」も要求されると思いますが。)

あとは、まあ、「好き」なことでしょうか。
小さい頃ファミコンの派生商品的存在の「ファミリーべーシック」を少し触ってマリオを動かしたりして遊んだのがプログラムに触れた一番最初です。
MSX、MSX2などもお年玉で(ウッカリ)買ってしまったりと、「プログラム」というものに妙に興味(可能性)を覚えた記憶があります。

***

さて、ここから少しだけ専門的になります。
プログラムとは簡単に言うと、数学の授業で習う「関数」です。

例えば、

Y=aX+b

という(一次)関数は、「Y」を得るためには「aにXをかけてbを足す」と読むことができます。
「X」に2を代入すれば「Y」は「2a+b」です。
プログラムとは、この「2a+b」を導き出すための道具です。
(一部のバッチ処理的なプログラムを除く)

先日、「世の中のあらゆることは関数であらわすことができるなあ?」とくだらないことを考えました。
例えば、

寝むさ = (疲労の2乗) × 昨日の睡眠時間

ムカつく人 = 自分勝手さ × (口の悪さ + 早口) + 人相

一発屋の芸人 = インパクト × (フリートークの下手さ + 流行語大賞)

冗談はさておき、疑問に思ったのは、世の中の自然(物理)現象のほとんどが数式化されていることです。

例えば、物理や化学の公式などですが、それは本当に正しいのか?
っていうか、実験で証明されているので正しいんでしょうけど、誤差だととか例外ケースだとかあると思うのですが、それって、本当に誤差だとか例外ケースとして片付けて良いのか?
実は、誤差や例外も包含する、もっと大きな公式が存在するのではないか?
なんて思うのです。

***

ここからさらに専門的になりますが、他人の作った関数(phpで言えばPEARなどのライブラリ)を使う時に、「隠れパラメータ」なるものが存在する時があります。
例文どころかAPIリファレンスの類にも載ってないパラメタで、ソースを見ないとわからないものを指します。

例えば関数を使っていて、例外ケースに対応できなかったり、微調整ができなかったりで、どうも使い勝手が悪いなあと思った時にライブラリのソースを見て、この「隠れパラメータ」を発見した時は、けっこううれしいものです。(ま、隠すからには非推奨なのでしょうけど。。)

そこで思ったのは、世の中の自然現象で公式化されたものも実はこの「隠れパラメータ」が存在するのではないかということです。
つまり、科学者は自分の知ってる範囲のパラメタを使って持論を唱えているに過ぎないのではないかと。。
自然現象の例外ケースに対応できるパラメータが実は存在するのではないかと。

そう思うのです。。。

いや、まぁ、どうでもいいですね、そんなことは。

くだないこと考えてないで、仕事しましょう。

Pocket