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