型付けとは、
本記事では1.について解説する。
高級プログラミング言語大半が文字や数字(整数と小数)を別の型と位置づけており、クラス(オブジェクト)ごとに型が設定されていることがほとんどである。
これは偶然ではなく型理論という数学的理論に裏付けられているらしいがここでは深入りしない。
型付けには静的型付けと動的型付けがある。
静的型付けとはプログラム実行開始時にすべての変数の型が予め決まっているプログラミング言語であり、
動的型付けとはプログラム実行中にその変数が呼び出されるときまで、変数の型が変わりうるプログラミング言語である。
静的型付けはコンパイル言語に多く動的型付けはスクリプト言語に多いが、傾向であり、絶対的なものではない。
プログラム製作者の観点からは、動的の方が制約が少ないので書き始めは書きやすいが、プログラムが大きくなると、変数の型が正しいことを保証する(型安全という)を自力で管理する負担が増大するので向いていないといわれている。したがって、小さな処理を簡便に記述するのに向いている。
静的型付けは、実行前(多くはコンパイル時)にはすべての変数の型が決まっている。
従ってIDEによる支援も受けやすい。
たとえば、整数と小数を別の型として扱う言語(先述のように大多数のプログラミング言語がそうである)においてx,yを引数に取り、x * yを返す関数(もしくはメソッド)f(x,y)を考えてみる。
動的型付けなら、f(x,y) = x * yと定義するだけで済むが、静的型付けだとx,yが整数か小数かで既に2x2の4通りの場合があり、さらにf(x,y)の戻り値の型は実行前に定義されている必要があるので、(x,yが小数の時に)x * yが整数になる時だけf(x,y)が整数型となり、それ以外の場合はf(x,y)が小数型となるような定義は、不可能か、可能であったとしてもかなり複雑な処理を伴うことが多い。
またf(x,y)の結果として x * y(整数), x / y(小数)の2種類の型を戻したい場合、動的だと、2つの値の配列を返せば済む言語が多いが、静的だと配列の要素はすべて同じ型でないといけない言語が多いので、「型の組み合わせを表す型」をその都度別途定義する必要が出てくる。
しかし、動的だと、x,yに数字の1や0.5以外に文字の「三」などが入ってしまう可能性があり、プログラムの作成者と使用者が異なる場合、その問題が発覚するのが、作成者の手を離れて使用者の手に渡ってしまってから初めて判明することになる危険性が大きい。
小さなプログラムだと、そのようなことが起きないように人力で気を配る程度で済むが、作る人と使う人のコミュニケーションが希薄だったりプログラムが改造を重ねて大きくなったり、プログラム作成から時間が経ったりすると注意が行き届かなくなり、上記ミスの危険性が高まる。
静的型付けではIDEがチェックしてくれることが多い。
一方、動的では別途型安全を保証する機構を(ユニットテストなどにより)自分で用意する必要が生じ、先述した手軽さというメリットが相殺されてしまうことになる。
もちろんこれは一般的傾向であり、個々の言語にはそういった問題に対処するための仕様やツールが用意されていることも少なくない。
急上昇ワード改
最終更新:2025/12/10(水) 15:00
最終更新:2025/12/10(水) 14:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。