[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1048] Re: guide0.



  こんばんは、川合です。1時を回りました。今日は結構疲れているの
ですが、暑くて寝付けません。


Myurika さんは 2000/08/05 22:58:19 の「[OSASK 1047] Re: guide0.
」で書きました:

>>  この発言のポイントは、「速くなる」、「楽である」とは言っていな
>>いというところかもしれません(笑)。ASKAではどうしても命令数を意
>  言われてみれば確かに、「速くなる」とは一言も言ってませんね(笑)。

  上記のコメントを書いたとき、我ながら少し悲しくなりました。上記
の僕の発言での「(笑)」は、自分の情けなさを笑ってごまかしている
と思ってください。僕も、速くなるとは言ってなくても、速くなるほう
が好ましいことは十分に理解しています。言っていてもいなくても、「
速くなる」わけではないのは誉められません。

>>識させられます。誰だって長いプログラムを延々とは書きたくありませ
>>ん。それで、結果的に命令数を減らすように努力するはずです。それは
>>、コードがコンパクトになることにつながります。
>  要するに、ASKAで書くと、回りくどいことがしにくくなるということなのです
>ね。

  そうです。一応念を押しておくと、「CPUにとって回りくどいことは
しにくくなるが、人間にとって回りくどいことはかなりやらされる」で
す。

>  見た目は高級言語なだけに、最初使ってみると不満が爆発しそうですけどね(笑
>)。

  それは、ありえますねえ。

  なんというか、諦めが肝心かもしれません。所詮、低級言語なんだと
(笑)。

># 統合環境みたいなものか、インライン関数(インラインC(笑)?)みたいなもので
>補えると、より使いやすくなる気もするのですが…。

  僕もそう思います。しかし、それを分かっているのにやらないという
僕の意図も感じてください(たとえば、できるのにやらなかった引数の
サポートなど)。・・・きっと、僕の説明の仕方がよくなかったのでし
ょう。

---

  最初に、僕が考える究極の言語を明確にしておきます(注:ここでは
インタープリタタイプの言語については考察していません)。究極の言
語とは、使いやすくて最高のコードを出力する言語です。これに異論を
唱える人は存在するかもしれませんが、少ないでしょう。

  僕が思うに、この究極の言語はまだ存在していません。使いやすさを
追求した言語の代表が、たとえばC言語やC++です。どの言語が現在
においてもっとも使いやすいかは、好みによって意見が分かれるでしょ
うから、結論を出すことはしません。しかし、それがアセンブラではな
いことだけは確かです。これらの高級言語には、優秀な最適化機能が存
在しています。それによって、かつてよりはマシなコードが出力される
ようにはなりました。しかし、人間が本気でコードを最適化したものに
比べると、比較になりません。

  そういうわけで、最高のコードを出力するという目的のために、低級
言語はその使いにくさにもかかわらず、今まで生き残ってきたわけです
。そして、ASKAはその頂点を目指しています(達成できたかどうかはわ
かりませんが)。

  ASKAは、単に「最高のコードを出力可能である」というだけでは満足
していません。可読性も追求しています。使いやすさも追求しています
。でも、最高のコードを出力することが目的であることを忘れてはいま
せん。最高のコードを出力するために、プログラマにCPUと同じ思いを
させることが重要であると僕は考えています(もちろん、これも程度の
問題があります)。そのため、可読性がかなり犠牲になるのは分かって
いましたが、1文が複数の命令に対応するようなものはできるだけ避け
るようにしました。このルールが、僕の引いた、高級言語と低級言語を
分ける一線であったわけです。

  ですから、使いにくいという不満が残るのはよくわかっていますが、
諦めていただきたいのです。もちろん、1つの命令で実行可能なのに、
サポートしていない命令があるよ、というようなことであれば、何のた
めらいも無くサポートさせていただきます。

  では、川合はC言語とASKAの併用を諦めてしまったのか、と問われそ
うですが、そんなことはありません。C言語とASKAが併記できる言語は
とても快適な環境でしょう。それは、高級言語たるC言語側でサポート
してほしいと思っています。つまり、ASKA中でインラインC言語はでき
ないけど、C言語中でインラインASKAはできるわけです。なんというか
低級言語はピュアなのです(プアなのかもしれないが・・・笑)。高級
言語は、便利さのためなら、なんでもありなのです。・・・なお、イン
ラインASKAをサポートしたC言語を「CASKA(かすか)」と呼ぶことに
しよう、と僕は勝手に提唱しています。

  だいぶ前なのであまり知られてはいないと思いますが、実はASKAが最
初に提唱されたのは、「究極の高級言語を目指して独自言語を作ろう」
という雰囲気の中で、「インライン用アセンブラの文法が、CPUによっ
て千差万別なのはわかりにくいから、できるだけC言語風なやつに統一
したらどうか」という動機のためでした([OSASK:056]〜[OSASK:064])
。

  しかし、ASKAはC言語のようにプリプロセッサを使用するので、#def
ineを使うことができます。だから、複数の命令をまとめて記述するこ
とを完全に否定しているわけでもないんです。「分かってやっているな
ら、かまわない。でも、知らないうちに勝手にやるのはよくない」とい
うことです。・・・まあ、そんなに徹底しているわけでもないんです(
笑)。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.or.jp
Homepage http://www.imasy.or.jp/~kawai/