トップページ

本棚


両手で1000まで数えられますか?:2進法の話
数値 - 危険物取り扱い注意
100 × 200 =32?:変数のオーバーフローの話
パリティビット
小数の扱いについて
ぽいんた
ぽいんた2
ぽいんた3
ジ・オリジン
ジ・オリジン:補足
かっこつける話
かっこつける話2
文字列のこと
タイミングの話
拡張性の話
取り込む話
staticな話

コンパイルの話1
コンパイルの話2:止まらぬビルド
コンパイルの話3:マシン語に落ちるということ1:メモリの話
コンパイルの話4:マシン語に落ちるということ2:最適化
コンパイルの話5:マシン語に落ちるということ3:変数とスタック
コンパイルの話6:コンパイラはそもそも何をやってくれるのか??
リンクの話
プリプロセッサの話

OS、というもの

オブジェクト指向1
オブジェクト指向:2
オブジェクト指向:3

オブジェクト指向:番外 C言語のソースファイルの話
オブジェクト指向:番外 C言語での「再利用性」と「カプセル化」データ構造とアルゴリズム


抽象的な話

寝込んで布団の中で考えたこと
こんなの、常識??
お仕事プログラミング
ソフトでハードなプログラム
プログラムするということ
お勉強
プログラムを学ぶということの補足
C言語:「学問」と「実務」
統合開発環境
C言語ってポータブルですか?
C言語ってポータブルですか?:2
あなたは、どう読みますか?
ああ勘違い
試してガッテン
低級品
質問をするということ
ポカ
「何もしない」 != 「無駄」
エディタの話
もっと手を抜こう

いまどきの、アセンブラ

VisualStudio2005
VisualStudio2005:2

戦争の防ぎ方、に対する私の考え
身近な差別
改革
地球に優しいなんて大嘘
統計で嘘をつく方法

言葉について
言葉について:2

神が死んだということ
善悪の彼岸から、力への意思を目覚めさせるということ

本を読むということ
本を読むということ:2

絵を描く話
地図
地球儀

オカルトのお話
がんだむさん
RPGソフトウェア
記紀神話の不思議



メニュー

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

プログラムとは、「データ構造+アルゴリズム」だという言葉があります。

アルゴリズム(ロジック)だけではなく、目的の機能に最適なデータ構造を選択することも重要です。

がんばってがんばって、ロジックをこねくり回して目的の機能を得たとしても、それは処理時間あるいは処理に要するメモリなどのリソースの面でかならずしも最適な処理とはなっていないでしょう。また、後から保守なり拡張なりで手を入れる際にあまりにロジックがひねくれていると修正しにくいものです。

そこで、「データの持ち方」というのが重要になるわけです。


例えばある要素の集合を「データ」として持ちたいとします。
この「データの集まり」をどう扱うかによって、最適な「データの持ち方」を選択するということです。

要素に並び順があり、かつ要素と要素の間に新たな要素を加えたりする場合には、連結リスト構造がいいでしょう。
計算機などを作る場合にはスタック構造がいいでしょう。
C言語で文字列を扱うときの、「charの配列」も、もちろん一種のデータ構造です。

このような、プリミティブな個々のデータを扱う為の飾り付けをデータ構造といいます。

そして、そのような構造に対しての最適なロジックがアルゴリズムです。

相互は密接に連携しあって、目的とする機能に対して最適な処理を行うことが出来るようになります。


「オブジェクト指向」における「クラス」の概念は、この考え方をとことん突き詰めたものだと考えてもいいでしょう。
クラスとはデータ構造とアルゴリズムを一まとめにした塊であり、かつさらに別のクラスのデータとなりうるもの、ということです。


さて、すでに書いたとおり、C言語ではソースファイル単位でデータと関数を塊として扱うことが出来ます。

オブジェクト指向における「クラスの親密さ」の問題と同様、C言語の「構造化」もまた再利用性が高いものが良いとされています。
再利用性が高いとは、ある構造が他の構造から独立しているということです。

その為には必要最低限の関数のみを他のソースファイルに公開して、出来るだけ「隠蔽する」ということが重要になります。
また、出来るだけ環境や処理系に依存するコードやデータは、さらに別のソースファイルから呼び出すようにします。
ひとつのソースファイルには出来るだけひとつのアルゴリズムとデータ構造で完結させるようにします。

といったコーディングを心がけると、より保守性の高いプログラムが書けるだろうと思います。

デバッグするにせよ、改造するにせよ、プログラムの「構造」がきちんと独立していれば、対象の部分を特定して修正するだけですみます。修正後のテストにしても、他の部分に影響が無いのがわかっているのですから、非常にやりやすいです。


プログラムは新規に作るよりも、それをデバッグしたり改造したりする時間の方がはるかに長いものですから。。。




| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー