型付け言語とは?型付け言語の仕組みについてまとめてみた。

画像

プログラミング言語には大きく分けて「動的型付け言語」と「静的型付け言語」の二種類に分かれてます。ここでは型付けという言葉の意味と型付け言語のそれぞれの特徴について紹介します。

もくじ

  1. 型付け言語とは?
  2. 動的型付け言語とは?
  3. 動的型付けのメリット
  4. 動的型付けのデメリット
  5. まとめ

型付け言語とは?

プログラミング言語には大きく分けて「静的型付け言語」と、「動的型付け言語」の二種類があります。そもそも型付けとはなんでしょうか?

「型付け」という意味は読んでそのままの通り、プログラムを書くときに変数や関数に何が入ってくるかというのが特に決まっていない形を指します。

プログラムの世界では文字列、数値、真偽値といった様々なデータの種類があります。そのデータを扱う前にデータの種類の判別をおこないます。扱うデータの種類の型を決めてあげることを型付けと言います。

型付けをすることでどの種類のデータを扱うのか事前に決めることができるということです。

動的型付け言語とは?

動的型付け言語とは変数に入るデータの種類の「型」を指定しないで変数や関数を使用できます。逆に静的型付け言語は変数や関数に入るデータの種類の型を予め決めないと使用できません。

動的型付け言語最大の特徴はコードの書きやすさです。型を定義しなくても自分の思い通りにコードを書くことができるのでプログラミング初心者にとって学習しやすいのでお勧めです。

自分の思い通りにコードを書くことができる反面、他のコードと干渉を起こしてエラーとなる原因を作ってしまいます。

ちなみにJavaScript、Ruby、Pythonといったプログラミング言語は動的型付け言語に属してます。

おそらくプログラミング初心者に取っては何のことだかサッパリ分からないと思うので試しにJavaScriptとJavaで変数を宣言するコードを比較してみましょう。

JavaScript(動的型付け言語)の変数宣言

typing.js
var str = "Hello"; // string型
var i = 1; // number型                                                       
var f = 1.1; // number型
var bool = true; // boolean型

動的型付け言語は変数に入るデータの種類の「型」を指定しないで変数や関数を使用できます。小さいプログラムや型の変動が激しい環境であれば簡単に実装できるのでとても便利です。ただ、実際に動かしてみないとプログラムの挙動を確かめることはできません。

Java(静的型付け言語)の変数宣言

typing.js
String str = "Hello"; // String型
int i = 1; // int型
float f = 1e-1f; // 1×10^-1 float型
double d = 1.0; // double型
boolean b = true; // boolean型

静的型付け言語はどんな値が入るか事前に型を指定して使います。変数や関数に型を予め定義しておき、その型以外のデータを変数では使えません。無駄な値を入れられたり無駄に容量をとられることをなくすことができます。型を指定してプログラムを組んでいくので動かす前に挙動を確認できるのが特徴です。

動的型付け言語のメリット

動的型付け言語のメリットをいくつか挙げます。他の言語と比較して環境構築が非常に楽です。また、デバック(エラーチェック)もやりやすいのも特徴的です。

1. 変数に代入する値で型が決まるので記述量を減らすことができる。

最大の特徴は何と言ってもコードの記述量を減らすことができることです。プログラムを作成する前に型を定義しなくても変数に代入する時に型が決まるのです。

他の言語の場合、型を定義するときに型定義を宣言するコードを書かないといけません。わざわざ型定義を宣言しなくても型定義されるので必然とコードを書く記述量を減らすことができます。

2. 簡単にプログラムを作成することができる。

プログラムの動きはとてもシンプルです。プログラムの動きは「順次進行」「条件分岐」「繰り返し」となってます。この3つの動きのことをまとめて、プログラムの基本構造と言ったり、制御構造、制御フローと言ったりします。この3つの基本構造を使えば、複雑なプログラムを作ることが可能です。

3. リファクタリングが簡単にできる。

リファクタリングのしやすさも特徴的です。リファクタリングとはプログラムの外部から見た動作を変えずにソースコードの内部構造を整理することを言います。

要はプログラムのコードで共通化できる部分を綺麗にまとめてあげることです。そうすることによりチームで開発している時に事前に共有することができるわけです。

動的型付け言語のデメリット

動的型付け言語のデメリットをいくつか挙げます。JavaScriptは自由に変数にアクセス可能は反面、スコープを汚染しやすいのが最大の特徴です。

1. スコープの汚染

スコープとは変数を扱える領域のことを指します。変数を代入した時に型は定義されるので同じ変数名だと値の中身など関係なく自由にアクセスすることができます。それがプログラムのエラーの原因となるのです。

2. メモリを無駄に消費する。

JavaScriptの場合、名前空間が1つしか用意されてません。スコープの汚染が原因で発生するエラーが他の言語と比べて高いので変数や関数の扱いには細心の注意が必要です。

3. プログラムを実行しないとエラーを見つけることができない。

一番厄介なケースは他社で開発したプログラムの変数名と自社で開発したプログラムの変数名が被った時です。JavaScriptは実際に処理を実行しないとエラーを確認することができません。

記述量が膨大だとエラーの原因を特定するのは容易ではないので気をつけたいところです。

まとめ

画像

結論からいうとプログラミング初心者のうちは動的型付け言語から勉強することをお勧めします。型付け言語の根本を理解してから他の言語を学習することをお勧めします。

その中でも圧倒的にお勧めな言語はJavaScriptです。ひと昔前までは「使う場面が限られている」「おもちゃな言語」「プログラミング言語ではない」などと言われてましたが、いまでは様々な場面で使われるケースが増えてきてます。

例えばVue.js や React.js と言った人気のフレームワークはjavascriptがベースとなってます。裏を返せばJavaScriptを深く理解することでVue.js や React.js の理解度を深めることができます。

また、他の言語と比べて環境構築が圧倒的に楽です。ブラウザとテキストエディダさえ用意できればすぐに学ぶことができます。プログラミングに興味のあるかたはこの機会に検討してみては如何でしょうか。