プログラミング環境
OS(基本ソフト)の話。C言語自体はOSとは関係ない。WindowsでプログラミングしようがMacでしようが関係ない。ただ、そもそもプログラミングとはパソコン上で何かソフトを開発したいからするわけだ。そして最終的にはOS(とシステム)が理解できる形にしないといけない。これをコンパイルという。そしてそういうことをするソフトをコンパイラという。
つまりC言語で記述する内容は同じでも対応した環境やOSで動作するソフトを作るためにコンパイルする環境が必要になるのだ。
「え、この文章を読むのにそんなのがいるの?」と思うかもしれない。読むだけならブラウザとインターネット接続環境があれば十分だ。
しかプログラミングは実際に自分で書いて、コンパイルして、という作業をしなきゃ、絶対に身につかない。これだけは似非プログラマーでも断言できる。なのでコンパイルできる環境は必須だ。
というわけでOSとコンパイルの環境に関して述べておこう。その前にWindowsについて一言だけ。
ここのアクセスログを見る限り、大多数の人間はWindows系のOSを使っている。しかしここであえて述べておく。
- Windowsはプログラミングの勉強にはまったく向かない。
- Windowsは開発にはまったく向かない。
- Windowsは余計なところで嵌る率が上がる。
というわけで、Windowsはプログラミング自体、向いていないOSである。
ここではとりあえず、まずUnix系OSを薦めておく。どうしても、というのではWindowsを使いなされ。でもUnixの項と比較してみるとどうしてWindowsを薦めないか一発でわかると思う。
OS別
Unix系OS
「Unix」、なんて名前のOSはない、とかっていうマニアックな話はおいておこう。ここでは広い意味でのUnix系OSのことだ。
具体的に書くとUnix系OSの有名なところではFreeBSD, Linuxがある。Linuxは色々なディストリビューション、つまり種類があり、たとえばRedhat LinuxとかTurbo Linuxとかだ。まあ、人にもいろんな人種がいるって感じだな。
あと、MacもOSXからはUnix系のOSだ。正確にはFreeBSDの亜種だ。
他には巷では有名じゃないけどでも、世の中ではよく使われていて有名(?)なのがSolaris, NetBSD, Unicos, NeXT, もう上げ切れん。
しかしこれらはどれも似たりよたりの操作性がある。細かいOSの設定は様々だけどユーザーレベルではどれも大して変わらない。
そしてCプログラミングの環境として僕が強くお勧めするのもこれら、Unix系のOSである。大きな理由をリストアップしておく。
- OSをインストールした段階で大抵の場合、Cのコンパイラも一緒に入っている。
- 自分の作成したプログラムがへっぽこでエラーを起こしたとしてもその巻き添えを食らってOSまで不調になることがまず、ない。
1番目はUnix系OS自体がCで書かれているからだ。ためしにコマンドプロンプトで
% gccと打ってごらん。
gcc: No input files specifiedとか表示されれば成功。もし
gcc: Command not found.とか
gcc: コマンドが見つかりません.になったら
% ccと打ってごらん。
もしそれでも
cc: Command not find.などとなったら、別途インストールが必要なのかもしれない。現に一部のOS(Solarisとか?)はデフォルトではCコンパイラはインストールされないらしいから。そういう場合は管理者に問い合わせるか、もし自分個人のパソコンなら自分でなんとかするとか。大抵の場合はOSのインストールキットみたいのに同封されているはずだからマニュアルでも読んでみてくれ。「ない」なんてことはないと思う。←自身なし
また2番目は特に重要だ。特に、C言語は速度がなるべくでるように規格されているかわりに安全性なんて全く無視の状態だ。ちょっとしたことでプログラムがコアをゲロする、つまり"core dump"するわけだ。とどのつまり、プログラムが強制終了するわけだ。その度にOSが巻き添え食らって落ちていたらたまらんだろう。
というわけで手元にUnix系OSがインストールされているパソコンがあれば万事解決だ。あとは好みのテキストエディターでも入れてくれ。Unix系OSでデフォルトで入っているviは渋くてかっこよく、これでもなんら問題はないが日本語が書けないので要注意。てっちゃんのお勧めはviを高機能化したvim、あとありきたりだけどxemacsだ。さすがにこいつらのインストール方法や使い方の説明は勘弁してくれ。ただ、xemacsは使い方なんかは直感的にわかるどな。viに慣れていればvimも問題なしだ。
もちろん、最低限のコマンドの知識もあるよな。なければ書店へゴー。manで調べる手もあり。
Windows系OS
くどく前述したがもう一度、
Windowsはプログラミング自体、向いていないOSである。
はっきりいうがUnix系OSをインストールできるのであればそっちがはるかにお勧めだ。Unix系OSであるFreeBSDやLinuxはその手の雑誌の付録(CD)にもついてきたりするのでそれを使えばインストールできる。WindowsとUnix系OS両方をインストールしておいて起動時にどちらのOSを起動するか選択する「デュアルブート」なんてこともできるからプログラミングはUnix系OSで、その他はWindows系で、といった使い方もできる。
さすがにUnix系OSの使い方をここで追うことはここではしない。本屋にたくさんあるのでそれを呼んでくれ。たしかにUnix系OSは文字ベースのOSなのでとっつきは悪いかもしれないが長い目で見ると幸せになれる。
もう一度、
Windowsはプログラミング自体、向いていないOSである。
これだけUnix系OSを推奨してもWindowsを使うのか。では、デメリットをあげておこう。
- Cコンパイラはデフォルトでは入っていない。自分でインストールする必要がある。
- 自分の作成したプログラムがへっぽこでエラーを起こすとOSまで落ちることがある。挙動不審になることはざら。
逆に唯一のメリットは今、使っているなら使い慣れているOSが使い続けられること。だけどなあ、面倒が多いと感じると思うぞ、プログラミングを始めると。いや、始める前から。
これを最後にしよう。
Windowsはプログラミング自体、向いていないOSである。
どうしてもWindowsを使うというのであればWindowsNT, 2000, XP(Pro, Homeどちらでも)を使ってくれ。間違ってもWindows95, 98, 98SE, MEは使ってはならない。プログラムミスがあると速攻で落ちるからだ。敢えてこの中でお勧めをあげるとしたらWindows2000だがやっぱりFreeBSDがよい。←くどい
これで一応、2番目はクリアーしたことにする。いや、本音は全然、クリアーしていないんだけどな。
しかし1番目も結構ネックなのよ。デフォルトでCのコンパイラは付属していないのよ。どうする?
ここで二つの選択肢がある。
フリーのやつを使うか、商用のやつを使うか、である。
フリーのやつの代表格はMinGWだと思う。前述したUnix系OSのコンパイル環境をWindowsに移植して、さらにWindowsのアプリが作れるように拡張したやつである。なんと、ただ、である。http://www.mingw.org/だ。MinGW-x.x.x.exeとMSYS-x.x.x.exeをダウンロード、実行してインストールでOK。これで万事解決だ、とはいかないだろう、恐らく。
何が問題なのかというとこれ、めちゃくちゃUnixライクなのである。ここまでUnix系OSをこれだけ薦めたにもかかわらず、嫌った人がUnixのコマンドを使えるとは到底、思えない。Windowsにあるコマンドプロンプトを使ってもいいのだが今どき、C言語を勉強しようとしている人がコマンドプロンプトを使えるのだろうか。知っていれば大したことではないのが、知らないというのであればこんなので勉強するよりかはまず、真にUnix系OSに触れるべきだ。
MinGW自体はすばらしいものだし、ただでWindowsのソフトが作れるしね。とりあえず、C言語がわかってから使うことをお勧めする。
似たようなコンセプトの元、開発されたCygwinもあるがこちらはますますお勧めできない。これはUnix系OSのソフトをそのままWindowsに移植するための環境なのだが用途が違いすぎる。というわけでパス。
ちなみにMinGW、Cygwinともにテキストエディターが必要。まあ、Unix系OSの場合と同様だな。面倒ならメモ帳。有名なことろでは秀丸。
じゃあ、商用、となる。てっちゃん自身はどこの企業の回し者でもないが定番を述べておくとMicrosoftのVisual Studio .NETや.NET2003とかVisual C++とかだ。ここに付属しているコンパイラはC++言語用だがC++言語はC言語の上位版(かな〜)なので問題ない。真の問題はそんなことではない。
まず価格。最適化が弱いといわれているVisual C++でも1万円する。Visual Studio .NETは色々なコンパイラが入っていて多機能ではあるが値段はびっくりするほど高く、10万円くらいする。しかも初心者はとてもその機能を使いこなすことはできないんだよ。それでも買う?
使いこなすことができないだけじゃなく、肝心なことがどうやっていいかわからないと思うよ。極端なこと、コンパイルってどうやってやるの?とかプロジェクトって何?とかっていう部分から勉強しなきゃいかん。完全な初心者の場合、定番の"Hello, World."を表示されるだけでも大変だと思う。そしてやっとC言語を始めようと思ったときにはへとへと。これじゃ意味がない。恐らく、馬子にも衣装、じゃなくて鎧だと思う。余計、身動きがとれなくて何もできないだけ。
結局、まとめると
Windowsはプログラミング自体、向いていないOSである。
なんだよなあ。別にMicrosoftに恨みがあるわけじゃないんだけど。
ちなみにVisual Studioの場合、基本的にはプロジェクトの作成で空の「コンソールアップリケーション」を作成する。そしてプロジェクトにC++のファイルを追加しながら書いていく感じ。コンパイルは「ビルド」、もしくは「リビルド」(すべて作り直し)を選び、実行する。デバッグとかもある。さらに上級者になればアプリケーションの雛形が入っているので楽、なはず、だが・・・。
Macの場合
x86ユーザーのてっちゃんはマックのことは知らん。・・・じゃあ、ひどすぎるのでいくつか。
まず、OSXを使うこと。前述したとおりだがOSXはUnix系OSだ。ただ、コマンドを直接、扱う必要があるのでターミナルの開き方も抑えておくべし。コマンドの使い方はやはり、書店へゴー。
ちなみにOSXよりも前のOSは駄目。理由はWindowsでたらたらと書いたのと同じでデフォルトでコンパイラがないのと安定性がないこと。
残念ながらてっちゃんはMacを最後に触ったのが10年以上も前なのでこれ以上、コメントできん。すまん。OSXを使うべし。