応用情報22年秋 午前 問8

【中分類】
アルゴリズムとプログラミング−4. プログラム言語
    −(2)プログラム言語の制御構造 と
    −(3)プログラム言語の記憶域  かなあ?

【問題を解く前に】

 再入可能、再使用可能、再配置可能は、よく出ます。

[0163] 再帰的,再入可能,再使用可能,再配置可能
http://mt-net.vis.ne.jp/ADFE_mail/0163.htm

に、きれいにまとまっているので、用語自体は、そこでみてください。

 ただ、実際には、実務上の具体的なイメージが必要です。

●再入可能については、「リエントラント」ってことばを、Wikipediaで引いてもらうと判るんだけど、static(静的なデータ)を持たないんだね。つまり、ローカル変数だけで処理する。

 たとえば、+ − X ÷ なんかの演算がそう。

 何回やっても、ほかにどんな処理が走っていようと、1+1は2です。
 じゃないとこまります。はい。

 つまり、再入可能なプログラムのイメージとしては、足し算、引き算

●再使用可能は、常駐プログラム・・・って行って判るかな?っていうか、そーいう言い方、古いか・・メモリに常駐しているプログラムは、これになるよね。
 UnixLinuxのデーモン(相撲のお話している、派手な化粧してる人じゃないよ、そういサービスがある)とかWindowsのサービスがそうかな・・・

 つまり、再使用可能なプログラムのイメージとしては、デーモン
 httpd(Webサーバー)とかがデーモンになる

●ここの問題の、逐次再使用可能(シリアルユーザブル)というのは、
 再使用可能ななかで、かつ、一時に1つのプログラムでしか使えない、
 つまり、synchronizedが付いてるデーモン?

●再配置可能は、相対アドレスでプログラムが出来ているって感じなんだけど・・
 ま、これに関しては、今回、問題になってないからいいか・・・
 

【解き方】

●(ア)について

 足し算は、httpdでは、使えない。
 なわきゃーないでしょ。足し算使えなかったら、ほとんどのプログラム作れないよ(−_−)(足し算は、ループにも使います)

つまり、間違い

●(イ)について

 これは、リエントラントプログラムがどのようにメモリがとられるかを説明したものです。局所変数=ローカル変数

つまり、正解

●(ウ)について

 いや、待ってもいいんです。まあ、最近のプログラムは、マルチタスク&タイムシェアリングだから、時間がたって終わんないと、待って他の仕事をするわけだが、その「待ち状態」も含まれるのかなあ?

 ま、これは、Wikipediaにも、「処理を一時中断できる」と書いてあるとおり、

つまり、間違い

●(エ)について

 問題文、逐次再使用可能って書いてありますよね。
 今、上に書いたように、これって、一時に1本しか動かない

   =何本も同時に動かれると困るプログラム

         は、

 リエントラント
   =何本も同時に動いてよい

プログラムかあ?変でしょ。はじめ、困るって行っておきながら、あとで、OKっていっている・・・


つまり、間違い

【答え】

(イ)

【解き終わって】

 リエントラントのような、抽象的な用語は、具体的なイメージを持ったほうがわかりやすいと思います。

 忘れないという点で。

 このとき、試験に受かればいいわけですので、

 実務で使うものなら、もちろんそれをイメージしたほうがいいし、

そうでないなら、試験に受かればいいだけなので、

 まったく関係ない語呂合わせだろうが、なんだろうがOK

ただし、実務に関係するものなら、復習(というか想起)する機会も多いので、できれば、そっちのほうがいいです。このとき、理論的に厳密に同じものでなくてもいいです。ただ、イメージにひきづられると、間違えることもあるので、

まず、イメージを想起
それができたら、イメージに結び付けて、定義を覚える

という感じがいいと思います

      • -

あと、実務的にワンポイント

再使用可能にしておくと、メモリ確保が必要ないので、
メモリと(メモリ確保)時間が省けます。


デザインパターンでは、Flyweight パターンなんかがイメージ的には、
それにあたり、(厳密にいうと、違うかも?)
そのような動きをするものに(リソースをプールしておく感じ)
FastCGIがあります。


究極には、データ用メモリもプロセスも、すべて1個だけ作って共有
すればよいということになりますが、

これが、デザインパターン的には、Singletonパターンのイメージです
staticを使って、行います。
Singleton パターンを利用して、IDを振るとかしたいとき、
排他制御して、逐次再入力可能っぽくなります。


大体のイメージ。厳密に定義を照らし合わせると、違うかもしれない。


【受験テクニック】

抽象的な用語は、具体的なイメージを持つ
→厳密に一致しなくてもいいというか、極論、語呂合わせでもいい。

ただし、イメージに引きずられない
→イメージに関連させて、定義も覚える。