1709807277
2024-03-07 10:16:39
プログラミングに関する意見
一般的に言って、ソフトウェアにバグがないことを証明するのは不可能のようです。 その理論は理解できませんが、私の経験上、商用規模のプログラムでは理論上バグを完全に排除できるとは言い難いです。
ただし、理論的に排除できるかどうかはさておき、「バグの可能性は排除できないが、実用上問題がない」場合には実現可能です。
よく言われることですが、理論的にはバグをなくすことは不可能ですが、機械語命令が1つだけのプログラム(それをプログラムと呼ぶかどうかは別問題です)では現実的には実用的ではありません。
上記のようなバグは存在しないと言って良いと思います。 CPUのバグもあるかもしれないし、メモリなどのハードウェアのバグもあるかもしれないが、これをソフトウェア=プログラムのバグに限定すると、コード自体にバグがあることになる。 無いと言っても過言ではありません。
条件分岐のない機械語命令が2つまたは3つあるプログラムも同様に考えて良いと思います。 条件分岐が現れると事態は複雑になります。 単純な分岐だけであれば、設計の観点からもテストの観点からも、実際にはバグは発生しないと言えます。
これらを積み重ねれば、どんなに規模が大きくなっても実用上はバグをなくすことができると直感的には思いますが、現実的には現在使われている商用規模のソフトウェアをすべて機械語で書くと複雑になります。
また、すべてのソフトウェア要素を自社または自社だけで管理できるわけではなく、ライブラリを利用する場合にはそのライブラリの保証の問題も発生します。
また、機械語だけでプログラムするのは現実的ではないため、高級言語に頼ることが多いのですが、その際にコンパイラやインタプリタのバグが問題になります。
現在、コンパイラやインタプリタの多くの部分が高級言語で書かれていると思います。そのため、どれだけ慎重に設計され、テストされたとしても、完全なものを作成するのは困難です…
#バグを完全に排除できるかどうかを誰かが私に尋ねました #ジョセフクルス著 #2024年3月