プログラミング;言語;MUMPS(M言語);MUMPS昔話;処理時間短縮
MUMPSは、インタープリタ言語であり、コンパイル言語ではない。
インタープリタ言語とは、実行に先立ちプログラムコードを機械語(メカ語)に変換、即お簡単に言うとコンパイルしておくものではなく、実行する段になって、インタープリタがプログラムコードを解釈して実行するものである。
よって、少なくとも解釈する時間が余分に掛かってしまうのである。
古典BASICが、典型的なインタープリタ言語であった。
MUMPSもインタープリタ言語であるがゆえ、処理時間短縮や性能問題が宿命的に付きまとったのである。
ひとつのアプリケーションシステムにおいて、日々繰り返される、ルーチンワークの様な業務処理は、処理時間がちょっと余分に掛かってしまうことが致命的なのである。
また、月次処理業務においては、月に1回のみ実行するのだから、時間が掛かっても許されるかというとそうではない。1ヶ月分の大量データを処理するのだから、一晩かかっても完了しなければどうにもならない。あるいは、月次処理として複数の処理があれば、結局1分1秒でも速く完了させる必要があるのである。
これが、ユーザが要求、期待する性能要件なのである。
MUMPSプログラマは、そこで、どうするのか。
最重要な処理プログラムの場合、数種類の処理仕様あるいはロジックを実際のプログラムとして組み、実際に動作させ性能評価を行って、最速のプログラムを選択していたのである。
また、プロジェクト内の複数のメンバに、それぞれ組ませて、コンテスト形式で競わせて最良のプログラムを採用したのである。
MUMPSは、そこそこの性能でゆるされるプログラムを作成するのであれば高い生産性を誇ったのだが、性能要求が厳しいプログラムについてはひどく苦労させられたのである。
どうしてもMUMPSで性能をクリアできない場合は、極力限定してアセンブラ言語で組んで、それとMUMPSプログラムをインタフェースした事例も有った。
例えば、臨床検査システムにおいて、血液や尿の分析装置からデータをシステムに取り込む場合、昔は接続手順などは無く無手順で垂れ流し方式であったため、取り込み漏れを発生させないため、システムはひたすら必死で取り込み処理を実行する必要があったのである。
この場合、MUMPSのみでは対応できなかった事を覚えている。