プログラミング言語の5大要素

Loading

プログラミング言語 にもいろいろな種類があることは、前回の記事でお伝えしました。
前回の記事に関しては下記をご覧ください。

https://codes101.tech/tech/126/

今回はプログラミング言語に共通して存在する5大要素についてお伝えしたいと思います。

目次

プログラミング言語 に共通する5大要素

前回の記事で、プログラミング言語にはそれぞれ特徴がある、ということをお伝えしたかと思います。
プログラミング言語にも「文法(=プログラムを書くためのルール)」というものがあり、人間の言語と同じくそれぞれの言語によって書き方が少しづつ違っています。

しかし、人間の言葉には言語の違いはあれど、名詞や動詞などといった共通の特徴があるのはみなさんご存知でしょう。
プログラミング言語にも人間の言葉と同じように、どの言語にも共通して存在する要素があります。
以下に列挙した5つが、その共通要素になります。

  • 変数
  • 条件分岐処理
  • ループ処理
  • 関数やクラス
  • 入出力

以下でこれらの要素について、一つずつ解説していきます。

変数

変数とは、値を一時的に覚えておくための「箱」のようなものです。
例えばJavascirpt(ジャバスクリプト、詳細は後述します)という言語では、変数は下記のように書きます。

let a = "Hello";

これを人間の言葉で表現すると、「”Hello”という文字列を、aという名前の箱に入れて覚えておけ」という意味になります。
Javascriptにおいては、「let」という文字がコンピューターに対して「指定した値を記憶しておけ」という命令になっているのです。
このプログラムを読んだコンピューターは、”Hello”という文字列をメモリの上に記憶して、プログラムの他の場所でも使えるようにとっておきます。

念のためもう一つだけ例をあげましょう。

let b = 2022;

これの意味はわかりますか?
答えは「2022という数字を、bという名前の箱に入れて覚えておけ」となります。

変数は、コンピューターに値を記憶させておくための文法だと覚えておきましょう。

条件分岐

条件分岐は、「〇〇という場合はAの処理を、それ以外の場合はBの処理を行う」といったように、条件によって処理を変えたい場合に使われる文法になります。
「if文」と俗に言われています。

概念的に書くと、以下のようになります。

if(◯◯の場合) {
  Aの処理
} else {
  Bの処理
}

どのプログラミング言語でも、条件分岐には「if」という文字列を使います。
if文を見つけたコンピューターは丸括弧「( )」の中の条件式を見て、その条件があてはまるならAの処理を、その条件にあてはまらなければBの処理を実行する、という動作をします。

if文を利用することで、コンピューターにあれこれの条件によって処理を変えさせる命令ができるわけです。

ループ

ループは、同じ処理を繰り返させるための文法になります。
俗に「forループ」や「whileループ」などと呼ばれたりします。

概念的に書くと、以下のようになります。

for(繰り返しの条件) {
  繰り返させたい処理
}

コンピューターはこの文を見つけると、「繰り返しの条件」があてはまるかぎり、指定した処理を繰り返します。
例えば繰り返しの条件が「5回繰り返せ」であれば、コンピューターは指定された処理を5回繰り返し実行します。

このforループがあるおかげで、プログラマーは同じ処理を何回も書く必要がなくなるわけです。

関数やクラス

プログラミング言語には関数やクラスと呼ばれる文法があります。
これらは、お互いに関連のある処理たちを一つにまとめるために存在します。

例えば、ロボットにテーブルの上にあるお皿を棚に戻してもらうことを考えましょう。
人間にとっては簡単な仕事ですが、ロボットにとっては色々な動作を含む複雑な処理になります。

  1. テーブルの近くに行く
  2. お皿を探す
  3. 見つかったお皿を取る
  4. 棚の近くまで行く
  5. 腕を伸ばす
  6. 棚にお皿を置く

「お皿を戻す」という動作の中に、さらに細かい6つの動作が存在するわけです。

これらの処理を一回させたいだけなら、一つ一つ何も考えずにプログラムを書けばいいだけです。
しかし、この「お皿を戻す」という動作をいろんな場面で使いまわしたいとき、その都度プログラムを書かなければいけないのでしょうか?

プログラミング言語にはこういった場合に備えて、多くの処理を一つにまとめて使い回すための「関数」という仕組みが備わっています。

例によって関数を概念的に書くと、以下のようになります。

function お皿を戻す() {
  テーブルの近くに行く
  お皿を探す
  見つかったお皿を取る
  棚の近くまでいく
  腕を伸ばす
  棚にお皿を置く
}

このように書くことで、コンピューターは「テーブルの近くに行く」「お皿を探す」「お皿を探す」などなど……といった多数の処理をひとつにまとめて「お皿を戻す」処理として認識するようになります。
頭に書いた「function」という文字で、『「お皿を戻す」という命令をしたらこれら6つの処理を順番通りに実行しろ』とコンピューターに教えているわけです。

このように書いておけば、「お皿を戻す」処理をさせたい場合は次のようにプログラムするだけになります。

お皿を戻す();

このように「お皿を戻す」という命令を書くだけで、コンピューターは「テーブルの近くに行く」「お皿を探す」「お皿を探す」……などの一群の処理を順番通りに実行してくれるようになります。

関数はコンピューターのためというよりも、むしろプログラムを書く人間が楽をするための仕組みになります。
同じ処理をいろんな場面で使いまわしたいときに、関数という仕組みで最初にまとめて置くと後が楽になるから、という理由で存在しています。

クラスに関しては、ここでは詳しく解説しませんが、関数と同じく処理をまとめるための仕組みです。
詳細については、各言語ごとの文法を記事にする際にとりあげたいと思います。

入出力

どのプログラミング言語にも、人間が入力した値を認識したり、コンピューターが計算した値を画面に表示したりするための仕組みが備わっています。
プログラマーが「入力値を読み取れ」、あるいは「画面に丸を描け」などとコンピューターに指示するための文法があるということです。

この入出力の仕組みがあるために、アプリケーションを作ったり、ゲームを作ったりできるというわけです。
入出力の詳細については、各言語ごとの文法を記事にする際にとりあげたいと思います。

まとめ

上記で解説した5つの要素は、全てのプログラミング言語に備わる特徴になります。
これらの要素を組み合わせることによって、複雑な処理をコンピューターに指示することができます。
今流行りのAIやブロックチェーンなどの技術も、大元はこの5つの要素を組み合わせることで実現しています。
たったこれだけでAIのようなものすごい技術を作れるって、なにか不思議な感じがしますよね。

これらの5つの要素を理解しておくと、プログラミング言語を学ぶときに役立ちます。
ぜひ頭の中に入れておいてください。