第241回 初めてのプログラミング


 これをお読みのかたのほとんどはパーソナル・コンピュータ上でご覧になっていることと思う。もちろんウェブの閲覧はコンピュータの仕事と限ったものではなく、最近ではたとえばゲーム専用機にもその機能が付いている場合もある。あるいは、家庭用テレビでウェブ閲覧機能がある製品もあるし、携帯端末、携帯電話、携帯便所などでもウェブの閲覧は可能ではあるが、やはりほとんどの方はコンピュータをお使いのことだろう。
 今やコンピュータ上では一般のユーザーがその内部の動作の仕組みを知らなくとも手軽にさまざまな処理をおこなうことが可能となっている。コンピュータについて深い理解がなくともたとえばえっちなサイトを閲覧することも可能であるし、他にもえっちな写真を見たりえっちなゲームをしたりえっちなメールを送ったりと、コンピュータでできる仕事というのは非常に多岐にわたる。
 だが、私が思うに、折角コンピュータを使っているならプログラミングを習得すべきではないのだろうか。かつては「コンピュータを利用する」ことは「プログラミングする」こととほぼ同値であった。むろんプログラミングの習得は容易なことではないが、それゆえ利用者はコンピュータの深部にまで関ることができた。もちろん、近年のコンピュータの目覚ましい勢いでの普及はそういった深い知識がなくても済むようになったことが原因であり、コンピュータを利用する人はすべからくプログラミングできるべし、というのが時代遅れの意見であるだろうことも私には判っているのだが、それでもなお私はプログラミングの習得を提唱したい。そうすることで、きっとあなたはまったく新しい世界に触れ、視野を大きく拡げることができるようになるだろう。
 さてそれではプログラミングとはいったい何かということになるが、大雑把に言ってそれは「コンピュータ(もしくはコンパイラなどの処理系)に判る言葉ないしは記号で、一連の処理を記述する」ということである。
 英語しか判らぬアメリカ人には日本語が通じないのと同様に、コンピュータもやはりそれに通じる言葉で伝えてやらねば何もできないのである。このための言葉は「プログラミング言語」、「プログラム言語」あるいは単に「言語」などと呼ばれる場合もあるが、いくつかの種類が存在する。
 プログラミング言語は大きく二つに分類できる。「低水準言語」「低級言語」と呼ばれるものと「高水準言語」「高級言語」と呼ばれるものである。
 低級言語には「アセンブラ」「大阪弁」、それに「大阪弁」の派生語である「播州弁」「河内弁」などがあるが、これらはあまりに習得が困難なためここでは割愛する。
 高級言語にはたくさんの種類がある。メインフレームの世界ではCOBOLが古くから用いられ、これは現代でも主に使われている息の長い言語である。数値計算の分野ではFORTRANが伝統的に使われてきた。これは本物のプログラマしか使ってはいけない言語で、ひとつ間違えるとロケットを破壊することもあるので、初心者は手を出さぬのが賢明だろう。BASICはパーソナル・コンピュータの黎明期によく用いられた言語であり、現在ではかつて脆弱であった制御構造を補強したものが出まわっているが所詮泥縄であるのでたいしたものではない。教育用言語として作られたPASCALはその出自ゆえに実用にはならぬものであった。現在ではこれをアメリカの企業が大幅に拡張したものもあるが、拡張された部分はほとんどC/C++からの流用であり、それならいっそC/C++を使ったほうがましだろう。BCPLという言語から派生したCは作った本人がよく理解していなくても何故か動いてしまうようなプログラムが書けてしまう言語であり、思わぬバグを潜ませる可能性があるので注意したい。これを拡張したものにC++やObjective Cがあり、最近流行のJavaもこの系列に入れてよいだろう。ちょっと変わった言語としてはLispがあり、これはカッコをつけたい人にはもってこいである。通好みのものにはSmallTalkがあり、「オブジェクト指向といえばやっぱSmallTalkでしょう」と呟くと尊敬を得られることが多い。米国国防省がすべての言語を統一するという目論見のもとに開発したAdaは、みんながあーだこーだと好き勝手を主張したのでどこかへ行ってしまった。
 ではこれら多彩な言語の中からどれを選択すべきか。
 私はC言語をお薦めしたい。現在我々が触れるコンピュータに搭載されているOSは大抵がC(あるいはC++)で記述されたものであるから、CはOSとの親和性が高い。また「Cは難しい」と言うのが定説になっているので、某社の畸形BASICしか使えぬ専業プログラマたちの尊敬を得ることもできる。実際にはCが難しいのではなく、某社のクラスライブラリが滅茶苦茶なだけなのだ。
 さて、それではプログラミングの準備をしよう。まずは必要な環境を整えなければならない。まずはコンピュータが一式。それから、Cのコンパイラも必要である。コンパイラというのはCで記述された内容をコンピュータが直接わかるコードに変換するためのツールであり、入手方法はくだくだしいので省略するがフリーで出まわっているものもあるので、手始めにそれを使うのもよい。参考書もひととおり揃えておきたい。最近では書店のコンピュータ関連の売り場には膨大な数のCの参考書が置かれているが、やはり何といっても「K&R第2版」は持っておきたい。これは通称であり、本当の書名は「プログラミング言語C第2版」である。どうして「K&R」と呼ばれるのかは第1版の前書きに書かれていたのだが、今では第2版しか手に入らないので永遠の謎とされている。現在第2版になっている理由は、第1版には百十六ページに誤植があったからだ。他に揃えておきたい参考書としてはストラウストラップ「プログラム言語C++」、ゲオルグ・ユルマン「プログラミング言語C++++++++++」、レイモンド・チャンドラー「大いなる眠り」、武者小路実篤「お目出度き人」、中里介山「大菩薩峠」、ジョー・サトリアーニ「猿でもわかる速弾き入門」、原田知世写真集、阿仏尼「十六夜日記」などがある。
 その他あった方が望ましいものとしては、コーヒー、煙草、灰皿、雨傘、電動歯ブラシ、替えのパンツ、酔い止め薬、ビニル袋、毛沢東の写真、住民票一通、ピンク・ローター、ヨード卵Lサイズ二つ、オリーブ油少々、醤油ひと匙、トガリネズミ一匹などが挙げられる。
 それではいよいよプログラムの記述に入ろう。Cには記述の方法がいくつかある。K&Rスタイル、ANSIスタイル、駅弁スタイル、北辰一刀流、神道無念流などである。これらは人間にとっての見やすさが違うだけで、コンパイラに与える影響はまったくないので、好みにあった書き方をすればよいだろう。ここではK&Rスタイルに倣うことにする。

