1. 序章

このチュートリアルでは、静的および動的に型付けされた言語について説明します。 それらが何であるか、そしてそれらが何に使用されるかについて説明します。 また、それらの間に存在する相違点と類似点についても説明します。

これらの2つの用語は、さまざまなデータ型の変数を処理する方法を定義するプログラミング言語のいくつかの基本的なプロパティを指します。

2. 定義

先に進む前に、いくつかのキーワードを定義しましょう。 プログラミング言語のデータ型は、がデータ要素が持つ値の性質を定義する特性を指します。 一般的な例としては、文字列、整数、文字、ブール値などがあります。

すべてのプログラミング言語には、値に正しい型が割り当てられていることを確認するシステムがあります。これは、型チェックと呼ばれます。 型チェックは、プログラム実行中のエラーを最小限に抑えるためのプログラミングに不可欠です。 これは通常、実行時またはコンパイル時に発生します。 ほとんどのプログラミング言語で実装されている型チェックには、静的と動的の2つのカテゴリがあります。

3. 静的に型付けされた言語

静的に型付けされたプログラミング言語では、型チェックはコンパイル時に行われます。 コンパイル時に、特定のプログラミング言語のソースコードが機械可読形式に変換されます。 これは、ソースコードをコンパイルする前に、すべての変数に関連付けられている型を知っている必要があることを意味します。

このカテゴリに属するプログラミング言語の一般的な例としては、Java、Haskell、C、C ++、C#、Scala、Kotlin、Fortran、Go、Pascal、Swiftがあります。

3.1. 特徴

これらの言語のほとんどでは、プログラマーは、変数が宣言されているときに、各変数のデータ型を明示的に指定する必要があります。 対照的に、これらの言語の一部にはこの要件がなく、代わりに型推論を実装します。この場合、特定の変数に関連付けられた特定のデータ型は言語システムによって決定されます。

このカテゴリのプログラミング言語のもう1つの注目すべき特徴は、変数とデータ型の関連付けでエラーを検出すると、エラーが修正されるまでコンパイルプロセスが停止することです。 たとえば、次の変数の割り当てについて考えてみます。 2つの変数、、を宣言するとします。前者は整数で、後者は文字列です。

上記の代入ステートメントでは、文字列を整数変数に代入しようとしているため、最初の行でエラーが発生します。 文字列が文字列変数に割り当てられているため、2番目の変数割り当ては渡されます。

さらに、特定のデータ型で宣言された変数を後で別の変数に割り当てることはできません。 たとえば、上記の例では、は文字列変数であり、後で整数値に変更することはできません。

さらに、型チェックはコンパイル時に行われるため、プログラムの型エラーを検出して早期に対処する方がはるかに高速です。 その結果、このようなプログラムは、型チェックがすでに完了しているため、通常、実行時のパフォーマンスが向上します

4. 動的型付けされた言語

逆に、動的型付けされた言語のでは、型チェックは実行時または実行時に行われます。 これは、プログラムが実行されているときにのみ、変数が型に対してチェックされることを意味します。 このカテゴリに属するプログラミング言語の例としては、Python、JavaScript、Lisp、PHP、Ruby、Perl、Lua、Tclなどがあります。

4.1. 特徴

このカテゴリのプログラミング言語では、変数宣言時にデータ型を明示的に指定する必要はありません。 言語システムは、実行時に変数のタイプを検出できます。 たとえば、この種の言語での変数の宣言と割り当ては次のようになります。

ここで、この例では、52に割り当てられています。 前の例と比較すると、変数に関連付けられたデータ型を指定する必要はありません。 さらに、以前に宣言された変数のデータ型を変更することもできます。

たとえば、に関連付けられている値を整数から文字列に変更したい場合、エラーは発生しません。 さらに、変数タイプは動的である可能性があるため、プログラマーはプログラムを作成する際の柔軟性が高くなります。 それにもかかわらず、すべての変数の型情報を実行時に取得する必要があるため、実行が遅くなる傾向があります

5. 違い

主な違いは次のとおりです。

使用する言語の決定は、通常、プログラマーとプログラムの目的によって異なります。 どちらにも独自のメリットとデメリットがあるため、一方が他方より優れていると結論付けるのは困難です。

たとえば、プログラマーがコードをより簡単に記述して実行したい場合は、動的に型付けされた言語が適しています。 ただし、適切な型管理を実践するのはプログラマーの責任です。 より厳密なコードが望ましい場合は、静的に型付けされた言語がより適切なオプションになります。

6. 結論

この記事では、データ型、型チェック、およびプログラミングで型チェックに使用される2つの主要な手法について説明しました。 動的に型付けされた言語は柔軟性が高くなりますが、コードは最適化されませんが、静的に型付けされた言語は柔軟性が低く最適化されたコードを提供します。