コンピュータの専門家へのメッセージ

◎I言語は、誰でも、早くを強く意識しているので、コンピューターの専門家から見た場合、問題と感じる事が有るかと思いますので、この部分の説明をします。
(1)なぜオブジェクト指向で無いのか。
クラス名を指定し更にオブジェクト名を指定する方法は、余分な名前と余分なコーディングが必要でプログラムが難解になります。
また、プログラムは順番に書かれている事が、解読するのに一番分かりやすいと考えていますので、 クラスで分断する事で難解になる事は避けた方が良いと考えています。
更に、オブジェクト指向の最大の特徴は情報と処理をカプセル化する事ですが、 I言語ではSQLを使うので情報はデータベースに持つ事が前提ですので、 オブジェクト指向にはなじみません。

(2)なぜGUIを使わないのか。
I言語は毎日の仕事で使うことを想定しています、操作が簡単で早い事を狙っているので、GUIはほとんど使用いません。
操作方法が全て同じ事で操作マニュアルを作らなくても、初めての業務でも迷わないで動かせる事がより大事と考えています。

(3)なぜfor文、while文、until文を使わないのか。
まず命令コードに使う文字列を予約語としてオペランドの名前として使えない言語がほとんどで、非常に問題ありと考えていました。
これを回避するため命令の文法を「命令コード{オペランド1}{...}...;」と命令コードとオペランドを完全に分離する表現とする事を最初に決めました。
for文等はこの文法では表現できない為、使わないでツールを作っていった結果、特に無くても支障が無いので作ってありません。
もちろん、ツール自体もプログラムを複雑にしたくなかった事も大きく関係していますし、文法もむやみに増やしたくなかった事も起因しています。
尚、「REPEAT=回数」で繰り返しを指定し、for文の一部を代替できる行制御命令が有ります。

(4)なぜIF文にelseが無いのか。
(3)とほぼ同じ理由ですが、初期のバージョンで"/"をELSEで”!”をENDIFとして作り始めましたが、書き忘れによるプログラムミスが頻繁に発生したり、 解読しにくいので廃止しました。
脱線:goto文がプログラムを難解にしていると良く言われますが、個人的にはgoto文は被害者で有り、加害者は条件分岐命令で有ると考えています。 良くgotoを使わなければ良いとしてifとelseを組み合わせて何十行も書かれたプログラムを見た事が有りますが解読に苦労しました。 という訳で、かなりこじつけですが、I言語にはgoto文に当たるBACK文とJUMP文が存在します。 goto文が1個で無い理由は飛び先の名札に同じ名前が存在しても、その命令に一番近い名札に飛ぶ為です。
これを使うことでelseが無くても支障が無いようになっています。

(5)なぜサブルーチンが無いのか。
(1)とほぼ全く同じ理由で、解読し易さを狙った事と、サブルーチンの管理を無くしたかった為です(大量になると不要な物が放置されてしまう)。
尚、同じプログラム内であれば「NAME=名前」を「COPY=名前」で単純にコピーする事はできます。
(単にコピーするのみなので、サブルーチンのように、同じデータに異なるデータ名を使用する事はないので、解読が面倒になる事がありません)
更にメニューで他のプログラムを5個までコピー出来るようにし、システム全体のコーディング数を削減出来るようになっています。
(メニューで指定する事で、そのプログラムがどこで使われているかが明確に分かるようになっています)
提供者:原沢信道(harasawa@mis.janis.or.jp)リンク元(http://www.mis.janis.or.jp/~harasawa/)
All Rights Reserved, Copyright (C) 2009-2010 Nobumichi Harasawa.