teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

表現変更

2017/03/06 17:30

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -9,4 +9,4 @@
9
9
  1.を許容したとして、初期値を設定しなくても必ず0で初期化されることを保証するという言語仕様を考えてみます。さてプログラマーがバグのないプログラムを書いて、変数の値を0でない値に初期化するとしましょう。その場合、必要もないのに0で初期化されるということはそれだけ無駄な代入文を実行することを意味するので、無暗に実行速度を落とす要因になってしまいます。
10
10
  ただしインタープリタ言語の多くではそういう仕様もあります。Visual Basicなんてのはそうですね。
11
11
  Dim a as Integer
12
- と書くと何も初期化しなくても0が仮定されます。インタープリタ言語は元々スピードを最優先に考えるのではなく使い勝手やコンパイルが必要ない点を重視するため「初期化ステップが入ったからといって何ほどのこともない」という考えで設計されるのだと思います。それに対してJavaなどのコンパイラー言語では「コンパイルという手間をかけるのだから可能な限りプログラムの正しさや効率を求める」思想で設計されます。そういう意味で「スピードを無意味に落とすような仕様」はそうでない仕様よ劣っていると考えられるが多いと思います。
12
+ と書くと何も初期化しなくても0が仮定されます。インタープリタ言語は元々スピードを最優先に考えるのではなく使い勝手やコンパイルが必要ない点を重視するため「初期化ステップが入ったからといって何ほどのこともない」という考えで設計されるのだと思います。それに対してJavaなどのコンパイラー言語では「コンパイルという手間をかけるのだから可能な限りプログラムの正しさや効率を求める」思想で設計されます。そういう意味で「スピードを落とすような仕様」は合理的理由がな避けられる傾向にあると思います。