世の中はプログラムで動いている。飛行機も,電車も,自動車も,発電所も,製油所も,下水処理場も,ごみ処理場も,電話も,インターネットも,銀行も,コンビニも,家電も,携帯電話も,電子マネーもプログラムで動いている。このプログラムに間違いが多い。

 プログラムは現在,文字で記す。言語である。このコラムも文字からなる。大体,1000字ほどである。誤字脱字の数はたくさんある。少なく見積もって間違いは1000字で一つとしよう。1000字の文章はプログラムにすれば30行ほどの量である。30行で一つのバグ。Windows XPは4000万行,高級車や携帯電話で1000万行。つまり,パソコンで130万個,自動車で33万個のバグがあることになる。

 もちろん,形式的な間違いは機械で見つけることができる。ワードのスペルチェックであり,コンパイラーのエラーリストである。問題は文法チェックで見つからない内容間違いである。「あれ」と「これ」の取り間違いなどは代表的な例である。加えて,他人に見てもらえば間違いは減る。ソフト業界ではソフトウェアレビューとよぶ。もっとも,形式から内容まで踏み込んだレビューは難しい。

 もちろん,プログラムの書き方を規制することでもバグは減る。伝統的には,これが主流である。初期のプログラムでは,goto文が許されていた。ドラえもんの「どこでもドア」である。好きな箇所から好きな箇所へ一足飛びである。しかし,それはプログラムのスパゲッティ化を招き,禁止された。「バイバイ,goto文」である。

 これがプログラムの構造化であり,モジュールプログラミングとなる。そして,「あれ」,「これ」などの便利な代名詞に相当するポインターの使用を禁止したものが企業情報系や携帯電話で使われているJAVA言語である。この言語ではC言語では許されているプログラマーによるメモリのハンドリングも規制することで,メモリ境界で起こる不具合も避ける工夫がされている。さらに,多くのOSやミドルウエアでは,API(Application Program Interface)群を用意している。つまり,これ以外の機能は使用禁止である。

 ここまで規制しても,まだバグはでる。もっと,プログラマーの手足を縛らなければならない。大きな流れは,文字表現から図表現への転換である。プログラムを文字で書くから間違いが生じる。それなら,基本機能をブロックとしてまとめ,そのブロックを線でつなぐことでソフトウエアを作ろうというものである。代表がOMG(Object Managing Group)で標準化されたUML(Unified Modeling Language)である。制御系では「MATLAB/Simulink」がデファクト化している。そして,両者を結ぶ規格がSysMLである。

 これらは,プログラム作成から文字入力を捨てることを目的としている。つまり,ブロックをつなぐことがプログラミングという思想である。別な言い方をすれば,「バイバイ,プログラマー」でもある。

 計算機の発明とともにプログラマーが生まれた。計算機の発達はプログラマーを大衆化した。そして,計算機の完全な普及は全ての人をプログラマーとすることである。皆がプログラマーとは,プログラマーなど要らないということである。もっとも,それはプログラマーだけではない。もてはやされ,手足を縛られ,そして捨てられる。これが専門職の一生である。ご安心ください。名前は消えても,魂は万人に宿ります。ご安心ください。名前を変えて育つものが出世魚。鰤やハマチを越えるプログラマー,技術者になってください。