静的型付け言語と動的型付け言語の違いとメリット
外資系企業でソフトウェアエンジニアをしております、タロイモと言います。今日もよろしくお願いします。
型付け言語には大きく分けて、静的型付け言語と動的型付け言語があります。
Wikipediaの説明には、以下のように書いてあります。
静的型付けとは、変数や、サブルーチンの引数や返り値などの値について、その型が、コンパイル時など、そのプログラムの実行よりも前にあらかじめ決められている、という型システムの性質
動的型付けとは、変数や、サブルーチンの引数や返り値などの値について、その型を、コンパイル時など、そのプログラムの実行よりも前にあらかじめ決めるということをせず、実行時の実際の値による、という型システムの性質
かなり分かりやすい説明ですが、今回は具体例を用いて、その2つの違いとメリットを説明します。
1. 静的型付け
Java、C言語、COBOLなどのコンパイラ言語が、静的型付け言語と呼ばれます。
以下のJavaの例だと、返り値にint型を指定し、引数a, bにもint型を指定しています。
public int add(int a, int b) {
int c;
c = a + b;
return c;
}
このように、静的型付けはプログラムを書く際に予め型付けを行います。
静的型付けは事前にコンパイルを行うことで、プログラムの実行時には、型の整合性チェックの必要量が少なくなります。
そのため、実行時の処理が速いです。
また、コンパイル時に型のチェックを行うため、型の整合エラーをチェックできます。
つまり、int型にString型が入っていたら、すぐに気づくことができます。
2. 動的型付け
JavaScript、Ruby、Pythonなどのスクリプト言語が、動的型付け言語と呼ばれます。
以下のJavaScriptの例だと、返り値にも引数a, b型にも型を指定していません。
add(a, b) {
let c;
c = a + b;
return c;
}
このように、動的型付けはプログラムを書く際に型付けは行いません。
動的型付けは事前にコンパイルを行わず、プログラムの実行時に、型の整合性チェックを行います。そのため、実行時の処理が遅いです。
一方で、プログラムの記述量が少なく、文法の勉強コストが低いため、直感的にコードを書くことができます。
3. どっちを使えばいいの?
大人数で、堅牢なシステムを作る際は、静的型付け言語を使うべきと思います。
というのも、型の整合エラーをチェックすることで、エラーのチェックを厳密に行うことができ、結果的にプログラムが堅牢になるからです。
また、プログラマーにとって型が自明であるため、大人数で開発する際に、開発がしやすくなります。逆に、動的型付けであるJavaScriptではJSDocなどで、型を自明にする必要があります。
小規模で、素早い開発を行いたい場合や、プログラムの初心者は、動的型付け言語を使うべきと思います。
というのも、プログラムの行数が減るので、素早く、とりあえず動くものが作れるからです。そのため、アジャイル型開発との相性も良いかと思います。
4. まとめ
今回は、静的型付け言語と動的型付け言語の違いとメリットについて説明しました。
どちらが良いということはなく、目的にあった言語を使うことが必要だと思います。
ただ、最近ではPythonやJavaScriptの盛り上がりがすごいです。これはアジャイル開発が浸透してきた影響かなと思います。
ベンチャー企業などでもよくあることですが、最初は小さいサービスだったためJavaScriptで開発をしていたが、サービスが成長するにつれてTypeScriptに切り替えるということもできます。
そのため、個人的には、BtoC開発では動的型付けがお勧めです。
本日もご精読ありがとうございました。