#include <stdio.h>

main()
{
  printf("hello, world\n");
}

 これはもっとも簡単なプログラムのひとつである。任意のエディタでこの通り入力したものをたとえば hello.c というファイル名で保存し、コンパイラに通すとプログラムができあがる。K&Rには a.out というファイルができると書かれているが、騙されてはいけない。たいていの人の環境では hello.exe というファイルが作られるはずだ。これはK&R第2版でも直りきっていない誤植なのである。
 できあがったプログラムは何をするものか。実行してみれば判る。

hello, world

 お判りだろうか。このプログラムはコンソール画面に hello, world と表示するためのものなのである。いかがだろうか。自分で作ったものが形になる新鮮な驚きを味わっていただけたろうか。中には「たったそれだけか」と言うひねくれた方もいらっしゃろう。そんな方のためにこのプログラムを改変してお見せしよう。

#include <stdio.h>

main()
{
  printf("sex, drug, rock and roll\n");
}

 早速コンパイルして実行してみてほしい。僅かな改良であなたのコンピュータにロック魂が宿ったことがお判りになるだろう。しかし驚くのはまだはやい。環境によっては文字コードに注意が必要だが、日本語もちゃんと使えるのだ。

#include <stdio.h>

main()
{
  printf("サモ・ハン・キンポー\n");

}

 実行結果を以下に示す。

サモ・ハン・キンポー

 '\n' はエスケープ・シーケンスと呼ばれる制御文字で、「ここで改行せよ」という意味である。これを活用すると次のようなことも可能になる。

#include <stdio.h>

main()
{
  printf("ジュンです。\n長作です。\n三波春夫でございます。\n");
}

 以下が実行結果である。

ジュンです。
長作です。
三波春夫でございます。

  いかがだろう。たったこれだけで、あなたのコンソールにレツゴー三匹を出現させることができるのだ。本日は紙面が尽きたからこれくらいにするが、ほんのちょっとのことであなたの可能性は無限に広がるのだ。
 是非プログラミング技術の習得に励んでいただきたい。馴れればもっとすごいことも自分でできるようになるのだ。ちなみにこの文章も実はCプログラムで自動生成されたものである。信じられないかもしれないが、本当のことである。
 証拠は末尾を見ればわかる。\0


新着順一覧 − 日付順一覧 − 前を読む − 次を読む − トップページ


1999/07/09
文責:keith中村
webmaster@sorekika.com