YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Japanese subtitles

← 06-32 Mistakes Solution

Get Embed Code
3 Languages

Showing Revision 1 created 10/23/2014 by Udacity.

  1. では見ていきます
  2. 最初の命題は正しいです
  3. 1つの関数だけだとすると
  4. まずトップレベルのグローバル環境があり
  5. 関数を作る時はその親ポインタとして
  6. グローバル環境を指定することになります
  7. バグの箇所でも同じことをするので
  8. 見分けはつきません
  9. これが無名関数でなく
  10. factorialのような再帰関数だとすると
  11. 1つの関数でバグを見つけられるかもしれませんが
  12. 1つの無名関数ではバグは見つかりません
  13. “グローバル環境に最低でも
    3つの変数がなければバグを発見できない”
  14. これは正しくありません
  15. グローバル環境の中に1つの変数
  16. あるいは変数なしでも大丈夫です
  17. 親のポインタが関係するのは
  18. 子の環境の変数を見ようとして
  19. ローカル変数が見つからない時です
  20. つまり以前のbaldrの例で見たような変数aが
    1つだけあるテストケースを作れるはずです
  21. 3つも必要ではありません
  22. “トップレベルで宣言された2つの関数だけで
    バグを見つけることができる”
  23. 別の関数f2がトップレベルにあったとしても
    その環境へのポインタはグローバル環境を指します
  24. バグのせいで結局グローバル環境になりますが
  25. 同じなのでバグを発見することはできません
  26. “関数の内側で定義された1つの関数だけで
    バグを発見することができる”
  27. いいプランです
  28. 関数f1の内側に関数f2があるとします
  29. f1のポインタはグローバル環境を指すべきで
  30. バグのせいでグローバル環境を指します
  31. f2のポインタはf1の環境を指すべきですが
  32. バグによってグローバル環境を指します
  33. つまりここに変数aを作り
  34. f2がそれを参照するようにすればよいのです
  35. このテストケースなら
    変数を見つけられずエラーになります
  36. 現実にはこれを作って
  37. バグを見つけるという手順になります