まつもと ゆきひろです

In message "[ruby-list:9419] Re: ruby 1.1c3 released"
    on 98/09/02, ARIMA Yasuhiro <fit0298 / fitec.co.jp> writes:

|有馬@FITECです。

|私は、ANSI C 討議中に C を使いはじめたので、ruby のソースで
|関数プロトタイプが無いことや、関数のヘッダの引数の書き方が
|古い形式であることが気になります。なにか理由があるのですか?
|まだ、ANSI C を使えない環境って多いのでしょうか?

少なくとも外部から参照される関数についてはプロトタイプはあり
ますよん.see ruby.h, intern.h

んで,なぜ古い形式を使ってるかって言うと,Rubyが一番最初に作
られたマシンには当時K&Rコンパイラしか無かった,という歴史的
事情があります.また,今でもANSI的Cの無い環境が撲滅されたと
いう宣言が行われていない以上移植性が下がる方向の変更は行いに
くいという気分の問題もあります.

そして,関数の引数宣言の部分が古い形式である最大の理由は,私
が括弧の中に型を書く新しい形式が嫌いだからです.

   void
   foo_function(int foo, struct bar_struct *bar,
                int x, int y,
                int width, int height,
                struct draw_context *context)

と

   void
   foo_function(foo, bar, x, y, width, height, context)
      int foo;
      struct bar_struct *bar;
      int x, y, width, height;
      struct draw_context *context;

では後者の方が(たとえ引数名を二度書くことになっても)読みやす
いと固く信じているからです.

# 思い込みです.反論は不要です ^^;;;

                              古い奴だとお思いでしょうが
                                まつもと ゆきひろ /:|)