プログラムの特性についてざっくり解説してみた(リロケータブル、リユーザブル、リエントラント、リカーシブ)

プログラムの特性_アイキャッチコンピュータの仕組み
サバ缶
サバ缶

どうもこんにちは!
サバ缶(@tech_begin)です。

IPAの情報技術者試験の学習をしているとよく見る「プログラムの特性」。

書籍でも頻出問題として重要な問題として扱われることが多いです。

解説文を読んでみてもいまいち分からなかったので、自分なりに深堀りして調べてみました。

この記事でわかること
  • プログラムの特性の種類について
  • プログラムの特性のそれぞれの概要について

『プログラムの特性』とは

コンピュータ上で動作するプログラムは、人間が書いたコードによって成り立っています。自然発生するものではありません。

このプログラムは、コンピュータ内部では複雑な処理が実行されています。

たとえば以下のようなプログラムがあったとしましょう。

public class Main {
    public static void main(String[] args) {
        sum(1, 1);
        sum(5, 10);
    }

    /**
     * 引数を加算した値を標準出力する
     * @param value1 引数1
     * @param value2 引数2
     */
    public static void sum(int value1, int value2) {
        System.out.println(value1 + value2);
    }
}

足し算をした結果を表示する簡単なプログラムです。

このようなプログラムの構造上 生じる性質を分類したのが『プログラムの特性』といいます。

「プログラムの特性」は4つに分類されます。

ここで押さえておきたいのは、プログラム特性はコードを書く人によって、要件や仕様によって異なるということです。

サバ缶
サバ缶

(間違っていたら、こっそり教えてください…🙇)

プログラムが実行される仕組みと流れ

少しおさらいしてみましょう。

あなたが書いたプログラムは、補助記憶装置(HDDやSSD)に保存されます。

コンピュータの電源を切っても保存されたままの状態ですよね。

それは不揮発性メモリという給電が途切れてもデータを維持する性質を持つメモリを使用しているためです。

その補助記憶装置から主記憶装置(メインメモリ)へプログラムを読み込みます。

このメインメモリに読み込まれたプログラムをCPUで演算していく流れです。

プログラムが実行されるまでの流れ

ここから先は、プログラムを実行するまでの流れを理解したことを前提に進めていきます!

リロケータブル(再配置可能) : Relocatable

リロケータブル」という性質を持ったプログラムを『再配置可能プログラム』と呼びます。

メインメモリに読み込まれたプログラムは『機械語』と呼ばれる『0と1の数字の羅列』です。

それらはメモリに格納されていき、それぞれの格納場所には「アドレス」が割り当てられています。

このアドレスを使って『①特定の位置にある値を読み込み』したり『②次の命令の実行位置を変更』したりします。

プログラム特性_リロケータブルなプログラム

リユーザブル(再使用可能) : Reusable

リユーザブル」という性質を持ったプログラムを『再使用可能プログラム』と呼びます。

環境保全における「リユース」という言葉をよく耳にしますね。

意味としてはそのまま「使い回す」という意味で理解して大丈夫です!

メインメモリへ読み込まれるイメージ

リエントラント(再入可能) : Reentrant

リエントラント」という性質を持ったプログラムを『再入可能プログラム』と呼びます。

リエントラントは、プログラム実行中に同じ処理が同時に呼び出されても問題なく完了する性質のことを言います。

プログラム特性_リエントラント_図解

リカーシブ(再帰的) : Recursive

リカーシブ」という性質を持ったプログラムを『再帰的プログラム』と呼びます。

メソッド自身を繰り返し呼び出す性質を再帰的と呼びます。

以下の図のように、処理を深堀していき、折り返し地点まで到達すると戻ってくるといった感じです。

プログラム特性_リカーシブ_再帰的プログラムの図解

最後に

基本情報や応用情報技術者試験は、ITエンジニアにとっての『免許』に近いものと謳う人もいるほど。

基礎的な知識を身に付けるには、うってつけの資格ですが、実践技術もいっしょに学びたいという方にWinスクールがおすすめです。

タイトルとURLをコピーしました