> 静的言語のいいところは静的(=コード実行前)にプログラムの構造が決まるところだよ。
> だからコンパイル時にプログラム内の構造バグをチェックできる。

それは違う。たとえばRubyをコード実行前にコンパイルしたところで
コンパイル時にプログラム内の構造バグは(静的言語よりも)わからない。

コンパイル時にわかるのはわかるのは、静的言語であることも条件の一つだが、
それよりも重要なのはソースコードに定義が書いてあること。
定義があるから論理学的手法によって、自前に矛盾を見つけることができる。

いくら実行前にコンパイルしたからと言って、定義がなければ何も導出できない。