• ベストアンサー

動的 静的って?

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

  • nom
  • お礼率18% (10/53)

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

  • ベストアンサー
  • bob
  • ベストアンサー率50% (52/103)
回答No.4

一般的には必要になってから準備するのが動的で、あらかじめ準備しておくのが静的としている例が多いようです。 プログラミングに限定すると、プログラムの起動と同時に生成されるオブジェクト(変数、定数、関数など)が静的(なオブジェクト)、プログラムの実行が始まってから(必要に応じて)生成されるのが動的(なオブジェクト)です。 さらに、起動時にいくつか準備しておいて、実行時に条件によって選択する準静的(なオブジェクト)というのもあります。 Kanataさんの例はおそらく変数のストレージ(変数のメモリ空間上の位置)について挙げようとしたのだと思われますが、この書き方だとどちらかというと定数&変数の区別の例になってしまいますね。

その他の回答 (7)

  • bob
  • ベストアンサー率50% (52/103)
回答No.8

> toysmith さん > あの例ではstaticをつけないと「厳密な」静的初期化にはなりません。 これも全くその通りで私もあの回答を書いている時点で十分意識していましたが、toysmithさんの静的の定義(ストレージの話に限定しなければ一つの解釈として正しいといえます)に従えば私の例でも変数 j を静的に初期化していることになります。それも含めて混乱しやすいというのが私の#5の指摘です。 質問者は静的、動的という言葉を特にC言語のストレージについて限定していません。静的、動的という言葉はいろんな場面で出てくる言葉です。ライブラリにも動的と静的があります。また、実際basilさんはWebコンテンツの形態についてと解釈していますね。 というわけで静的動的の一般的な定義を考えようとしたのですが、対象によって微妙に意味合いが異なってきれいにまとまりそうにないので、#4の冒頭のような少々あいまいな定義を書きました。プログラミングに限定した場合は#4中盤の定義で概ね一般化できていると思います。

  • basil
  • ベストアンサー率35% (148/420)
回答No.7

技術的な話題が取り上げられていますが、私が思うに「動的/静的」とはコンテンツの内容だと思います。 サーバ側ではなにも処理をしないようなHTML書類でも、JavaScriptなどで“動的”なページは作れますし、CGI,ASP,PHPなどプログラムを使って生成する“静的”なページもあります。 例えば、JavaScriptでゲームを作り、ブラウザ上で計算した内容によって表示内容を変え、ユーザの利用に合わせて見せるコンテンツを選んでゆく様にした場合などは“動的”といえるでしょうし(現実にはこういうのは少ないかな?)逆にCGI, ASP, PHPなどサーバサイドで実行されるプログラムでHTMLなどをリクエストごとの生成するものでも、静的なファイルをただ右から左に渡すだけの“静的”コンテンツも作れます。 つまり、何度みても誰が見ても同じものが表示されるようなコンテンツを“静的”といい、リクエストした時の状況によって内容が変わるものを“動的”というんだと思います。

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.6

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

  • bob
  • ベストアンサー率50% (52/103)
回答No.5

茶々を入れるようで心苦しいのですが、 toymithさんの回答は間違ってはいないのですが static int i ; int j =1; i = j ; でも j は静的に1に初期化されて i には動的に1が代入されるので、例としては混乱を招きやすいと思います。 C言語などにおける変数へのstatic宣言はあくまでストレージに対する宣言です。 つまりstaticをつけるとその変数に対するメモリはプログラムの実行時に確保され、その寿命はプログラム終了時までです。 一方でauto変数(=関数中のstaticでない変数)はその関数の実行時にスタック領域にメモリが確保され、寿命はその関数が終了するまでです。 (これらは原則であって、言語やコンパイラの最適化機構によって厳密には正しくないこともあり得ます。)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.3

通常、コンパイル時に決定するものを静的といい、実行時に決定するものを動的といいます。 static int i = 1 ; int j ; j = i ; この場合,iは静的に1に初期化されますがjは動的に1が代入されます。

  • basil
  • ベストアンサー率35% (148/420)
回答No.2

ユーザからの投稿やDBなどから情報を引きだし、リクエストごとに内容を生成するサイトを“動的”といいます。 純粋なHTMLなど、何度見ても同じものが出てくるようなサイトを“静的”と言います。

noname#9414
noname#9414
回答No.1

