プログラムの実行を開始する前に、変数や引数、戻り値などの型が決定済みであることをいいます。
ソースコードに型を明示的に記述したり、コンパイラの型推論と呼ばれる機能によってコンパイル時に決定されたりするなど、実行を始めるより前に型が決定できている場合、静的型付けであるといいます(あくまでも実行前であることが問題なのであって、必ずしもコンパイルで決定されるという意味ではないことに注意)。一方、プログラムの実行時に型が決定される(実際の値が何であるかによって決める)ことを動的型付けといいます。
静的型付けでは、型と値が一致していないミスを、コンパイルエラーや警告などのかたちであらかじめ検出できます(プログラマーが誤ったキャストを行うなどしていなければ)。一般的に問題の発見は早いほうがいいので、この特徴は利点として捉えられることが多いです。しかし、すべての値の型を明確にし、不整合なくソースコードを組み上げなければ、実行を行うことすらできませんし、同じ意味の処理でも、型ごとに記述しなければならないなど(C++ のテンプレートのような解決策はある)、柔軟性に欠ける面もあります。また、型が実行前に決定できていると、最適化をかけやすくなり、パフォーマンスの良いプログラムになる可能性が高まります。
動的型付けの場合、プログラムを実行する前に型に関する問題を検出しきれないため、問題があれば、実行時に実行時エラーや例外として報告されることになります。荒く仕上げた状態でも実行してみて、完成している部分だけを確認することができますし、型に応じて処理を分岐させるなど、柔軟なプログラムを記述できる利点がありますが、問題のある箇所が実際に実行されない限り、そこに潜む間違いが検出できないということでもあります。
静的型付けを採用しているプログラミング言語を静的型付け言語、動的型付けを採用しているプログラミング言語を動的型付け言語と呼ぶことがあります。ただし、基本的には静的型付け言語であっても、リフレクションと呼ばれる機能を使うなどして、動的型付けのような柔軟さを得られる言語もありますし、基本的には動的型付け言語であっても、型を指示する方法を備えている言語もあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |