このブログは「風見鶏」が、日々気づいたこと、思ったこと、したことを気ままに綴る日記です。2008年9月に旧ブログから引っ越しました。バックアップをご覧ください。

ゲストログインがうまくできないので、コメントを承認制にしました。スパムでないことを確認の上、公開します。判断はあくまで「風見鶏」の主観で行いますので、文句は受け付けません。(笑)承認が遅れることもままあると思いますが、あしからず・・・

システムトラブルのため、2015年以降のブログ画像と2018年5月以降の記事が消失しました。画像は鋭意、新しい物から順次復旧中ですが記事については残念ながら戻せません。残念ですが、あきらめます。

なお、ここに書いていることは、あくまで個人的な思いであり、いかなる組織をも代表、代弁するものではありませんし、無関係ですので念のため。

雲をつかむ話(1章-3)

| コメント(0) | トラックバック(0)

スパゲティープログラムという言葉がある。たとえば、FORTRANやBASICなどのプログラミング言語には、GOTO文という構文がある。これを使えば、処理をプログラムの任意の場所へ飛ばすことができる。もちろん、アセンブラのジャンプ命令も同じだ。このような構文を持つ言語には共通の問題がある。無意識に使うと、プログラムの制御の流れを追うことが難しくなってしまうのだ。このように、あちこちへ飛びまくって追いかけられなくなってしまったプログラムのことを、からまったスパゲティーにたとえてスパゲティープログラムと呼ぶ。

プログラムのスパゲティー化は、保守性はもとより、プログラマーの生産性にも大きな影響を及ぼす。あらかじめきちんとロジックを詰めずに書きはじめても、前に書いたアセンブラの例のように、パッチワーク的に修正ができるので、なんとかプログラムを完成させられるからだ。もちろん、時間は余計にかかるし、プログラムはめちゃくちゃなものになるが、なんとか動く。しかし、これではその本人にしかわからない、いや、本人にすら時間がたてば解読が困難なプログラムが出来上がってしまう。処理をこまめにサブルーチン化するなどして、ある程度綺麗なプログラムにはできるが、それも人のスキルに大きく依存してしまう。サブルーチン化するということは、単に処理を分けることではなく、複数の場所で行われる類似の処理を共通化する作業が必要だからだ。これをしなければ、サブルーチン化する意味がない。

構造化プログラミングという考え方が出てきたのは、こうした現象を防いで生産性や保守性をよくすることが目的だった。基本的に、いかなるロジックも3種類の要素(詳細に言えば4種類だが)つまり、順次処理、条件付き処理、繰り返し処理(条件判断前置または後置)を使って記述できるというものだ。これには、GOTOのような飛び越しは含まれない。逆にいえば、この基本要素を使って作られたプログラムはかなりすっきりとしたものになる、というかならざるをえない。だから、まずは標準化の一環として構造化プログラミングを取り入れようとしたのだが、スパゲティーに味をしめたプログラマーには馬耳東風、なかなか根付かない。それもそのはずで、基本的な発想から変えなければいけないからだ。たとえば、昔風のBASICでは、よくプログラムの最後に、GOTO  10 という文が書かれる。つまり、プログラムの先頭に戻れ、ということなのだが、GOTO使用禁止を言い渡されたプログラマーがまず悩むのがこれだ。どうやったら処理をプログラムの先頭に戻せるのか。ここで発想を変える必要が生じる。プログラムの最後から先頭に戻す、ということは、つまり全体の処理を「繰り返す」ということだ。要するにプログラム全体をたとえば、WHILE や LOOP文のような、繰り返し構文で囲ってしまえばいいのだ。この発想の転換が案外難しい。だから、単に標準を決めただけでは、納期を理由にした標準破りが続出してしまう。

そこで登場したのが、GOTO文のない、いわゆる構造化プログラム言語だ。古くはALGOLや、その流れを汲むPASCAL、PL/1などの言語は、(例外的にGOTOを持つものもあるが)基本的に、GOTOを使えない。つまり、最初から構造化を考えて作らざるを得ないわけだ。人というのはある意味で弱いものである。いくら生産性が良くなる方法を頭で考えても、体がついていかないことが多いものだ。だから、仕組みとしてそれを組み込んでしまうことで、ルールからはずれたこと自体を出来なくしてしまおうという発想なのだ。この発想は、今日にいたるまで、形を変えながら受け継がれている。

(続く)

トラックバック(0)

トラックバックURL: https://www.kazamidori.jp/MT/mt-tb.cgi/213

コメントする

月別 アーカイブ

この記事について

このページは、風見鶏が2009年11月 7日 10:30に書いた記事です。

ひとつ前の記事は「日常回帰」です。

次の記事は「雲をつかむ話(1章-4)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。