実践C言語プログラミング 第3版 Steve Oualline著

C言語の仕組み

C言語はプログラマと生のコンピュータの橋渡しとして設計されています。 プログラマが理解しやすい方法でプログラムを編成できるようにすることである。 その後、コンパイラがその言語を機械が使用できるものに翻訳する。

コンピュータ・プログラムは、データと命令の2つの主要部分から構成されている。 コンピュータはこの2つの部分にはほとんど、あるいは全く編成を課さない。 結局のところ、コンピュータはできるだけ一般的であるように設計されているのである。

コンピュータのデータは一連のバイトとして保存されます。 Cはそれらのバイトを有用なデータに組織化する。 データ宣言は、プログラマが作業中の情報を記述するために使用される。 例えば、

int total; /* Total number accounts */

は、コンピュータのメモリの一部を使ってtotalという整数を格納したいことをCに伝えている。 コンパイラにメモリのどのバイトを使うか決定させる。この決定は細かい帳簿上のことであり、気にする必要はないだろう。 それは1つの整数だけを保持し、1つの合計だけを記述することができる。 一連の整数は次のように配列にまとめることができる:

int balance; /* Balance (in cents) for all 100 accounts */

ここでも、コンピュータのメモリにその構成を課す詳細をCが処理する。 最後に、より複雑なデータ型がある。 例えば、矩形は幅、高さ、色、塗りつぶしパターンを持つかもしれない。 6091>

struct rectangle { int width; /* Width of rectangle in pixels */ int height; /* Height of rectangle in pixels */ color_type color; /* Color of the rectangle */ fill_type fill; /* Fill pattern */};

ポイントは、構造体によって、データがどんなに単純でも複雑でも、プログラマが自分のニーズに合わせてデータをアレンジできることだ。 このデータの記述をコンピュータが使用できるものに変換するのは、プログラマではなくコンパイラの仕事です。

しかし、データはプログラムの一部分に過ぎません。 また、命令も必要である。 コンピュータに関する限り、命令のレイアウトについては何も知らない。 現在の命令で何をするのか、次の命令はどこにあるのかを知っているだけで、それ以上のことは知らない。

area = (base * height) / 2.0; /* Compute area of triangle */

コンパイラはこの文を一連の不可解な低レベルマシン命令に変換する。 このような文は代入文と呼ばれる。 算術式の値を計算し、格納するために使用されます。

また、処理の順序を制御するために制御文を使用することができます。 if文やswitch文のような文は、コンピュータが簡単な判断を下すことを可能にします。 whileやforなどのループ文を使って、文を何度も繰り返すことができます。

文のグループをラップして、関数を作ることもできます。 したがって、矩形を描くための汎用関数を一度書くだけで、新しい矩形を描きたいときにはいつでもそれを再利用できる。

C は、検索、ソート、入力、出力などの一般的な機能を実行する標準関数を豊富にプログラムに提供している。

関連する関数のセットは、単一のソースファイルにグループ化することが可能である。

C言語の主要な目標の1つは、命令を再利用可能なコンポーネントに編成することである。 結局のところ、コードの大部分をどこかから「借りる」ことができれば、プログラムをずっと速く書くことができる。 再利用可能な関数のグループは、ライブラリにまとめることができます。 このようにして、たとえばソートルーチンが必要になったとき、ライブラリから標準関数qsortを取り出し、プログラムにリンクすることができます。

データ宣言、構造体、制御文などC言語の要素は、コンピュータのためになるものではありません。 コンピュータは100万個のランダムバイトと本物のプログラムの違いを見分けることはできない。 C言語の要素はすべて、プログラマが自分の考えをコンピュータのためではなく、自分に合わせて明確に表現し、整理できるように設計されています。

整理整頓は良いプログラムを書くための鍵なのです。 例えば、この本では目次が前面に、索引が後面にあることはご存じでしょう。 本がそのように構成されているため、この構造を使用しています。

C言語では、シンプルかつ強力な構文を使ってプログラムを整理することができます。 本書では、C言語の構文にとどまらず、可読性や信頼性の高いプログラムを作るためのスタイルルールを学びます。 強力な構文と優れたプログラミングスタイルを組み合わせることで、複雑で素晴らしい処理を行う強力なプログラムを作成することができ、しかも変更時に理解しやすいように構成されています

Leave a Reply