プログラムとデータ

投稿者名: 
Aqualight
ホストOS: 
N/A
ゲストOS: 
N/A
本文: 

 読者の皆様、こんにちは、こんばんは。 Aqualight です。
予告の「プログラム構造」は置いといて… ← ちょっと無責任? (笑)
今回の投稿はプログラムとデータに関する話です。

 まず「定義」の話からです。
とりあえず Wikipedia を開いてみましょう。

 どんな印象を受けましたでしょうか?
一応正確に記述しているとは思いますが、何かピンときません。
で、改めて私の定義を書いてみます。

プログラムとは
運用中は固有データを含んだデータ加工アルゴリズムである。
それはCPU依存コードで表現された実行可能ソフトウェアである。
非運用中は記憶媒体に記録された単なるデータである。
うんと簡単に言えば動作アルゴリズムと必須データを内包したソフトウェアである。
データとは
狭義にはプログラムによって加工される前後の情報である。
広義には、そのデータがプログラムとして運用可能な場合をプログラム・データと呼び、
被加工可能情報である場合には単なる情報としてデータと呼ぶ。

 こんなところですが、どうでしょう?
開発現場サイドからの視点ではありますが、これなら理解が早… とも言えないですね。 (苦笑)

 という事で、もう少し噛み砕いて書いてみます。
まず大前提ですが…

  • プログラムはデータに属する
  • データは価値を持つ有意情報

こういう事です。

 CPU に実行させる方法/手順をCPUが理解可能なコード(マシン語)で作られたデータを「プログラム」と
呼んでいる訳で、このプログラムは異なるCPUに与えても実行不能で単なるデータに過ぎません。
だからこれを正確に「プログラム・データ」と呼ぶ人も居ます。

 データは、要するにプログラムを含む 絵や音、文字などの「情報」ですね。 当然 価値があります。
例え「ノイズ」のように一見無価値であっても音声や画像の加工に利用すれば「エフェクト」として
価値を持ちます。
価値論については詳解しませんが、それを利用する者にとって価値がある訳です。
その価値を見出だせない者には無価値であり単なるノイズと同じです。

 「ゲームなんて無駄だ! 非生産的で私は価値を認めない!」なんて言う人もいます。
ですがゲームのプログラムは「楽しむ」という結果を得るために作られています。
その目的が達成される事に注目すれば価値がある訳で、まさにユーザー次第です。

 一般的にプログラムは入力したデータを加工し出力します。
その工程の自動化や得られた結果に価値があり、「価値を生み出す」という視点で
プログラムにも価値があると理解可能です。

 

 くどくどと常識とも思える話を済みません。
ですが世の中には、こういう事が分かっていないと理解出来ない事もあるんです。

 例えば「アイコン」です。
現代ではアイコンはプログラムに内蔵されますが、ファイルとして独立可能です。
これは「プログラム内部にも単なるデータが存在する」という事で、
視点を変えればプログラムは単なるデータであったという証拠でもあるからです。
画像とアルゴリズムではカテゴリが異なるように見えても、データだからこそ内包可能だった…という例です。

 CPU はメモリーに書かれたプログラムの低位番地から高位番地へ実行するよう作られています。
だから画像であってもプログラムとして実行可能なのです。 もっとも大抵はエラーとして処理されますが。
これは逆に言えばプログラムを画像データとしてファイル化可能だという事もご納得頂けると思います。
通常は そういう事をしませんが、これがファイル偽装の原点です。 現在はもっと巧妙ですが。
まさに集合論で言う「プログラムはデータに含まれる」という話でした。

 

 今回の脱線はプログラムとデータに関する話でしたが、次回投稿は… どうしましょう? (笑)
スーパーバイザーやハイパーバイザーを理解するために、OSの話でも書いてみましょうか?
それだと CPU の話も絡んできますね。
次回投稿はどんな話題になるのでしょうか?
期待しないでお待ち下さい。 (笑)

 

コメントを追加

Filtered HTML

  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br />
  • 行と段落は自動的に折り返されます。

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
スパム投稿防止の為以下のテキストを入力してください
Image CAPTCHA
Enter the characters shown in the image.