[解決済み] ランタイムとコンパイルタイム
2022-03-23 21:28:25
質問
ランタイムとコンパイルタイムの違いは何ですか?
どのように解決するのですか?
コンパイル時と実行時の違いは、頭のとがった理論家が言うところの 位相の区別 . 特にプログラミング言語の素養があまりない人にとっては、最も習得しにくい概念の一つです。 この問題にアプローチするために、私は次のような問いかけが有効だと考えています。
- プログラムが満たすべき不変量は何か?
- このフェーズでは何が問題になるのでしょうか?
- フェーズが成功した場合、事後条件(分かっていること)は何か?
- 入力と出力がある場合は、その内容を教えてください。
コンパイル時
- プログラムは不変量を満たす必要はない。 むしろ、整形されたプログラムである必要は全くない。 このHTMLをコンパイラに送りつけて、吐き出させることもできる......。
-
コンパイル時にうまくいかないこと
- シンタックスエラー
- タイプチェックのエラー
- (まれに)コンパイラのクラッシュ
-
コンパイラが成功した場合、何がわかるか?
- プログラムはよくできていた---どんな言語であれ、意味のあるプログラムだった。
- プログラムの実行を開始することができる。 (プログラムはすぐに失敗するかもしれないが、少なくとも試すことはできる)
-
入力と出力は何ですか?
- 入力は、コンパイルされるプログラムと、それに必要なヘッダーファイル、インターフェース、ライブラリ、またはその他のブードゥー教です。 インポート を実行します。
- 出力はうまくいけばアセンブリコード、リロケータブルオブジェクトコード、あるいは実行可能なプログラムです。 あるいは、何か問題があれば、エラーメッセージの束が出力されます。
実行時間
- 私たちはプログラムの不変量について何も知らない--それらはプログラマが書き込んだものすべてである。 実行時不変量はコンパイラだけで強制されることはほとんどなく、プログラマの手助けが必要です。
-
失敗する可能性があるのは ランタイムエラー :
- ゼロによる除算
- ヌルポインタのデリフェレンシング
- メモリ不足
また、プログラム自身が検出するエラーもあり得ます。
- 存在しないファイルを開こうとした。
- ウェブページを探そうとして、URLとされるものがうまく形成されていないことが判明した場合
- ランタイムが成功した場合、プログラムはクラッシュせずに終了する(または継続する)。
- 入力と出力はすべてプログラマーに任されています。 ファイル、画面上のウィンドウ、ネットワークパケット、プリンタに送られるジョブ、何でもありです。 もしプログラムがミサイルを発射したら、それは出力であり、実行時にのみ発生します:-)。
関連
-
[解決済み] ハッシュコードとチェックサム、その違いは?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] 末尾再帰とは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] 並行処理と並列処理の違いは何ですか?
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] ディープコピーとシャローコピーの違いは何ですか?
-
[解決済み】ビットシフト(bit-shift)演算子とは、どのようなもので、どのように機能するのですか?
-
[解決済み】すべての再帰は反復に変換できる?
-
[解決済み] お気に入りの(賢い)防御的プログラミングのベストプラクティス【非公開
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン