どうもこんにちは!
サバ缶(@tech_begin)です。
基本情報や応用情報技術者試験で頻出する「プログラムの特性」に関する問題。
今回はその特性の1つである「リユーザブル」について解説していきます。
もし分かりづらい箇所や、間違っている箇所があればお気軽にTwitterへご連絡ください!
プログラム特性とは
それではまず、少しおさらいをしておきましょう。
すでに何があるのか知っている方は、飛ばして大丈夫です!
プログラムの構造上 生じる性質を分類したのが「プログラムの特性」です。
その「プログラムの特性」は4つに分類されます。
- リロケータブル(再配置可能)
- リユーザブル(再使用可能)
- リエントラント(再入可能)
- リカーシブ(再帰的)
このうちの1つ『リユーザブル(再使用可能)』について学んでいきます。
リユーザブル(再使用可能)とは
リユーザブルとは、メインメモリに読み込まれたプログラムを繰り返し使えることを言います。
また、「リユーザブル」という性質を持ったプログラムを『再使用可能プログラム』と呼びます。
詳しくはプログラム実行までの流れの記事をご覧ください。
リユーザブルの言葉の意味を理解する
リユーザブル……言葉だけだとイメージしにくいですよね。
英語で『Reusable』と書きます。
リサイクル推進の用語に「3R」というものがあるのをご存知でしょうか。
このうちの「Reuse」と全く同じです。繰り返し使うという意味があります。
英単語を分解してみましょう。
- 「Re」 再び
- 「use」 使う、利用する
- 「able」 可能
これで「リユーザブル=再使用可能」という意味が結びついたのではないでしょうか。
リユーザブル(再使用可能)と呼ぶための条件
以下の2つがあります。
- 実行時に自分自身のコードを書き換えたりしないこと
- 内部の状態を表す変数などを変更・または変更したままにしないこと
リユーザブルは、メインメモリに読み込まれたプログラムが「何度も繰り返し実行できること」を指します。これを言い換えると「何度実行しても同じ結果が返ってくること」でもあります。
上記の条件を満たさない場合は、リユーザブルではないと言えます。
つまり裏を返すと、上記の条件を満たせばリユーザブルであると言えます。
リユーザブル(再使用可能)である必要性と目的
プログラミングをやる上で、『基本概念・基本思想』と言いますか、、、
IT業界で共通した認識があります。
それは『車輪の再発明はしない』ということです。
「広く受け入れられ確立されている技術や解決法を(知らずに、または意図的に無視して)再び一から作ること」を指すための慣用句。(引用:Wikipedia)
既にあるものは使いまわして効率的にコーディングしていこうぜ、という考え方のことです。
プログラムを簡単に再利用できるようにする性質は、以下のような特性を利用します。
言語によって書き方や考え方が異なる場合があるので、ここでは割愛いたします。
- モジュール性
- 疎結合
- 高い凝集性
- 情報の隠蔽
- 関心の分離
リユーザブルとリエントラントの関係性
リユーザブルとリエントラントは、包含関係にあります。
リユーザブルは、メモリに読み込んだプログラムを、先頭アドレスから繰り返し実行することができます。
一方、リエントラントは、プログラム実行中、同じ処理が呼び出されても問題なく完了する性質のことです。
(以下で、主記憶装置にプログラムが読み込まれるイメージをおさらいしています)
つまり、マルチタスクと呼ばれる並列実行が可能なプログラムとも言えます。