静的:ソース上でのみ値が変更できるもの 動的:実行時に値が変化するもの ではでは☆

関連するQ&A

  • 仮想パスの意味

    おはようございます。 最近、Webプログラミングを始めました。 そこで教えて頂きたいのですが、”仮想パス”の意味や用途を教えて頂けないでしょうか。 よろしくお願いします。

  • ラップ関数とはどんなものですか?

    プログラミングの際に最近「ラップ関数」というのを良く耳にします。実際の所、あまり良く意味が分かっていません。 ラップ関数とは、分かりやすく言うとどんなものなのでしょうか。 あまりプログラミングの経験が無いので、専門的な言葉はあまり使わずに簡単に説明してもらえると有難いです。よろしくお願いします。

  • エラーメッセージ

    こんにちは。質問させていただきます。 僕は最近、プログラミングについての勉強を始めたばかりの初心者なのですが、 次のエラーメッセージについての意味を教えていただけないでしょうか。 このようなエラーメッセージなのですが、 undefine:n です。よろしくお願いします

  • 小学生にプログラミングを教える方法

    「小学生にプログラミング(Scratch)を教える方法」についての質問です。 A.ブロックの意味を完全に理解させてからプログラミングしてもらう。 B.ブロックの意味はある程度の理解で、たくさんプログラミングすることによって、ブロックの意味をしっかり理解してもらう。 AとBではどちらが効果的でしょうか? 詳しい方、よろしくお願い致します

  • 応用プログラミングとシステムプログラミングの違い

    応用プログラミングとシステムプログラミングの相違点ってなんですか? 一つ一つの意味は分かっても、相違点っていわれると難しくて; システムプログラミングは「OSの機能を直接使ったプログラム作成」だと思うんですけど、 応用プログラミングはこれと何が違うのでしょうか? よろしくお願いします

  • プログラミングについて

    2度目の質問です^^ BASICなども 調べてみたのですが 意味がわかりません^^; 手始めに ・プログラミング言語 とはなんでしょうか? ・プログラミングとはどんなことをするのでしょうか ・また プログラミングでは なにをすることが 多い/できますか? 回答おまちしております! ちなみに見ての通り なにもまだ学んでいない初心者です。 よろしくおねがいします^^

  • プログラミング言語について

    コンピューター関連に詳しい人にお聞きします。 最近プログラミングに興味がわいてきました。 調べてみるといろいろな言語があるということが分かり、うぃきなどで調べてみたのですが意味が分かりませんでした。 javaやc、c++,phpなど実生活ではどのような場で使われているのでしょうか? それと俗にプログラマーと呼ばれる方々は、それらの言語すべてに対して知識があるのでしょうか? またプログラミング言語同士には、なにか繋がりがあるのでしょうか?例えばc++はcの派生といったようなもの。 回答よろしくお願いします。

  • ダブルクオーテーション、シングルクオーテーション

    プログラミング 「"」  と 「'」 の違いについて プログラミングにおいてダブルクオーテーションとシングルクオーテーションは双方、「コンピュータに文字列と認識させる」記号だと思うのですが、プログラミング言語問わず " と ' に文字列を表す以外の特別な意味を持つケースは何かありますか? (文字列を表す以外の意味はありますか?)

    • ベストアンサー
    • Java
  • 拡張子 .cbx について

    最近ここの掲示板でアドバイス下さった方々のおかげで、C++でプログラミングができるようになり、感謝しています。ありがとうございました。 それで、質問なんですが。 拡張子の「.cbx」って何でしょうか? ネットで検索かけても、出てこないんですよー。 キーワードが悪いのかわかりませんが。 この拡張子の意味は何ですか? 宜しくお願いします。

  • アマグラマーについて

    質問です。 世の中には、業務でプログラミングをしている人たちと 趣味でプログラミングをしている人たちがいるとおもいます。 ここでいう趣味とは、業務では一切、プログラミングに関わらない人たちが趣味で プログラミングを行うという意味でとらえてください。 この場合、プロとアマに明確なスキルの壁ってあるのでしょうか? プログラミングなんで、勉強するかしないかできまるとは思うのですが、 やはり、業務で日々プログラミングに浸かってる人との、差があるのでしょうか? 多様な意見を御聞かせください。 よろしく御願いします。

専門家に質問してみよう