時間とは何か。本記事において,深遠な哲学的議論を行うわけでもなく,高度な物理的考察を行うわけでもない。ここでの目的は,いわゆる"代入"操作を認めることによって生じるプログラム世界の時間性について,自分なりの理解を提示することにある。
プログラム言語において代入を認めるか否かは,手続き型言語と関数型言語のいわば相違の軸とみなされるものである。日常的に関数型言語を用いられておられない方にとっても,プログラムの”副作用”をもたらす”代入”操作を基本的には認めない方向性をもつ言語であるということは聞かれたことがあるのでないか。しかしながら同時に,ただの数字の入れ替えのような”代入”操作が,仰々しくも”副作用”をもたらすとはどういうことだと思われたのではないかーーー少なくとも私はそうであった。
結論から述べよう。代入を認めると,プログラムの世界に時間の概念が発生するのである。そしてその結果として,ある面での利便性と,同時に望まぬ挙動ーーすなわち”副作用”ーーとを生み出すのである。ここに一個のボールがある。それを手に取り,肩に力をいれ放り投げると,放物線を描き飛んで行く。あるいは一個の卵がある。室温で数か月,冷蔵庫の外に放置しておけば次第に腐乱し異臭を放つにいたるだろう。私たちはそこに少なからず時間の経過を実感するはずだ。ここにあるのは,何かしらの対象(オブジェクト,object)の変化である。あるいはボールの持つ速度,加速度,あるいは卵の化学的性質。その変化を通して私たちが時間の経過を実感するのである。時間は,物事の変化の要因であり,変化によって生じる概念であるとも言えるだろう。
More than 3 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme