Cプログラミング言語では、非宣言型/割り当て型の式が評価される前に、私が使用したすべての言語リビジョンで、事前の変数宣言が強制されました。C ++は、すべてのバージョンからこの要件を免除したようです。また、Cの最新バージョンでもこの要件が免除されていることを認識していますが、これらの標準はまだ使用していません。
私が持っている質問はこれです:C言語が前もってではなくオンデマンドで自由に宣言することを妨げた歴史的な理由は何でしたか?
明らかに、エンジニアリングの観点から頭に浮かぶ理由はいくつかありますが、どれも私には特にもっともらしいとは思えません。
- あいまいなコンパイラの動作エラーの発生を防止します(無限の解析ループ、評価のための大規模なメモリの肥大化、またはマクロの奇妙なコーナーケースなど)。
- 望ましくないコンパイラ出力の防止。これは、デバッグプロセスを混乱させるシンボル出力やデバッグツールの開発の容易さから、予期しないスタックストレージの順序まで何でもかまいません。
- 読みやすさ。Cは、当時の他の言語と比較して読みやすいように設計されていますが、他のほとんどの場所ではこのタイプの構造を強制していなかったため、これも飲み込むのが難しいと思います。(プロトタイピングが同様の強制であると見なさない限り、ただし、プロトタイプが'89仕様に追加されたことを思い出してください。)
- 実装の複雑さと実際的な理由。これは私が最も信じたいと思うものです。エンジニアとして、割り当てられた時間枠で実行可能な製品を出荷するために、特定の考慮事項を考慮する必要があります。コンピュータサイエンスとソフトウェアエンジニアリングの両方の専門的な状況が劇的に変化したことを認めますが、ビジネスは依然としてビジネスです。結局のところ、Bellは、Unixプログラミング環境で使用できる完成品を望んでいたと確信しています。
上記のいずれかを裏付ける良い情報源はありますか?私は何かを完全に見逃しましたか?夜明けから夕暮れまで推測できますが、良い参考資料を探しています。