PHPは純粋に「言語」なのか
久しぶりです。
今回は「yohgaki's blog - PHPの問題? BugTrackのレポート - Multiple PHP4/PHP5 vulnerabilities」に関してです。
大垣氏は記事の中で
今までにもこの手のレポートはいくつかあったのですが、PHPをプログラミング言語として捉えていない人が多いのは驚かされます... たしか、最近もまたfunction foo($arg) { foo($arg); }で「PHPがクラッシュするからおかしい」とメールがあったと思います。メモリは有限リソースなんですけどね... しかも同じ内容のメールは私が気が付いただけでも複数回見ています... 初心者向けに再帰呼び出し回数に制限を設けてもよいかも知れませんが、再帰呼び出し制限なんて必要なんでしょうか?
というようなことをおっしゃっています。しかし、私はPHPは言語であるが、実装によって作られるものは環境であると考えています。
この例で言えば、言語仕様上で再起呼び出し関数回数を制限する必要はないと思いますし、またするべきではないと思います。しかし、環境としてのPHPは物理的限界を管理すべきだと思うのです。
この管理を怠り、PHP環境がクラッシュすることは避けるべきではないでしょうか。
これは、アプリケーション内でスタックオーバーフローが発生してもOS(環境)自体は落ちないように実装するのと同じだと思います。
この記事のタイトルの結論
PHPは言語であるが同時に環境としての側面も持つ。