- 715 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 13:33:40.28 ID:H65SAupI.net]
- >>702
そもそもね。型安全ではないっていうのはC/C++のことを差すんだよ。 C/C++は型はあるけど、型キャストによってどんな不正な型にも変更できる。 そのようなコードを書いた場合、Segmentation faultが発生する。 もしくはメモリ内容によって未定義な変な動作をする。 Segmentation faultが発生し、通常はOSによって不正な動作を 食い止められる。このような自体になることが型安全じゃないってこと。 C#やJavaは不正な型に変更しようとしたら例外が発生する。 これは型安全。 だから4パターンあるんだよ。 1. 静的型:コンパイル時に型チェックが行われるが、型安全ではない。 C/C++など 2. 静的型:コンパイル時に型チェックが行われ、型安全。 Java、C#など 3. 動的型:コンパイル時に型チェックが行われず、型安全 4. 動的型?:コンパイル時に型チェックが行われず、型安全でない。(流石にこんなめちゃくちゃなのは作らないだろう) 静的型の1のパターンは、コンパイル時の型チェックにより、殆どの場合は安全に動作するが 壊そうと思えば壊せてしまう。それができないのが静的型の2のパターン 動的型は型安全にするしかないから型安全。静的型には型安全じゃないものが存在する。 動的厨はそれを利用して型安全じゃない静的型を叩いているだけ。 型安全な静的型の存在を意図的に無視してね。 型安全かつコンパイル時に型チェックが行われる言語は、型安全なのはもとより、 コンパイル時に型チェックが行われるから、実行時に例外(バグ)が発生する可能性も大きく減る。 つまり2のパターンの静的型が一番信頼性が高いソフトウェアを作れるってわけ。
|

|