プログラミング言語で記述されるプログラムは、区切り文字で区切られた一連のトークンから構成されます。
トークンとは、基本的な構文要素としてプログラム内で意味を持つテキストの最小単位であり、字句ともいいます。
トークンを組み合わせて、式や宣言や文を組み立てます。 文とは、プログラム内で実行可能なアルゴリズム動作を記述するものです。
このトピックでは、汎用的な視点から、プログラミング言語を構成する要素を説明します。
プログラミング言語の構成要素には下記のものがあります。
- 字句構造
- データ型、値及び変数
- 式
- 文
- ブロック
- 構造化
- オブジェクト指向
- 例外処理
字句構造
字句構造(英:lexical structure)とは、プログラミング言語の字句解析が想定するトークンの構造のことです。 トークンには主に以下のような種類があります。
- リテラル(英:literal)
- 識別子(英:identifer)
- キーワード(英:keyword)
- 演算子(英:operator)
- 区切(英:punctuator)
- コメント(英:comment)
データ型、値及び変数
データ型(英:data type)とはデータの扱いに関する形式のことです。データ型は、プログラミングなどにおいて変数(英:variable)そのものや、その中に代入されるオブジェクトや値(英:value)が対象となります。データ型は単純型と複合型2種類に分類することができます。
- 単純型
単純型とはプログラミング言語の仕様に元から存在する型であり、組み込み型、原始型、プリミティブ型、基本型などと呼ばれることもあります。単純型は、数値型、文字列型、論理型、ポイント型などの種類があります。 - 複合型
複合型とは、プログラマがソースコードの記述などにより新たに作る型であり、複合データ型、ユーザ型、ユーザ定義型、参照型、リファレンス型などとも呼ばれることがあります。複合型は構造体、クラス、インタフェース、共用体、列挙型などの種類があります。 なお、プログラミング言語により、一部型がなかったり、単純型か複合型かの分類が違ったりすることがあります。
式
式(英:expression)とは、言語によって定められた優先順位や結びつきの規定に則って評価される値、変数、演算子、関数の組み合わせのものです。
数学における式と同様、式は評価された値を持っています。
文
文(英:statement)とは、一つ以上の式や関数呼び出しで作られる、手続き構造の分割できない基本単位のものです。
if文のように分岐構造を表すものや、代入文のように変数の値を変更するものなどがあります。
ブロック
ブロック(英:block)は複数の文から構成されます。ブロックには、単純な複数文が並べられた「順次構造」や、if-else-endifのような「選択構造」、for-nextのような「反復構造」があります。
プログラムの基本構造は、「順次構造」、「選択構造」、「反復構造」の3つからなると考えられます。 基本的にはプログラムは先頭行から順に実行されていきます(順次構造)が、実際にはその流れを条件によって分岐させたり(選択構造)、同じ箇所を繰り返し実行させたりすること(反復構造)を頻繁に行います。
構造化
殆どのプログラミンググ言語では、プログラム中で意味や内容がまとまっている作業をひとつの手続きとして定義できる仕組みが用意されていて、手続きの呼び出しによりプログラムが成り立ちます。
プログラミング言語により、手続きそのものは、サブルーチンやプロシージャ、関数、メソッドなどさまざまの呼び方が存在します。
オブジェクト指向
オブジェクト指向(英:object-oriented)とは、オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方です。 構造化がデータとそれを処理する手続きを分離する考えに対して、オブジェクト指向はデータとそれを処理する手続きを纏めて、オブジェクトとして表現します。
オブジェクト指向は、JavasSriptのようなプロトタイプベースのものと、c++、javaなどのクラスベースのものがあります。 クラスベースで実現されるプログラミング言語では、クラスやインタフェースの作成、クラスの継承などの仕組みが提供されています。
例外処理
例外処理(英:exception)とは、プログラムがある処理を実行している途中で、なんらかの異常が発生した場合に、現在の処理を中断(中止)して、別の処理を行うことです。
例外処理がサポートされているプログラミング言語では、異常が発生可能な処理をtryブロックに入れて、例外が発生した時の処理をcatchブロックに入れるのが多く見られます。