動的 静的って?(1/2)

解決済みの質問

動的 静的って?

最近プログラミングを始めたんですが、「動的」「静的」の意味が何となくでしか分かりません。
どなたか教えてください。

投稿日時 - 2000-09-30 00:47:48

QNo.9701

nom

暇なときに回答ください

質問者が選んだベストアンサー

一般的には必要になってから準備するのが動的で、あらかじめ準備しておくのが静的としている例が多いようです。

プログラミングに限定すると、プログラムの起動と同時に生成されるオブジェクト(変数、定数、関数など)が静的(なオブジェクト)、プログラムの実行が始まってから(必要に応じて)生成されるのが動的(なオブジェクト)です。
さらに、起動時にいくつか準備しておいて、実行時に条件によって選択する準静的(なオブジェクト)というのもあります。

Kanataさんの例はおそらく変数のストレージ(変数のメモリ空間上の位置)について挙げようとしたのだと思われますが、この書き方だとどちらかというと定数&変数の区別の例になってしまいますね。

投稿日時 - 2000-09-30 07:42:26

ANo.4

bob

7人が「このQ&Aが役に立った」と投票しています

[  前へ  |  ]

ベストアンサー以外の回答(7件中 1~5件目)

ANo.8

bob

> toysmith さん

> あの例ではstaticをつけないと「厳密な」静的初期化にはなりません。

これも全くその通りで私もあの回答を書いている時点で十分意識していましたが、toysmithさんの静的の定義(ストレージの話に限定しなければ一つの解釈として正しいといえます)に従えば私の例でも変数 j を静的に初期化していることになります。それも含めて混乱しやすいというのが私の#5の指摘です。

質問者は静的、動的という言葉を特にC言語のストレージについて限定していません。静的、動的という言葉はいろんな場面で出てくる言葉です。ライブラリにも動的と静的があります。また、実際basilさんはWebコンテンツの形態についてと解釈していますね。

というわけで静的動的の一般的な定義を考えようとしたのですが、対象によって微妙に意味合いが異なってきれいにまとまりそうにないので、#4の冒頭のような少々あいまいな定義を書きました。プログラミングに限定した場合は#4中盤の定義で概ね一般化できていると思います。

投稿日時 - 2000-09-30 17:13:25

ANo.7

技術的な話題が取り上げられていますが、私が思うに「動的/静的」とはコンテンツの内容だと思います。

サーバ側ではなにも処理をしないようなHTML書類でも、JavaScriptなどで“動的”なページは作れますし、CGI,ASP,PHPなどプログラムを使って生成する“静的”なページもあります。

例えば、JavaScriptでゲームを作り、ブラウザ上で計算した内容によって表示内容を変え、ユーザの利用に合わせて見せるコンテンツを選んでゆく様にした場合などは“動的”といえるでしょうし(現実にはこういうのは少ないかな?)逆にCGI, ASP, PHPなどサーバサイドで実行されるプログラムでHTMLなどをリクエストごとの生成するものでも、静的なファイルをただ右から左に渡すだけの“静的”コンテンツも作れます。

つまり、何度みても誰が見ても同じものが表示されるようなコンテンツを“静的”といい、リクエストした時の状況によって内容が変わるものを“動的”というんだと思います。

投稿日時 - 2000-09-30 11:33:57

ANo.6

#3の回答は混乱/誤解を招く表現であった事をお詫びします。


bobさんへ
ご指摘はありがたいのですが、あの例ではstaticをつけないと「厳密な」静的初期化にはなりません。
auto変数はオブジェクト自体が動的ストーレジ属性を持つ可能性があり、厳密な静的初期化はできません。
ここでいう「厳密な静的初期化」とはローディング時に行われる初期化であり、auto変数のように実装依存で初期化方式が変わるものの初期化を含めません。

投稿日時 - 2000-09-30 10:47:15

ANo.5

bob

茶々を入れるようで心苦しいのですが、

toymithさんの回答は間違ってはいないのですが

static int i ;
int j =1;
i = j ;

でも j は静的に1に初期化されて i には動的に1が代入されるので、例としては混乱を招きやすいと思います。

C言語などにおける変数へのstatic宣言はあくまでストレージに対する宣言です。
つまりstaticをつけるとその変数に対するメモリはプログラムの実行時に確保され、その寿命はプログラム終了時までです。
一方でauto変数(=関数中のstaticでない変数)はその関数の実行時にスタック領域にメモリが確保され、寿命はその関数が終了するまでです。
(これらは原則であって、言語やコンパイラの最適化機構によって厳密には正しくないこともあり得ます。)

投稿日時 - 2000-09-30 08:10:42

ANo.3

通常、コンパイル時に決定するものを静的といい、実行時に決定するものを動的といいます。

static int i = 1 ;
int j ;
j = i ;

この場合,iは静的に1に初期化されますがjは動的に1が代入されます。

投稿日時 - 2000-09-30 07:30:05

あわせてチェックしたい
  • 静的と動的 ...
  • URLの動的、静的の違いについて。 ...
  • 静的・動的の意味 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら