ボクがシステム開発をしていた頃

もう30年以上も前の事、ボクは企業のコンピュータ室要員として製造工程管理の仕事と並行して、システム運用とシステム開発、プログラマとして働いていたことがある。当時はパソコンを業務で使うことはほとんどなく、大型の汎用機やオフコン(オフィスコンピュータ)が使われており、今となっては昭和の遺物ともいわれるようになってしまったCOBOL(コボル)というプログラム言語を使っていた。当時、世間で流行り始めたパソコンではボクもBASIC(ベーシック)という初心者向け言語を使っていた。

コンピュータを動かすプログラム言語には主に3種類がある。一つは機械語と呼ばれる、コンピュータが直接読み取れる形の言語で全てが0と1で記述される。コンピュータの世界では「低級言語」と呼ばれる分かりにくいプログラム言語だ。普通の人はそんな言語を理解できるはずもないので一般的には英語を改造したようなプログラム言語が使われる。この人間にもわかるプログラムはソースコードと呼ばれる。こちらは低級言語に対して「高級言語」と呼ばれる。

しかし高級言語はコンピュータが直接は理解できないので一旦、低級言語に翻訳する「コンパイル」という工程で機械語に変換してからコンピュータに実行させるわけだ。コンパイルもコンピュータに行わせるのだが、ここで作られる機械語のプログラムを「オブジェクトコード」と呼ぶ。コンピュータはこのオブジェクトを読み込んでその命令を実行して処理を行うわけだ。

このコンパイル作業を1つの命令ごとに1行ずつ行ってコンピュータを動かすのが2番目の「インタープリタ言語」と呼ばれる。ソースコードを1行ずつコンパイル(翻訳)しながら処理するので実行するのに時間がかかるのが弱点だ。しかしインタープリタ言語を使っているとコンピュータは1行ずつプログラムのソースコードを読み込んで翻訳して実行するので、プログラムに文法の間違えがあればその箇所でストップしてしまう。だが逆に間違っている箇所がすぐに特定できるという利点もある。しかしあまりにも時間がかかるので「コンパイルをまとめてやってしまおうじゃないか」という考えで生まれたのが3つ目の「コンパイル言語」だ。今、動いているコンピュータのほとんどはこのコンパイル言語を使っている。

コンパイル言語はソースコードをコンパイルする「コンパイラー」というプログラムにソースコードを読み込ませることで文法が間違っている箇所が一気にすべて抽出されてくる。時には1か所のプログラムの間違えが数百というエラーとして現れることもある。その中から「本当に間違っている」箇所を探し出すにはある程度の経験が必要になるが慣れてくると一気に数十個のエラーを消すこともできるようになってくる。

「本当に間違っている」というと本当は間違っていないエラーもあるのかという疑問が生まれる。じつはそれがあるのだ。プログラムの中には無数の計算式とそれに使われる”変数”がある。変数とは学校の数学で方程式の中に書かれていたxやyやzなどの記号と同じである。プログラム言語によってはそれらの変数を「この変数を使いますよ」という意味であらかじめ”定義”しておかなければいけない場合がある。その定義文の中の変数名をプログラムで間違って書いてしまうと、その後の数式の中に出てくる変数名が全部正しいとしてもすべてエラーとして吐き出されてくるのだ。

コンピュータプログラムにはデバッグ(間違い修正)の作業が必須だ。最初から完璧なプログラムが書けることなどほとんどない。そりゃ数十万行にもなるプログラムである。1行に平均50文字あったとしても1本のプログラムで数百万文字が使われている。ミスタイプがないわけがないのだ。その上、プログラム言語の文法が修正されてコンパイルが通ったとしても、今度はプログラムの論理的な計算の間違いをデバッグする工程が果てしなく続くことになる。

だからボクは、自分の作るプログラムでは最初から100%を目指さず、とりあえず形になったところからすぐにコンパイルして文法の間違いを潰すことにしていた。人間がスペルのミスを探すよりも機械が探した方が何百万倍も速いからだ。しかしプログラマの中には最初から完璧を目指そうという人が多かった。文法間違いによるコンパイルエラーを出すことを”恥”だと思っているのだ。ボクに言わせれば、そんなくだらない文法間違いなど機械に見つけさせてもっと人間がやるべき仕事に集中した方が効率が上がると思っていたので、くだらないプライドのためにムダな時間をかけるプログラマを「アホだな」と思っていた。

レビューとは「評価」のことだ。企画でもプログラムでもレビューも何回受けるかで完成度の高さは変わってくる。しかしレビューには多大な労力がかかる。つまらないミスのレビューは機械に任せて人間がやるべきレビューのクオリティを上げることがシステム開発のパフォーマンスを上げることに他ならない。しかし今では昭和の頃のシステム開発とはまったく様相が変わっているのだろう。それでもまだつまらないプライドに拘り続けている開発者は残っているのだろうか。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください