2012/04/17

C言語をかじりはじめる

ローレベルをいじりたい

Javaをはじめてから2年近く経つ。これまで音関係の小さなプログラムをいくつか作ったりしてみたが、ローレベルな操作が可能なC言語にも興味が出始めたので、少しかじってみようかと思う。やることはANSI(米国国家規格協会 American National Standards Institute)の標準規格範囲。つまりコンソールアプリまで。プラットフォーム依存のライブラリを駆使してGUIを使うようなことはしない。バイナリデータをいじくるのが目的なのでCUIで十分。この範囲であれば、プラットフォームが変わっても、その都度、再コンパイルすれば使えるようになる。

マルチプラットフォームなGUIツール

後日知ったのだが、C/C++によるGUIアプリでも、マルチプラットフォーム化する方法があるのね。RAD (Rapid Application Development)と呼ばれる+GTKとかwxWidgetsというGUIツールを使ってプラットフォームごとにコンパイルすることで、Linux,Win,Macで動かすことができるようだ。AudacityではwxWidgetsを使っているので、そのうち使ってみたい。でもC++で書く必要があるので、かなり先になりそうだ。まずはCだけで、そこそこ中身を書けるようにしておきたい。その次にC++をやって、次にGUIという流れかな。道のりは長い。

学習方法

ネット上の情報を頼りにするつもり。今のところ入門書は買うつもりはない。C言語はC++やJavaに比べ言語仕様は小さく、覚える内容そのものは少ないので何とかなるだろう。後から見て思い出せるようにBlogに残しておこうと思う。Blogには、サンプルを実行できる単位で載せておく。またその実行結果もすぐ下にプロンプト風にして載せておく。これがメインのコンテンツになると思う。この手の学習はサンプルとのにらめっこが中心で、それをフォローする程度の説明があれば十分と思う。ダラダラ長い解説よりはサンプルでしょ。また、実用的なサンプルだとソースが長くなりすぎて見るのも嫌になるので、短くポイントだけ分かるようにしておく。そういうサンプル作るのって意外と難しいのだけど、がんばってみる。

C言語について

UNIXのために作られた言語というぐらいしか知らなかったので、Wikiを読んでみた。1972年に作られて、1989年にはANSIで標準規格化されたのね。それはC89と呼ばれている。その後も1999年に拡張されたC99になり、つい最近C11となったようだ。最新のgccではC11を部分的に取り入れているようだ。実際学習はC89を中心に、C99の範囲は、なるべく意識して使うという感じでやっていこうと思う。

まずは開発環境を整える

必要なものは、ソースコードを書いてテキストフォーマットで保存するためのエディタと、そのCのソースコードを実行ファイルにするためのコンパイラーだけ。

エディタはUNIXの世界では標準的な Meadow(Emacs)を使うつもり。

コンパイラーはなるべく癖のなさそうなものということで、GCC(GNU Compiler Collection ANSI C89準拠)を使いたい。 WindowsXPでこれを使うためにはMinGWという環境をインストールする必要がある。

これらをインストールすれば、シンプルで手軽な環境が整う。具体的な環境設定は目次から。

C言語 ANSI C89 Meadow & MinGW GCC 目次はこちら