簡単でわかりやすい!動的型付けと型推論の違いとは?タイミング?どちらが便利?プログラマーがわかりやすく解説
変数は途中経過を書き出すメモ
例えば何かのテストの3人の平均点を出すことを考えます。まずは3人のテストの点数を合計してから、それを3で割ったものが平均点です。それを電卓で計算する場合、3人の合計点をメモに一旦書き出しませんか。メモリー機能のある電卓ならメモリーを使うこともあります。あるいは頭の中で覚えておくかもしれません。どの方法にしても、一旦3人の合計点をどこかにとっておく必要がありますよね。
コンピューターでも計算の途中結果などをどこかにとっておくことがあります。このとっておくための場所が変数です。変数と言うと数学の方程式のxやyを思い浮かべてしまうかも。でも、実際には付箋やメモに似たものがプログラムの変数です。
変数には種類(型)がある
プログラムで一旦どこかにとっておくメモの内容は人の名前や、何かの数字、次に行く場所などなど様々。メモに「1.1」と書いてあっても、それだけではこれが何を意味するのかわかりません。小数点付きの数「1.1」の可能性が高そうです。しかし実は日付の1月1日という可能性も。
書いた本人ならともかく、他人からは見ただけでは区別するのは不可能です。でも、あらかじめこのデータの種類が「数値」とわかっていれば、1.1という小数点付きの数値というのがすぐわかります。プログラムを書いているプログラマはこれは数だと思っていても、そのプログラムが動くコンピューターはそれがわかりません。そのため、これは数だよと教えるものが型なのです。
プログラミング言語によって変数の型は違う
コンピューターが途中経過を書き出すメモが変数で、その内容を表すものが型です。では、型にはどんなものがあるのでしょう。実は、これはプログラミング言語によって違います。基本的なのは「123」や「3.1415」といった数値と、「あいうえお」や「ABC」といった文字列です。多くのプログラミング言語にはこれらの型があり、数値型や文字列型と呼ばれています。
しかし、中には日付を表す日付型や、YesかNoかを表す論理型といった型があるプログラミング言語も。また、これらの単純なデータを組み合わせてひとつの型として考える複合型などもあります。世の中にはコンピューターのプログラミング言語が250以上あるとも。それだけ数多いプログラミング言語が進化、競争しています。そのため、どんな型があるかやどう使うかもプログラミング言語の特徴のひとつなのです。
静か?動く?静的と動的ってなに?
image by iStockphoto
変数とは何か、型とは何かに続いて、プログラミングにおける「静的」と「動的」について説明します。静的型付けや動的型付け以外にも似ているのが静的解析と動的解析など。プログラミングに関連して「静的」と「動的」という考え方がよく出てきます。
最初にざっくり説明したように静的とは事前、動的とはその場、実際に動かしてという意味合いで考えてください。この静的と動的という考え方や、型推論とは何かを説明していきます。
違いはタイミング?事前に決まるのが静的、動く時が動的
変数は一時的にとっておくメモのようなもの。その内容が何かを示すのが型です。その型がいつ決まるのかのタイミングはプログラミング言語で違います。プログラマの頭の中ではこれは数、これは日付と決まっていても、コンピューターには伝わりません。どうにかして伝える必要があるわけです。
一番簡単なのは、変数をつくるときにこの変数の型はこれと書いてしまうこと。例えば「int a;」などと書きます。この場合中身が数である変数aです。このように事前に書いておくのが静的型付けになります。一方、「a=0」と書けば変数aの中身は数字の0で、「a=”abc”」と書けば文字のabcということが決まるのが動的型付け。プログラムを書いた時点でわかっているじゃないかと思うかもしれませんが、コンピューターにとっては動かす時までわからないのです。
\次のページで「手間を省きたい!静的型付けと型推論」を解説!/




