【初心者向け】動的型付け, 静的型付けって何?プログラミング言語の型とは?
プログラミング言語について調べていると、よく動的型付けや静的型付けといった単語を目にすることがありますよね。しかし、その言葉の意味までしっかり理解できている方は実は多くありません。そこで今回は、プログラミング言語の「型」とは何か、基本から用語の意味について解説していきます。
「型」って何?
そもそも、プログラミング言語の「型」について知らない方もいるでしょう。
型というのは、簡単に言えば「データの種類」を定義するためのものです。
データの仕組みについては言及しませんが、プログラミング言語では各処理を実行するにあたって、データがどのような型を持っているのかを検出し、その型によって処理を使い分けています。
例えば、1 + 1 という算数の式は当然ながら機械も、人間も理解できますよね。しかし、1 + 二(に)のような書き方にすると、私たちは答えが3だとわかっても、機械では理解することができません。
なぜなら、数字と文字が混ざっているからです。人間と違って、プログラミング言語では各データを文字や数字などの型を見て内容を判断するため、数字と文字を足すという例外的な処理をするのが不可能ということですね。
コンピュータが正しく処理を実行するためにも、データの型は非常に重要な役割を担っています。
ちなみに、データの型は、以下のようなものがあります。
- integer(整数)
- String(文字列)
- boolean(真理値)
各言語によって、型の種類には多少差異もありますが、おおよそ数値や文字列、真理値の型は定番であり、どの言語でも指定できるはずです。
また、それらの型をコンピュータや人間が指定することを、”型付け”といいます。
静的型付けとは?
静的型付けとは、変数・定数の定義時にデータの型を宣言する型付けの方式です。そのデータが数字なのか文字列なのか、というように、先んじてデータの種類を限定できるわけですね。
静的型付け方式のプログラミング言語としては、
- Java
- C#
- Go
などがあります。
「静的」と名前に付いている通り、何等かの処理を行わない限りは、基本的にデータの型が変わることがありません。
integer型の整数として変数を定義した場合は、その値に文字列を入れたり、自動的に数値以外のデータとして扱ったりすることがなくなります。
例えば、以下のようなコードを実行すると、静的型付け言語ではエラーが発生します。
// 整数型の変数numberを定義
// 初期値は1
int number = 1;
number = "文字列";
// numberは整数型のデータなので、
// 文字列を代入しようとするとエラーになる
特に共同開発の場面では、とある変数に対して想定外のデータが代入されるようなトラブルを未然に防げるため、プログラムの完全性が高まるのが魅力です。
動的型付けとは?
動的型付けとは、データの型を宣言せずに変数・定数を定義できる型付けの方式です。
静的型付けは人間が先んじてデータの種類を指定しますが、動的型付けの場合はコンピュータが場面に合わせてデータの型を解釈してくれます。
動的型付け方式の言語としては、
- JavaScript
- Python
- PHP
などがあります。基本的に、動的型付けの言語は初心者向けとして紹介されることが多いですね。
例えば、以下のようなコードがあった場合、動的型付けであれば問題なく処理が行われます。
// 変数numberを定義
let number = 0;
// 型に指定がないため、
// 文字列に文字として埋められる
let string = "The number is" + number + ".";
// -> The number is 0.
一つのデータを柔軟に使いまわせるため、静的型付け方式よりもコードを短く書けるのが強みです。
一方で、以下のようなコードを書いてしまった場合は、予期せぬ動作を招くというデメリットもあります。
// 数字の文字列に数値を足したい
let number = "100";
console.log(number + 1);
// -> 1001
// 文字列に文字として追加されてしまう。
// こうすれば予期した動作にできる
console.log(Number(number) + 1);
// -> 101
まとめ
プログラミング言語において、型の存在は言語の特性を左右するほど重要なものです。型についてよくわかっていなかったという方は、この記事を参考にしつつ、型の性質について理解を深めていくことをおすすめします。