メッセージ。 - にゃー

# にゃー

以前、プログラムの初学者にHello
worldから教えるのは意味がないと言うことを書いたんだけれども。ただまぁ、プログラムが動いているかどうかを確認するには結局のところI/Oがなければその確認自体が不可能になるわけで。

プログラムが走っているインスタンスとなんらかの入出力が可能でなければ、なにも確認できない。何も知り得ない。プログラムが期待どおりに動いているか知ることができないし、それ以前にプログラムが動いているか、それがそこに存在しているかも知り得ない。

チューリングテストが、「人間が機械とやりとりして、機械か人間か区別できないなら人工知能とする」という基準で人工知能かどうか(知的かどうか)を規定するものであるのと同様に、コンピュータの外とIOができなければプログラムを「作る」ことができないという理屈なら分からなくはない。シュレディンガーの猫みたいなもんだね。

ただ、それにしたってそういう哲学的スタートを何の背景説明もなしに進めるのは意味がないと思う。

あと、IOがなければプログラムが作れないという点も、検証が必要なのではないか。科学は再現可能性によって成り立っているから、再現と検証のためにはIOが必要だ。だけど、世の中はすべてが再現可能なわけではない。IOがない状況で、プログラムを作り、動かし、その結果何かが起こった。何かが起こったというのはIOに違いないけれども、でもすべてのoutputが捕捉可能でないという状況はままある。

テストカバレッジが100%というシステムは一部にあるが、プログラムが正しく動くことが100%証明できているシステムというのは、ある程度の規模になると相当難しいだろう。では、そういう状況を「テストにパスしている」、「期待したとおりに動いている」といえるかどうか。

世の中には、プログラムを書く仕事が2種類あって、1つ目は理論上正しく動くことが証明できるシステムを作るということ。2つ目は理論上の正しさは100%保証できないけれども概ね動くということを保証するシステム。

んー。とりとめがない。
2016-09-08 09:24:04 / ふじさわ / Comment: 0 / Trackback: 0

Comment

コメント投稿機能は無効化されています。

Trackback

TrackBack投稿機能は無効化されています。