FTP、CGI、SSI、telnetが自由に使える超高速レンタルサーバ。
工夫しだいで、楽しさ100倍。 www.binboserver.com
月額千円サーバ | サブドメインコース | BIGなサーバ

サブドメインコース:CGIやFTPが使いたい・お金を掛けたくない人のために。
 *****.syo-ten.com *****.gasuki.com *****.zansu.com
 お好きな名前を無料で使えます。早い者勝ち。

人気サイト 月額千円サーバ:.com .net .org で取得できます。.JPドメイン大歓迎!
 超高速・高機買Tーバを1000円で!使ってみれば、分かります。

BIGなサーバ:Big なBig なサーバー。充実したサポートをお求めの方へ。
 インターネットでご活躍の皆様へ、そしてご活躍予定の皆様へ。
2ちゃんねるは、このサーバを使っているです。

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■

Rubyの実装に疑問あり!
1 名前: 「真面目な」反対派(何が真面目なのか知らないが) 投稿日: 01/11/04 20:28
Rubyの実装は、バイトコード使用ではなく、
構文木をeval関数(巨大なswitch文)でたどっていく方法だが。
これでは速度的に不利だ。
また、そのせいで例外処理にsetjmpとlongjmpを使う風になっていて、
余計な負担がかかっている。
GCもスタックを勝手にサーチして「保守的ごみ集め」をやっているが
これも速度的に問題がある。
開発者のまつもと氏はいったいどう考えて作っているのか、
知りたいところだ、、、。


2 名前: shige 投稿日: 01/11/04 20:33
終了。


3 名前: shige 投稿日: 01/11/04 20:34
騙るな。


4 名前: shige 投稿日: 01/11/04 20:34
お前もな


5 名前: shige 投稿日: 01/11/04 20:35
Ruby逝ってよし!


6 名前: shige 投稿日: 01/11/04 20:35
HSP逝ってよし!


7 名前: デフォルトの名無しさん 投稿日: 01/11/04 20:37
真面目な反論など不要!


8 名前: shige ◆3MSu.p0M 投稿日: 01/11/04 20:39
俺が本物だ。


9 名前: matz 投稿日: 01/11/04 20:53
至急削除依頼出してください。


10 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:01
Ruby VM は現在開発中ですよ。


11 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:33
珍しくまともなスレが出たと思ったのに……。


12 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:34
oremona


13 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:36
とりあえずsetjmpなのが嫌。
RubyVMに期待。


14 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:37
>1 キミ速いやつ作ってよ。


15 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:46
その名もTurboRuby!


16 名前: デフォルトの名無しさん 投稿日: 01/11/04 21:53
みなさん大変です!!
Rub...えーとなんだったっけ?・・・が
この世から無くなります!!使っちゃダメですよ!気をつけて!


17 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:00
>15
じゃあオレはQuickRubyを……


18 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:01
Rubyを使うと次第に人間性が損なわれていきます。
それはここの板を見ればわかります。
悪魔の言語、Ruby.....


19 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:04
マイクロソフトはVMがないと動かせないような言語の
ブラウザサポートから撤退するそうです。
だからRub...えーとなんだったっけ?・・・は
あと3ヶ月で消えて無くなります。


20 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:06
Ruby1.6.5だが、
どーも、原因はgcc2.9くさいが、
(Laser5 Rel6.4)
elseifが正しく実行されない。
全部elseにいったりする。
他にちゃんとした実行ファイル作れない人いる?


21 名前: 仕様書無しさん 投稿日: 01/11/04 22:12
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪
gcc++♪


22 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:21
>>21
いまどきC++かよ。


23 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:23
gcc++ ???


24 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:38
最近、ム板のレベルが加速度的に下がってるな。


25 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:48
ほー。そういう実装なんだぁ

バイトコードを使用したスクリプト言語ってどれくらいあるの?
知ってる人がいたら情報下さい。


26 名前: デフォルトの名無しさん 投稿日: 01/11/04 22:54
>>1
実装が簡単だからそうしたんでしょ。
Python より多少遅い程度なんだからそう気にしてないけど。
実装は抜本的に直すことも可能だけど言語仕様はそうはいかないからね。
(ちょくちょく細かな手直しはされているが…)
VM 化と Generation GC で数割はパフォーマンスが良くなるだろう。
組み込みクラスも最適化すればばっちり。
後3年待て(w


27 名前: デフォルトの名無しさん 投稿日: 01/11/05 00:37
Rubyの問題は、実装以前の問題です。


28 名前: デフォルトの名無しさん 投稿日: 01/11/05 00:42
信者の問題です。


29 名前: デフォルトの名無しさん 投稿日: 01/11/05 00:46
>>26
この業界で3年待つのか


30 名前: デフォルトの名無しさん 投稿日: 01/11/05 01:05
>>1
拡張ライブラリをCで簡単に書けるようにでしょ。


31 名前: デフォルトの名無しさん 投稿日: 01/11/05 01:23
>>30
つーか「拡張ライブラリをCで」書くという仕様?がある時点で
間違ってると思うが、どうよ?


32 名前: デフォルトの名無しさん 投稿日: 01/11/05 01:26
>「拡張ライブラリをCで」書くという仕様?がある時点で間違ってる
んなこたない。
が、>30の言うことが本当だとしたら本末転倒もいいとこ。
因果関係がいまいちわからんが。


33 名前: デフォルトの名無しさん 投稿日: 01/11/05 01:30
>>30
それって mark&sweep の conservative GC を採用してる以外にも?


34 名前: デフォルトの名無しさん 投稿日: 01/11/05 01:35
GCするときに生成されたオブジェクトはどこかから参照さ
れている、ということをRubyは理解しなくてはいけない。
それを、スタックやらなにやらをトレースすることで調べ
ている。もしこれをRubyがやらないとすると拡張ライブラ
リを書く側が気にしなければならず今ほど簡単に拡張ライ
ブラリは書けなかったと思う。
と言ってはみたがそれほど理解している訳じゃないので
見当違いかもしれぬ。
また、仮に合ってるとしても、自分もこの方法はちょっ
と乱暴だとも思う。


35 名前: 投稿日: 01/11/05 01:38
35ゲットオォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

ドッコイショ・・・・・・・・・
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄
     ∧∧          (´;;
    (゚Д゚ ,)⌒ヽ    (´⌒(´
     U‐U^(,,⊃'〜... (´⌒(´⌒;;

ヤレヤレ・・・ツギイクカ
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄
  ポ  ∧∧  ポ
  ン  (゚Д゚ ,) . ン
   (´;) U,U )〜 (;;).
(´)〜(⌒;;UU (´ )...〜⌒(`)


36 名前: 30 投稿日: 01/11/05 01:47
ちなみに34も俺です。何か深く考えずに30書いちゃったけど
全然見当違いのような気がふつふつとしてきた。
あと、最初バイトコードにしなかったのはRubyは動的な部分
が多くて難しいと思ったんじゃないかな。
識者の意見が聞きたいのでageます。


37 名前: デフォルトの名無しさん 投稿日: 01/11/05 01:52
とりあえず移植性の為に、一番単純でタコい方法で
書いてるんだと思う>GC
その結果、確かにたくさんのプラットフォームで
動いてるし。
あの程度なら(レジスタウィンドウとか無ければ)setjmpが
あれば移植出来るし、読めばすぐ理解出来るし。
ただ、例外関係は俺もバイトコードで例外テーブル
持つ方が良い、とは俺も思うなぁ。
そこらへんはどうなんだろう?


38 名前: デフォルトの名無しさん 投稿日: 01/11/05 02:02
そういうコアな部分が全く分からない者としては、
ラフな案でもいいから ruby-dev にふってくれると嬉しいなと思ったりします。


39 名前: デフォルトの名無しさん 投稿日: 01/11/05 02:09
高速化はRuby2.x.xでやるんだろ


40 名前: デフォルトの名無しさん 投稿日: 01/11/05 02:44
構文木インタプリタにした理由は、
・作るのが楽だから
・コンパイル時間がかからないから(one-linerだと速い)
と思われる。

「動的だから」と言うのは良くわからん。

Smalltalkも実行時にmethod加えたり消したりできると思うが
最初からバイトコードだった。


41 名前: デフォルトの名無しさん 投稿日: 01/11/05 02:53
まつもと氏はCプログラマとしては凄いんだろうが、
きっとRubyではCほどプログラム書いてないよね。

OOの熱心な信奉者という感じはしない。むしろあんまり
信頼してないんじゃないか。OO原理主義者ならもっと多く
の部分をRuby自身で書くだろうし。


42 名前: デフォルトの名無しさん 投稿日: 01/11/05 03:08
まつもと氏はOOの熱心な信奉者だよ。


43 名前: デフォルトの名無しさん 投稿日: 01/11/05 03:13
>>42
該当する ML のログか Changelog 分かる?
ざっと探したけど見つからなかった。。。


44 名前: デフォルトの名無しさん 投稿日: 01/11/05 03:14
誤爆。。。
本スレの 283 へのレスだった。


45 名前: デフォルトの名無しさん 投稿日: 01/11/05 03:15
全部見ろ。そしたら分かる。


46 名前: デフォルトの名無しさん 投稿日: 01/11/05 04:54
>>42
じゃあ、なんでRubyの処理系はあんなにCマンセーなんだろ。
なんでパーザくらいRubyで書かないの?


47 名前: デフォルトの名無しさん 投稿日: 01/11/05 06:23
>>46
cで書いてるのは移植性を考えてだろ。
パーザ?yaccのことか?
yaccで効率的なコードを生成できるんだから
わざわざRubyで書く必要なんてっこれっぽちも
無いと思うが?


48 名前: デフォルトの名無しさん 投稿日: 01/11/05 06:29
>>43
例えば、Rubyを作った理由で、オブジェクト指向が
大きな理由になってる。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/63
それ以前に、Rubyの仕様を見れば彼がオブジェクト指向に
なみなみならぬこだわりがあることはすぐにわかると思うけど。


49 名前: デフォルトの名無しさん 投稿日: 01/11/05 06:38

* これからどうするのか

やりたいことは以下の通りです.

+ バグを減らす
+ 知名度をあげる
+ クラスライブラリを増やす
+ thread対応(難しそう…)
+ security強化(最近の流行?)


50 名前: デフォルトの名無しさん 投稿日: 01/11/05 07:45
>>49
何を言いたくて引用したのかしらないけど、
それは6年近く前の発言だよ。


51 名前: デフォルトの名無しさん 投稿日: 01/11/05 08:31
perl5も構文木上を直接実行していますがなにか?


52 名前: デフォルトの名無しさん 投稿日: 01/11/05 10:52
>>1 で保守的なGCって書いてあるけど、conservativeじゃないGCってあるの?


53 名前: デフォルトの名無しさん 投稿日: 01/11/05 10:53
RubyはCのライブラリなんだよ。
GCやマルチスレッドや例外処理があって移植性抜群のC言語処理系。
しかもこれで開発するとスクリプト言語のインタプリタが
おまけとしてついてくる。


54 名前: デフォルトの名無しさん 投稿日: 01/11/05 11:18
>>52
JavaもLispもSmallTalkもconservativeなGCじゃないですが?


55 名前: デフォルトの名無しさん 投稿日: 01/11/05 11:26
>>54
えっと、でも例えば世代GCなんかもconservativeだよね?
明らかに使われないとわかる部分についてだけ回収するという意味で。
自分の用語の理解が間違ってるのかな。。

classicalなGCって意味でconservativeってこと?


56 名前: 54 投稿日: 01/11/05 12:07
>>55
すみません
発言に誇張がありました。
前述の各処理系でも保守的なGCを採用していることはありえます。
(ていうかSUNのJavaVMもそうらしい、、)

保守的というのは「疑わしきは開放せず」という処理方針の
GCの事です。
これはC言語に代表される
「メモリ上のデータがポインタなのかそうでないのか
厳密に決定できない」処理系では必須になります。
極端にいうとすべてのメモリデータをポインタとみなして
そこからポイントされている領域は使用中の「疑い」がある
として開放しないというものです。

しかし前述の処理系ではポインタと以外が厳密に決定可能なので
保守的でないGCも実装可能です。

しかし保守的なGCはコードが単純なのでメモリ効率よりも
速度を優先する場合はあえて保守的なGCを選択することもあるようです。
(たぶんJavaVMがそう)


57 名前: デフォルトの名無しさん 投稿日: 01/11/05 13:18
>>55
そう言う意味ではほとんどのGCが保守的です。
わざわざconservative GCと言うときは、別の意味です。
「本当にGCで管理しているオブジェクトへのポインタか
どうか正確にわからないので、もしそうでなくても問題
が起きないようなGC」と言う意味です。

LispやSmalltalk,新し目のJavaの処理系は、conservative
GCではありません。GCが管理しているポインタか、そうでない
値(Cの整数とかスタック内にセーブされたPCとか)か、GCが
正確に区別できるようにしてあります。

conservativeでないGCを特に区別するときは、exactなGCとか
preciseなGCと呼ぶようです。


58 名前: デフォルトの名無しさん 投稿日: 01/11/05 13:30
>>47
パーザがクラスとして使えないと、Rubyのプログラムを扱うツールや
プログラミング環境を作るときに、いちいちパーザを自分で書かなきゃ
いけない。あまりにもムダだと思うが。


59 名前: デフォルトの名無しさん 投稿日: 01/11/05 13:39
>>58
そんなことする奴はいないのでOkOk


60 名前: デフォルトの名無しさん 投稿日: 01/11/05 13:56
>>59
ML読むといっぱいいますけど...


61 名前: デフォルトの名無しさん 投稿日: 01/11/05 14:58
>>57
解説ありがとうございます。
JAVAとかでそういうことしてたのですね。知らなかったです。
JAVAで、GCが管理しないポインタというものはどういうも
のがあるのでしょうか?


62 名前: 61 投稿日: 01/11/05 15:07
 あるネストの中でしか使われないオブジェクトを、コンパイル段階で
静的解析によって求めて、スタックに入れるようにするとかいうことを
するのかな・・・


63 名前: デフォルトの名無しさん 投稿日: 01/11/05 15:23
>>60
いっぱいいるようにみえるけど、実は数人しかいないのでOkOk


64 名前: デフォルトの名無しさん 投稿日: 01/11/05 22:01
AthlonはRuby用に最適化されています


65 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:20
>>58
BNFで書かれたソースが公開されてるんだから、普通パーザ
書きたいなら、C言語でyacc使うんだろ。
そもそもクラスで公開するにしてもRubyで実装する必要は
無いだろ。


66 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:32
最近はパーザって言うのかい。パーサじゃなく。


67 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:39
両方の流儀があるようです。
東大流と京大流(嘘)


68 名前: 構文解析を速く、、、 投稿日: 01/11/05 23:39
自分はYACC嫌いなんだけど、Rubyを高速化するために、
書き直しているのなら、構文解析を再帰下向きとかの手書きのものにしてくれないかね。
どうせ、実行時も、動的評価で構文解析するんだろうし。
言語仕様も、もう固まってるんだろ、だいたい、、、。
とりあえず、みんな、あんまYACCに頼るなよ、
遅いんだから、、、。


69 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:42
>>68
再帰下降って速いんだ。知らんかった。
ただ、メンテナンス性は悪いよね。


70 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:46
yaccの出すパーザってグローバル変数つかいまくりじゃなかったっけ?
オブジェクトにできるの?


71 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:47
ぼくもyacc&lex(or bison&flex)はいやだな。
gccとかはそれで作られているけど、市販のコンパイラはどうなんだろ?


72 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:52
>>68
はぁ?LALR(1)のyaccが遅いわけねぇだろ。
>>70
簡単にできる。
いくらグローバル使おうが、extern宣言しない限り、
有効なのはそのソースファイル内だけ。
yaccが吐くのはパース部分だけだから、その部分だけ
オブジェクトに
まとめればよい。


73 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:52
Rubyの技術情報なり解説って、ネット上にあるのかな?
まつもとさんの本で簡単に実装が述べられていたけど。


74 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:53
むしろ、再帰下降の方がバックトラックで遅くなる。
文法を制限しても良いなら、バックトラック無しでできるが。
yaccは表駆動型だから最速のはず。


75 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:59
>>72
もう少し理論を勉強しなさい。
LALR(1)が速いわけねえだろ。
>>71
市販のコンパイラの多くは、「手書き」です。


76 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:02
>>75
速いだろ。
終端記号を認識して表と照らし合わせて遷移するだけ。
もしかして、LL文法と比べて遅いとかいいたいわけ?(w


77 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:04
LL(1)なんか使ってるようじゃ、Rubyの文法はとても
実装できんよ。
それとも、Rubyってそんなに単純な文法だったのか?(w


78 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:06
>>73
まつもと氏曰く、ソースがドキュメントらしいです。

実装について体系的に説明しようと試みているのはここくらいかな。
更新されてないから obsolete 気味だけど。
http://www9.xdsl.ne.jp/~aamine/ja/ruby/hack/


79 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:09
>>70
ソース読んでみようね。
>>75
強弁はやめましょうね。
でも、わたしもyaccに頼るのはあまり賛成しない。
(もっとも、ちゃんとしたコンパイラ屋さんは
全部自分で書いてしまうようですが、、、。)


80 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:09
みんなよく知ってるなぁ。
日曜プログラマのおれにとっちゃ、意味不明だよ。


81 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:13
でも、実際問題として、LR表作るのを手作業とかでやる
やついるの?
yaccの助けを借りるのが一番良いと思うが。


82 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:17
PerlもPythonもgccもyaccのようなツール使ってるけど。
市販の有名なやつは手書きじゃなくて、独自開発のツールなんじゃないの?


83 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:18
字句解析との兼ね合いじゃないの?


84 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:28
LAって何?ロス?じゃないよね
LRは?左右?


85 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:33
どうも、このスレは乱入しにくいね。
もっと、感情的になって、醜く争って!(from Ruby撲滅スレ)
プログラムのことなんてわかんねえよ!
アタマわりいんだよ!


86 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:34
>>80
安心してくれ。ほとんど一人で書いてる。(w
>>84
Look Ahead Left to Right
もしくは
Look Ahead Left-to-right Rightmost


87 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:35
市販のが lex & yacc 使わないのはライセンス問題からではなく?


88 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:35
>>72
>いくらグローバル使おうが、extern宣言しない限り、
>有効なのはそのソースファイル内だけ。

ほぉ?じゃあその方式で作られた「オブジェクト」を
同一プロセス上で二つnewしてみろよ?一発で破綻すること請け合い。

Objectとして使うってのは、そういうことです。
2ついっぺんに使いたい!とか、ね。

>>57
http://www9.xdsl.ne.jp/~aamine/ja/ruby/hack/gc.html
によると、
現状のrubyでも、或るポインタがObjectを指すものかどうか?を
厳密に判定するのに必要なコストは、かなり低く出来るような仕掛けが
既に有るように読めますね。

それはそうと、
バイト(など)コードのインタプリタでも、別に自由度は変わるまい。
javaが自由度低い言語であるのは別にバイトコードであるせいではない。

rubyのCライブラリのスタックの使い方をruby本体のソレと「同一」のものに
してしまう必要も必ずしも無いのだから、あまり本質には関係なかろう。
独自スタックにするという手もあるしね。
独自スタックにすると遅い、という意見も有るかもだが、
今みたいに生スタックをThread切り替えのときにいちいち積み直し
しているのと比べてもなお、遅いといえるかどうか。


89 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:37
>>84
構文解析の方法の一つです。
>>85
他はそんなに醜い争いなんですか?


90 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:41
>>89
プログラムと全く関係ないことで争っている。
小学生の喧嘩みたいで微笑ましく見えることもある :-p


91 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:55
>>90
つーか、プログラム読めも書けもしない消防ばっか。


92 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:12
>>80
っつーか、字句解析とか構文解析とかは情報系の学科にいけば必ずやる話題。
それなりの人数が毎年勉強してる内容。でも、本当にその知識を役立てることが
できるやつはそのうちのほんの一部。
ところで、そういう予備知識のないやつがHSPとか(以下自粛)


93 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:39
HSPは予備知識無しで作ってるから凄い。


94 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:41
>>92
某地方国立大学の情報学科出身ですが、
ここの言語処理系の授業は、ものすごく低レベルでした。
(BASICの「構文の研究」ですよ。授業中は市販のコンパイラ書籍を読み、あとは寝てました。)
院に行ってようやくまともな研究ができるありさまでした。


95 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:47
>>93
他人が一生懸命作った作品をけなすのはやめましょう。
ユーザーも少なくない処理系のようですし。
「君は何を作ったの、見せて」って言われますよ。


96 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:51
>>74
ついでに関数呼び出しのオーバーヘッドも馬鹿にならないね。
あの Ruby の parser.y から EBNF 書いてちまちま左再帰除去してやって
再帰下降パーサ書くのはちょっとやりたくない。
それより最適化の方が楽しそうだ。

>>94
(´-`).。oO(構文の研究って何だろう…)
(´-`).。oO(IF THEN ELSE は条件文ですなどというレベル何だろうか…)
(´-`).。oO(処理系の作り方はやらなかったの?)


97 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:55
>>1
Rubyやまつもとさんを批判するのはいっこうに構わないが、
君は何を作ったの?
RubyVMは現在開発中ですよ。
別に信者ではないけれど、Rubyは言語仕様も実装もよくできていると思うよ。


98 名前: デフォルトの名無しさん 投稿日: 01/11/06 01:56
>ところで、そういう予備知識のないやつがHSPとか(以下自粛)
ニッチを満たしてしまったのだからしょうがない。
もう少し「言語」としてまともだったらと思うが、
今のままではユーザ層がピラミッド型にならずに台形になって先細りだと思う。


99 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:00
>>97
ML で VM に関する議論を全然見ないんだけど。


100 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:00
>>95
93は褒めてるのだと思われ。


101 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:04
本題に集中しよう。


102 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:07
>97 1は批判なんかしてないじゃないか。
Ruby の実装について技術的に議論したいだけだろ。

松本氏やRubyコミュニティの批判は正直うんざりだけど
技術的観点からの批判なら彼らも歓迎とまではいかくても
受けてたつんじゃないかな。


103 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:32
>>74
バックトラック? あほか。LL(k)文法(k > 1)をバックトラックなしで
解析するアルゴリズムなんて広く知られてるだろ。


104 名前: 初心者ですが、教えてください 投稿日: 01/11/06 11:26
うーん、結局、再帰下降などの自前の構文解析器で、
yacc以上の速度を出すことは難しいんでしょうか?
(文法の範囲の広さは別にしても)

Rubyとは関係ないんですが、
実は、仕事でインタプリタのようなもの(設定ファイルを解析。
簡単な変数と簡単な制御文とサブルーチンが使える程度の
仕様。)を作らされそうなのですが、、、。
うーん、これまでの議論を読むと、速さとメンテナンス性を
考えるとyaccなのかなあ?
でも、そうするとyaccの勉強しないとですね。うーん。
(それにyaccを使用した場合、デバッグが複雑になるという話を
ききましたが)


105 名前: デフォルトの名無しさん 投稿日: 01/11/06 11:47
>>104
時間的に余裕がないなら手書きでいきなはれ。
なんだかんだ言ってもyaccも熟練が必要。
泥縄でやっても、どつぼにはまる可能性、大。

というか、yacc使うと楽になるってのが定説だけど
ある程度の以上の大きさになると、大差なしってのが
俺の正直な感想。


106 名前: デフォルトの名無しさん 投稿日: 01/11/06 13:19
>>105
ありがとうございます。
104です。うーん、そうですか。
確かに再帰下降法なら、以前つくったことがありますので、
すぐに作業に入れそうです。

ただ、yaccの方が速いと聞くと、なんとなく気になってしまって。
ほんとのところどうなのでしょうか。
うーん。


107 名前: デフォルトの名無しさん 投稿日: 01/11/06 13:30
>>106
おれは逆にまったくのyaccerで、手書きしたことないんだけど、
メンテナンスは楽チン。ただ、はまると何日も悩んだりするケースも
ある。yaccを使う場合は小さな文法から作って雪だるま式に増やして
いくのがいい。conflictを取るのが難しい場合が多いけど、
それは手書きでも同じことなんじゃないのかな。


108 名前: デフォルトの名無しさん 投稿日: 01/11/06 13:41
手書きの場合で conflict の除去なんかしたくね〜〜寒気がする...


109 名前: デフォルトの名無しさん 投稿日: 01/11/06 13:50
yaccerってイパーイ居るんだね。
yaccスレッド作って、自作言語公開してよぉ。

※このスレのタイトルはヒドスギだね。
 オープンソースなんかだったら、俺が書き換えてやるって感じだろうけど。
 潰し合いより、協力した方が自分のためになるのに。


110 名前: デフォルトの名無しさん 投稿日: 01/11/06 13:50
再帰下降で十分な文法しか使わないなら、
再帰下降でもいいんじゃないか?

どうでもいいがスレ違いな気が。
コンパイラ、スクリプトエンジン相談室の方が
良い助言がもらえるように思える。


111 名前: デフォルトの名無しさん 投稿日: 01/11/06 13:56
誰かParrotでRuby処理系書いてるひとはいない?


112 名前: デフォルトの名無しさん 投稿日: 01/11/06 14:56
>>109
Rubyの実装について語るスレだからタイトルは全く問題ないと思う。
しかもソースはオープンだと思う。
批判的に協力してると思う。(具体的な協力はともかく少なくとも態度的には。)


113 名前: デフォルトの名無しさん 投稿日: 01/11/06 15:45
再帰下降でパーサ作るなんてPascalを題材にしたコンパイラの教科書以外で見たことないよん。
商用の処理系だとPascalでも再帰下降じゃないような気がするな。
ま、とりあえずは楽なほうでやってみたら良かろう。


114 名前: デフォルトの名無しさん 投稿日: 01/11/06 20:52
自分も「独自の実行時スタック」を使用した方が良い、というか、
普通そうなんじゃないの、と前から思っていた。
PerlやJavaなどおもだったインタプリタ言語が、そうであるように。
Rubyがそうせずに、Cの、つまり「生の」スタックフレームを
使っていることに違和感を覚える。
速度のため?
まあ、そうなんだろうけど、独自のスタックを使用することで
GCを始め、簡潔に処理できる問題は多いと思う。
その方が、RubyVM(?)への移行もスムーズになるのではないか。


115 名前: デフォルトの名無しさん 投稿日: 01/11/06 20:54
失礼、上のは>>88


116 名前: デフォルトの名無しさん 投稿日: 01/11/06 21:02
>>104
yacc使うとデバッグが複雑になる?
そうなの?

確かに速度はyaccを使った方が速いよ。
作り方、構文の仕様にもよるけど。


117 名前: デフォルトの名無しさん 投稿日: 01/11/06 22:02
>>114
ハードウェアなスタック使ってんのに、あの遅さじゃ救われないね。


118 名前: デフォルトの名無しさん 投稿日: 01/11/06 22:18
rubyって実装が一つしかないくせに、いまだに「ソースが仕様です」
なスタンスだから、いずれPerlの二の舞になると思われ。


119 名前: デフォルトの名無しさん 投稿日: 01/11/06 22:27
VMに乗せるメリットって何?
移植性が高まるってことだけ?


120 名前: デフォルトの名無しさん 投稿日: 01/11/06 22:51
>>119
stackをヒープで管理して真の継続をサポートしたり、
末尾再帰を最適化したりする余地ができる。
俺はそんなのもはやRubyじゃないと思うが。


121 名前: デフォルトの名無しさん 投稿日: 01/11/06 23:37
>stackをヒープで管理して真の継続をサポートしたり、
>末尾再帰を最適化したりする余地ができる。
これだけ?なんかつまらん。
Javaのクラスライブラリ使えたりはしないの?
.NETに乗ったほうがおもろそう。


122 名前: _ 投稿日: 01/11/06 23:44
スタックってアセンブラでespがさすやつだよね?
独自スタックってどこに作るのかな?


123 名前: デフォルトの名無しさん 投稿日: 01/11/06 23:44
>>121
はげしく勘違いしてる。


124 名前: デフォルトの名無しさん 投稿日: 01/11/06 23:45
>>122
ヒープ。


125 名前: _ 投稿日: 01/11/06 23:48
ヒープってmallocが使うやつ?
あれってOSかCLIBとかが管理してるの?
すません。Cオンリーできたもんで。


126 名前: デフォルトの名無しさん 投稿日: 01/11/06 23:51
出直してこい>このスレ全員


127 名前: デフォルトの名無しさん 投稿日: 01/11/07 00:01
>>121
VM = JavaVM じゃないよ。
Java との連携だったら Java 実装の Ruby である JRuby
http://jruby.sourceforge.net/


128 名前: _ 投稿日: 01/11/07 00:14
>>126
先生!勉強してきました。
http://www.mars.dti.ne.jp/~torao/program/general/memory.html


129 名前: デフォルトの名無しさん 投稿日: 01/11/07 01:14
>>126
悔しさが滲み出てるな。(w


130 名前: デフォルトの名無しさん 投稿日: 01/11/07 01:27
構文解析のコストなんて、たいしたことじゃないよ。
もし、問題なら、ジェネレーターの改良を考えるべきで、
手書きで解析器つくるなんて、アホだね。
そりゃ、速いにこしたこたないが、そういうやつは、アセンブラでも使ってろっての。


131 名前: デフォルトの名無しさん 投稿日: 01/11/07 02:14
で、結局Rubyのパーザはオブジェクトとしては使えない役立たずなんだろ?


132 名前: デフォルトの名無しさん 投稿日: 01/11/07 02:32
>>130

>そりゃ、速いにこしたこたないが、そういうやつは、アセンブラでも使ってろっての。
あほか?解析アルゴリズムを問題にしているんだろ?
「ジェネレーターの改良」はまた別の問題だ。

>手書きで解析器つくるなんて、アホだね。
実務ではyacc等を使うべきだが、手書きで作成するのも
非常に有益な学習になる。
特に初学者にはすすめる。


133 名前: デフォルトの名無しさん 投稿日: 01/11/07 02:45
>>131
表の配列を出力するためだけにyacc使え。


134 名前: デフォルトの名無しさん 投稿日: 01/11/07 02:48
>実務ではyacc等を使うべきだが、手書きで作成するのも
>非常に有益な学習になる。
>特に初学者にはすすめる。

これこそ別問題で、大きなお世話。
しかもスレ違い。


135 名前: デフォルトの名無しさん 投稿日: 01/11/07 03:09
javaCCはrecursive descent parserを出力しますがなにか?
おかげで拡張BNFが使えるよ。


136 名前: デフォルトの名無しさん 投稿日: 01/11/07 03:13
>>135
で?


137 名前: デフォルトの名無しさん 投稿日: 01/11/07 05:59
ここにもJava厨VS Ruby厨の構図が


138 名前: デフォルトの名無しさん 投稿日: 01/11/07 09:03
で、結局Rubyは使えない役立たずなんだろ?


139 名前: デフォルトの名無しさん 投稿日: 01/11/07 11:52
LR を速くしたいんなら http://portal.acm.org/citation.cfm?id=13326&coll=portal&dl=ACM&CFID=596255&CFTOKEN=30222621 でも読めば?


140 名前: デフォルトの名無しさん 投稿日: 01/11/07 12:06
おまえみたいに、言語作れないやつが論じることじゃないYO!>>138


141 名前: デフォルトの名無しさん 投稿日: 01/11/07 12:32
>>138
プログラム構造や言語仕様など、技術的側面に無知な
「批判」は批判にならないよ。
ある程度は勉強しよう。
(自分はRuby嫌いですが)
>>134
たぶん、無内容なスレが多いからじゃないの。


142 名前: デフォルトの名無しさん 投稿日: 01/11/07 13:08
で、結局138はVBしか使えない役立たずなんだろ?


143 名前: デフォルトの名無しさん 投稿日: 01/11/07 15:01
またか……。
ruby関連スレは無意味で大人げの無い口喧嘩に終わってしまう運命なのか。


144 名前: デフォルトの名無しさん 投稿日: 01/11/07 16:31
坊やだからさ。


145 名前: デフォルトの名無しさん 投稿日: 01/11/07 16:38
Pythonを越えることは出来まい。


146 名前: デフォルトの名無しさん 投稿日: 01/11/07 16:55
Ruby >>>>>>>>>>>>>>>>>>> Python


147 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:03
!(Ruby >>>>>>>>>>>>>>>>>>> Python)


148 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:04
Ruby>>>C#>>>Java>>>>>>C++>>C>>>>>>>>Python>>>>>>>>>>>>>>HSP


149 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:07
Ruby以外の言語は糞!


150 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:12
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび
るびるびるびるびるびるびるびるびるびるびるびるびるびるびるびるび


151 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:14
Rubyは最強のプログラム言語です!!
ルビーマンセーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー!!!!!!!


152 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:15
Rubyユーザって白痴並の知能しか持ってないのか?
"Ruby>>>>>>>*"で自己満足に耽ったり、コピペで他の言語のスレッドを荒らしたり。


153 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:16
るんるんるるんるるんるんるるんるるるるんるんるるん♪
るびーはサイキョーーー西京最強斎京斉京ーーーーー!!


154 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:17
>>152は白痴


155 名前: デフォルトの名無しさん 投稿日: 01/11/07 17:25
まともなスレだったからって一生懸命荒らさんでもいいのに。


156 名前: シゲは去ね 投稿日: 01/11/07 17:46
 


157 名前: 156は氏ね 投稿日: 01/11/07 17:49
                   


158 名前: 157も死ね 投稿日: 01/11/07 17:51
 


159 名前: 158も市ね 投稿日: 01/11/07 17:57
   


160 名前: 投稿日: 01/11/07 18:10
ちんちん


161 名前: デフォルトの名無しさん 投稿日: 01/11/07 18:11
うんこ


162 名前: デフォルトの名無しさん 投稿日: 01/11/07 18:17
>>152
多言語ユーザが Ruby を陥れようとしているのもあるんじゃない?
まあ大半は白痴 Ruby ユーザがやってるんだろうが。


163 名前: デフォルトの名無しさん 投稿日: 01/11/07 18:27
Del厨のしわざ。


164 名前: デフォルトの名無しさん 投稿日: 01/11/07 18:29
たとえメジャーにならない言語でも日本人が作り出したことに価値があるのです!!
HSPマンセーーーーーーーーー!!!!!!!!!!!!


165 名前: 衝撃の真実 投稿日: 01/11/07 19:17
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


166 名前: デフォルトの名無しさん 投稿日: 01/11/07 20:03
実は、RubyとHSPの作者が兄弟って知ってました?
実務派の兄と論理派の弟ですが、HNが平仮名な所はそっくり!!


167 名前: デフォルトの名無しさん 投稿日: 01/11/07 20:05
あーゆーきでぃんぐ?


168 名前: デフォルトの名無しさん 投稿日: 01/11/07 20:25
Ruby vs HSP
...世も末だな。よりによってHSPと比較される日が来るとは...。


169 名前: デフォルトの名無しさん 投稿日: 01/11/07 20:26
ってか、RubyがHSPに喧嘩をふっかけたんだろ


170 名前: デフォルトの名無しさん 投稿日: 01/11/07 20:49
あーゆーきりんぐ?


171 名前: デフォルトの名無しさん 投稿日: 01/11/07 21:08
RubyからHSPへステップアップ!!!!


172 名前: デフォルトの名無しさん 投稿日: 01/11/07 21:23
るびはさくしゃのどきゅなぶぶんでそんしてる
えっちすぷはゆうざあがちゅう


173 名前: エセrubyist 投稿日: 01/11/07 22:20
>>20
かなり遅レスだが、elseifってなによ?


174 名前: デフォルトの名無しさん 投稿日: 01/11/07 22:23
VBの構文>173


175 名前: デフォルトの名無しさん 投稿日: 01/11/07 23:51
叩きたい奴は叩くために敵のことをよく勉強しとけよ!
で、叩くのはいいけど煽り荒らしは勘弁な。


176 名前: デフォルトの名無しさん 投稿日: 01/11/08 02:51
>>175
同意。でもよく勉強してる叩きさんたちはどこかへ行っちゃったみたい。


177 名前: デフォルトの名無しさん 投稿日: 01/11/08 03:14
それで結局のところ、今あるRubyのVM実装って、
・まつもとさんVM(IPAの産物・性能検証用)
・木山さんVM(独自実装)
・JRubyで使ってるVM(JVMを利用)
の3つ、ということでいいのかな? でもJRubyのは
別に中間言語に落としてるわけじゃないみたいだから
ちょっと違うかもしれない。前二者のはまだ公開されて
ないし。

Robert FeldtってまだVMは書いてないよね? Parrotも
Rubyでは使ってなさそうだし。AuroraはVM使ってない
よね。……こんなとこ?


178 名前: デフォルトの名無しさん 投稿日: 01/11/08 04:41
>>177
これがみんな、それぞれ独自にparser書いてるんですか?
Rubyでは再利用はできないということですね。


179 名前: デフォルトの名無しさん 投稿日: 01/11/08 05:13
ただでさえ少数派なのに・・・


180 名前: デフォルトの名無しさん 投稿日: 01/11/08 05:20
172はドキュ


181 名前: デフォルトの名無しさん 投稿日: 01/11/08 07:10
>>177-178
こういうのって複数実装があった方がいいような気がするが。
唯一の実装がへぼかったら目も当てられんだろう。
178はただの煽りかな
ちなみに俺もRubyユーザーじゃない。興味はあるけどね。


182 名前: ルビ厨な入 投稿日: 01/11/08 07:30
複数実装で思い出したけど、
WindowsでのRubyは複数有るんだよね、、コンパイラによって、、
mswin32、mingw、cygwinって、、、(他にもあるらしいが、、、)
まあ、mswin32とmingwはバイナリ的に全く同じらしいけど、、、
でも、どうやら、mingw版に統一することで話が進んでいるらしい。
確かに、複数有ると、初心者は迷ってしまうかも知れないけど、
まだまだ、Rubyは初期の段階なのだから、
そう言うのが複数合ってもいいと思う。
複数の中から、いいものがどれかって残っていくと思うし、、、


183 名前: ruby知らず 投稿日: 01/11/08 09:47
なんでvisual c++とかIntel C++コンパイラとかでビルドしないの?
MatzがPOSIX APIにこだわってWin32APIに移植する気がないってことか、
ほかにライセンスとかの理由がある?


184 名前: デフォルトの名無しさん 投稿日: 01/11/08 12:26
>>183
mswin32版はVC++でコンパイルしたもの。
mingw版はmswin32版とほぼ同じソースをMinGWでコンパイルしたもの。

Intel C++でビルドしてる人がいないのは、誰も持ってないんだろ、きっと。


185 名前: デフォルトの名無しさん 投稿日: 01/11/08 13:17
>>178
Parserは別の話。これはVMね。
つーか、まつもとさんも木山さんもCで書いてるんじゃないの?

>>183
MatzはWindowsは使わないからWinに関することはぜんぶ他のひとにお任せ。


186 名前: タコ 投稿日: 01/11/08 13:58
>>177
もうVMの開発は進行していたのですか。
まつもとさんと木山さんのものはまだ未公開なのですか?
JRubyのソースって手に入れられるのでしょうか?
これからRubyのHPに行ってみます。でもそれ以外のとこかにあるのでしたら、URLを教えてもらえますか、すみません。

「まつもとさんのVM」のところに記されている「IPA」って何ですか?
ひょっとして、まつもとさんが受けた「国からの助成」(奨励だったかな?)と関係ありますか?

JRubyって、JavaでC言語版の本家Rubyを書き直したものなのでしょうか?
(そうでないとすると、以下の質問は私の勘違いというか無意味に
なってしまいますが。すみません)

JRubyも構文木をたどって解釈実行する方式だとすると、
インタプリタが実行するのはC言語の標準ライブラリ(で作られたまつもとさんの関数群)ではなく、JavaAPIを実行するのでしょうか?
たとえば、Rubyの文字列構造体(RString?)と文字列ライブラリ(string.c?)の代わりに、
Javaの文字列クラスを使用するとか。

それと、JRubyはJava記述だから、GCのコードはないんでしょうか?(当然そうなりますよね?)

あと、例外処理とかはどうしているのでしょうか?
本家Rubyはsetjmpを使っているそうだけど(1の人によると)、
Javaのコードではどのように処理しているのでしょうか?

>Robert FeldtってまだVMは書いてないよね? Parrotも
>Rubyでは使ってなさそうだし。AuroraはVM使ってない
>よね。……こんなとこ?
これは海外の開発者の方たちですか?

>>181
わたしも複数実装の存在はいいのではないかと思います。
(でも、それが将来統合されると、もっといいと思います。)


187 名前: デフォルトの名無しさん 投稿日: 01/11/08 14:13
>>186
文章が長い上に「?」だらけ。

>まつもとさんと木山さんのものはまだ未公開なのですか?
>JRubyのソースって手に入れられるのでしょうか?
>「まつもとさんのVM」のところに記されている「IPA」って何ですか?
>JRubyって、JavaでC言語版の本家Rubyを書き直したものなのでしょうか?
・・・
>これは海外の開発者の方たちですか?

本当に知りたきゃGoogleで検索してみろ。
本当にRubyのことが知りたいなら、RubyのHPに逝け。

あまりに酷いんで、ネタかと思うぞ。


188 名前: デフォルトの名無しさん 投稿日: 01/11/08 14:31
複数実装は良いんだけど、Rubyの仕様ってちゃんと決まってるの?
distributionについてくるRuby Language Referenceは互換性を保
証できるほどちゃんとしたものでは全然ないし。

「まつもと処理系のソースが仕様です」なのかな?


189 名前: sage 投稿日: 01/11/08 14:58
>>186
そんなにへりくだるこたねぇそ。どーせネットなんだからよ。
「すみません」とかいってる奴、久々見たよ。

JRubyの例外処理。
俺は知らんけど、Javaで書かれとるんなら、
Javaの例外処理を使ってるんと違う。
最近SQLしかいじっとらんで知らんわ。

でも、JavaかましてるんならフツーのRubyより、遅いんとちゃうんか。


190 名前: デフォルトの名無しさん 投稿日: 01/11/08 15:23
>>189
SQLシコシコやってるような坊やが、Ruby語るなっつーの。
>>187
だから、この程度の質問にも答えられない厨房が、Ruby語るなっつーの。


191 名前: デフォルトの名無しさん 投稿日: 01/11/08 15:25
>>190
じゃ、おめー答えてみろよ。


192 名前: デフォルトの名無しさん 投稿日: 01/11/08 15:27
>>191
お前が言えよ。


193 名前: デフォルトの名無しさん 投稿日: 01/11/08 16:01
>>186
まつもとさんVMは試作というか、検証用で、Rite用のは別に書き始める予定
なんじゃないのかな。本当のところは本人に聞かないとわからんけど。
IPAは未踏で正解。
JRubyは http://jruby.sf.net/ にソースも含めて全部あるから見てみ。
Parrotは http://www.parrotcode.org/ にある。auroraはRAA。

>>189
確かにかなり遅いが、JavaのオブジェクトをRubyから利用できるのが
メリットか。


194 名前: デフォルトの名無しさん 投稿日: 01/11/08 16:01
>>186
噂では、まつもとさんのVMのコードはFTPで手に入るそうだ。
木山さんのはインタプリタとは分離して開発してるようで、
まだバイトコードを手で書くような感じだった。LC2001のと
きの話だが。
どっちもまだ実験段階。

IPAというのは通産省(今はなんてんだっけ)の外郭団体。情報
処理振興なんとかかんとか。忘れた。

JRubyはRAAに登録されてなかったかな。
http://jruby.sourceforge.netがメイン。
ちらっと見た感じでは、eval.c同様構文木を自前で辿ってる
ようで、バイトコードは使っていない。


195 名前: デフォルトの名無しさん 投稿日: 01/11/09 04:34
ここもそろそろねたぎれだな。
では


196 名前: デフォルトの名無しさん 投稿日: 01/11/09 07:41
191 名前:デフォルトの名無しさん :01/11/08 15:25
>>190
じゃ、おめー答えてみろよ。

192 名前:デフォルトの名無しさん :01/11/08 15:27
>>191
お前が言えよ。

恥ずかしすぎ!


197 名前: デフォルトの名無しさん 投稿日: 01/11/09 07:44
Rubyの意義は 2chでネタにされる事
そんだけ


198 名前: デフォルトの名無しさん 投稿日: 01/11/09 09:45
>>197 がいいこと言った!


199 名前: デフォルトの名無しさん 投稿日: 01/11/09 11:52
で結局Rubyはなんのために存在してるんだ?


200 名前: デフォルトの名無しさん 投稿日: 01/11/09 12:20
粘着質は嫌いだ


201 名前: デフォルトの名無しさん 投稿日: 01/11/09 12:23
>>199
他の数千の言語が存在するのと同じ理由だろ。

なんで自分の好きな言語以外を排斥しようとする連中がいるのか理解に
苦しむなぁ。
誰がどんな言語を作ってどんな言語を使おうがそいつの勝手だろうに。


202 名前: デフォルトの名無しさん 投稿日: 01/11/09 16:04
>なんで自分の好きな言語以外を排斥しようとする連中
それってRubyユーザ?


203 名前: デフォルトの名無しさん 投稿日: 01/11/09 16:24
>>202
違います。Rubyユーザはそんなことしません。
よく、まつもと氏が書いた文章を持ち出して「そんなことない」と批判する人が
いますが、あれは、他言語と比べての優位性をアピールしているだけ。
優位であると主張することと、排斥することは全く違います。


204 名前: 201 投稿日: 01/11/09 16:25
>>202
なんでそうやってレッテルを貼りたがるんだ?
Ruby厨房もアンチも同じだ。


205 名前: デフォルトの名無しさん 投稿日: 01/11/09 16:30
はやく取り締まってほしいものだ。


206 名前: デフォルトの名無しさん 投稿日: 01/11/09 19:37
>>203
なんでRubyユーザーは優位性をアピールしたがるわけ?
どの言語にアドバンテージを感じるかなんて人それぞれなんだからさ。
うちの言語の方が優位なんて発言は新興宗教の勧誘文句と変わらないよ。


207 名前: デフォルトの名無しさん 投稿日: 01/11/09 19:41
>>203
だって、あの文章今となっては嘘っぱちだもん。
とくにpythonのところなんて酷いもんだよ。
今でも正しいのは優位なのか優位じゃないのかわからんところだけだし。


208 名前: デフォルトの名無しさん 投稿日: 01/11/09 19:43
>>206
どの言語を選ぼうか迷ってる人、あるいは、Rubyをやろうかどうか
迷ってる人向けだから。

Perlだって、Pythonだってやってるでしょ。というか、ありとあらゆるものが
やってる。Rubyが特別なのではありません。

「新興宗教の勧誘文句」なんて受け取るほうがおかしい。


209 名前: Lisper 投稿日: 01/11/09 19:50
Rubyなんてどうでもいい!!


210 名前: デフォルトの名無しさん 投稿日: 01/11/09 19:59
>>208
迷ってる人を引き込む勧誘文句なんだろ。


211 名前: デフォルトの名無しさん 投稿日: 01/11/09 20:28
>>210
そうだよ。
で?


212 名前: デフォルトの名無しさん 投稿日: 01/11/09 20:42
つーか実装の話をすれ。
それ以外は撲滅スレで。
ruby撲滅スレ
http://pc.2ch.net/test/read.cgi/tech/1001125342/


213 名前: デフォルトの名無しさん 投稿日: 01/11/09 21:08
その勧誘文句がひときわ大声で傲慢な雰囲気を醸し出してるから
ここまで煽られるんじゃないかな。


214 名前: デフォルトの名無しさん 投稿日: 01/11/09 21:23
エバンジェリスト(wが日本人だから勧誘文句が
ドキュなちゃんころにも聞こえやすいだけと思われ。


215 名前: デフォルトの名無しさん 投稿日: 01/11/09 21:33
つーか、今更あの文章をネタにされてもねぇ・・・


216 名前: デフォルトの名無しさん 投稿日: 01/11/09 21:39
まつもとがDQNなだけ?


217 名前: デフォルトの名無しさん 投稿日: 01/11/09 22:12
まつもと=諸悪の根元
でファイナルアンサー!


218 名前: デフォルトの名無しさん 投稿日: 01/11/09 23:14
意味も無く言語増やすのは素人。
手の込んだ単発ギャグのようなもの。


219 名前: デフォルトの名無しさん 投稿日: 01/11/09 23:27
>>218
作者が言語ヲタを標傍してるからねぇ。
既存の言語でRuby以外にどういうプログラムを作ったのか知らないけど。


220 名前: デフォルトの名無しさん 投稿日: 01/11/10 00:09
実装というよりは言語仕様なのかもしれないが、
「メタクラス」というのがわからない。
Rubyだけじゃなく、ほかのオブジェクト指向言語、Smalltalk
とかにもあるらしいが、まず、これってなんのためにあるのだ?
(ま、知らんでも、使えるのだろうが、何となくすっきりしないのだ)

「普通のクラス」(class宣言でユーザーが作成するクラス)と
インスタンスの関係はわかるような気がするのだが、
その「普通のクラス」はメタクラスのインスタンスなのか?

作者のRuby本も立ち読みしてみたが、この部分の
継承関係を図示してあったが、よくわからん。
(まず最初にObjectがあって?それからどーなるんだ?)

この厨房に誰か教えてくれ。
ちなみに俺は普段C++を使っているが、この言語には
メタクラスという概念はないような気がするのだが。


221 名前: デフォルトの名無しさん 投稿日: 01/11/10 00:28
正解。


222 名前: デフォルトの名無しさん 投稿日: 01/11/10 00:28
ヴァカ逝ってよし!


223 名前: デフォルトの名無しさん 投稿日: 01/11/10 00:32
>>220
UML でのメタクラスだが考え方は同じ。
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/UMLClassDiagramMetaClass.html

class Foo
@@baz = nil
attr_accessor :foo
def Foo.baz; end
def foo; end
end

例えば上のクラス Foo には
クラス変数 baz、クラスメソッド baz、インスタンス変数 foo、メソッド foo などがある。
が、特定のあるクラスではなく、「クラス」そのものはどう表現すればいいのか。
その答えがメタクラス。
この考えではメタクラスのインスタンスがクラスとなる。
メタクラスでは、クラス変数が定義できる、
インスタンスメソッドが定義できる、などが定義される(これは概念上ね)。


224 名前: デフォルトの名無しさん 投稿日: 01/11/10 00:37
>>219
http://www.st.rim.or.jp/~fuku/cmail/intro.html


225 名前: デフォルトの名無しさん 投稿日: 01/11/10 00:37
で、Ruby でのメタクラスのクラスは Class クラス。
Class.public_instance_methods #=> ["new", "superclass"]
でわかるように Class のインスタンスであるクラス(例えば上の Foo クラス)は
new や superclass といったメソッドを持つ。
これらのメソッドはクラスの視点ではクラスメソッドとなる。

例えばメタクラスがあることで動的にクラスを作成することができる。
223 の Foo クラスの作成は以下のコードでできる。
Foo = Class.new
Foo.class_eval "@@baz=nil; attr_accessor :foo; def foo; end; def Foo.baz; end"


226 名前: デフォルトの名無しさん 投稿日: 01/11/10 02:58
>>223, 225
220だ。ありがとよ。
でも、やっぱ、わかんねえ。
Rubyの奴らって、みんなこんな概念わかってるのか。
だとしたらすげえな。
なんかC++の方が、単純に思えてきた。Javaもメタクラスってあるのか。

Ruby Hacker's Guide
http://www9.xdsl.ne.jp/~aamine/ja/ruby/hack/class.html
も読んでみたのだが、
そこにあった下記の図が、ますます混乱に拍車をかけている。
(上手く表示されていないかもな)

+--------+
| |
Object -------> (Object)
^ ^ | ^ ^
| | | | |
+------------------+ | | | |
| +-----|------|------+ |
| | | | |
AnyClass ------> (AnyClass)| | |
| | |
Module -------> (Module)
^ ^ | ^
| | | |
AnyModule ---> (AnyModule) | | |
| | |
Class -------> (Class)
^ |
| |
+------+

ダメだ。
なんだか循環しているようで、
アタマがこんがらかってきた。逝ってしまいそうだ。

まずもって、メタクラスが何のためにあるのか、どうしても理解できない。
Classにnewがあるのはなぜなのか。また、そのおかげで
動的にクラスを作成することができる、というのもわからない。


227 名前: デフォルトの名無しさん 投稿日: 01/11/10 02:59
わりい、やっぱ上手く表示されてなかった。


228 名前: デフォルトの名無しさん 投稿日: 01/11/10 03:19
>>226
みんながみんな、メタクラスの概念を完全に理解している訳じゃないと思うよ。
実際、クラスがClassのインスタンスだって事を意識することはあまり無いよ。
余談だけど、クラスのメタクラスClassはClassのインスタンスでもあるらしいんだけど、、、
こう言うのを考えるともっと混乱してくる思うので、気にせずに逝こう!


229 名前: デフォルトの名無しさん 投稿日: 01/11/10 03:20
>>226
クラスってのはオブジェクトの属性と振る舞い(メソッド)を定義したものってのは
判るよな?

で、JavaとかRubyとかはクラスそのものをプログラム上でいろいろ操作
できる。
たとえばクラスに含まれる属性やメソッドの種類と数を調べたり
Rubyだとメソッドを削除したりできる。
で、そのクラスそのものを操作するメソッドとかが定義してあるのがメタクラス
メタクラスはクラスのクラスだ


230 名前: 223 投稿日: 01/11/10 03:38
OMG の MOF だとメタメタクラスなんてのまであって頭が痛くなるね。
http://www.tech-arts.co.jp/oo/uml2.html

>>226
Ruby の実装で考えると混乱するよ。
単純にクラスの意味を定義する階層が上にあるとだけ認識すればいい。


231 名前: デフォルトの名無しさん 投稿日: 01/11/10 03:46
インタプリタ型でクラスの概念を備えている言語の処理系を作ると仮定して
その時にクラスがどう表現されるかを考えると自然と分かる。


232 名前: デフォルトの名無しさん 投稿日: 01/11/10 07:42
メタクラスって、
クラス自体もオブジェクトだと看倣した時に
その「クラス」オブジェクトのクラスは何かって考えると
わかりやすいよ。
ただし、クラスについて考える時に
例えばIntegerなら
Integerという名前のオブジェクトか
Integerクラスのオブジェクトか
をきちんと区別しないと混乱するから注意。

ちなみにSmalltalkでは
1
-> SmallInteger
-> SmallInteger class(SmallInteger classはClassのサブクラス)
-> Metaclass
-> Metaclass class(Metaclass classはClassのサブクラス
-> Metaclass
以下無限に続く
っとなっとりますです。
ついでにクラス階層は
-Object
- Behavior
- Metaclass
- Class
- Object class
- Behavior class
- Metaclass class
- Class class
- Magnitude class
- Number class
- Integer class
- SmallInteger class
- Magnitude
- Number
- Integer
- SmallInteger


233 名前: 厨房質問 投稿日: 01/11/10 08:54
で、結局メタクラスって実用上どんな時に役立つの?
>>231の言ってることは解るけど、内部の仕組みをわざわざ言語仕様として
ユーザーに扱わせるからには何か利点があるんだと思うけど。


234 名前: デフォルトの名無しさん 投稿日: 01/11/10 11:49
>>233
まずクラスをオブジェクトとして扱うのなら、
そのクラスのクラスが必要になるってのはOK?


235 名前: 232 投稿日: 01/11/10 11:51
やっぱ崩れた...欝だ...


236 名前: 226 投稿日: 01/11/10 11:51
226だ。ありがとよ。

なるほど。だんだんわかってきたような気がする。
要するにメタクラスというのは、「動的」つまり実行時に、クラスの情報を取得したり、
クラスを操作したりするために存在するものなのだろう。
そして、クラス−インスタンス関係は

インスタンスオブジェクト --> 通常のクラス --> メタクラス

となる。
以上が俺の理解した「メタクラス」の一般だ。間違っているかもしれんが。

ここで、Rubyのクラス継承図
http://www9.xdsl.ne.jp/~aamine/ja/ruby/hack/class.html
を見ると、Objectを含む通常のクラスはそれぞれメタクラスを持っている。
メタクラス間にも通常のクラスと同様の継承関係がある。
だからメタクラスの根っこ(何て言うんだ?)は、Objectのメタクラスとなる。
ところで、この根っこのObjectのメタクラスは、通常クラスのClassから継承されている。
このClassにクラス操作のメソッドが存在するのだろう。
ということは、このClassは「メタメタクラス」ということになるのだろうか。
Classは通常のクラスなので、Objectから継承されている。
(このことによって、ClassはObjectの性質を持つ)
そして、そのObjectはメタクラスObjectのインスタンスであるから、
(スーパークラスである)Classの性質を持つ。
ということになるのだろうか。

これも間違っているだろうか。それ以前に説明が下手だったかもしれんが。
なんだか、「メビウスの輪」のように循環しているような部分があるからな。ObjectとClassの間で。
しかし、要するにそれは、全てのクラスを動的に操作可能にするための仕掛けなのだろうか。
つまり、誰かが言っていたように、全てをオブジェクトとして扱う、とか。

しかし、、、。
>>228
>余談だけど、クラスのメタクラスClassはClassのインスタンスでもあるらしいんだけど、、、
>こう言うのを考えるともっと混乱してくる思うので、気にせずに逝こう!
やっぱ、わかんなくなってきた。
もちろんメタクラスのことを考えなくとも、Rubyを使うことは可能だろうが、何か気になってすっきりしねえ。


237 名前: デフォルトの名無しさん 投稿日: 01/11/10 12:32
>>233
メタクラスがあると、クラスも他のオブジェクトと同じように扱える。
返り値でクラスを返したり、変数にクラスを入れたりできるってこと。


238 名前: デフォルトの名無しさん 投稿日: 01/11/10 12:55
>>236
ObjectとClassの間で循環しているってのはイイ線ついてる。
ただ、

> ところで、この根っこのObjectのメタクラスは、通常クラスのClassから継承されている。
> このClassにクラス操作のメソッドが存在するのだろう。
> ということは、このClassは「メタメタクラス」ということになるのだろうか。

継承関係とメタ関係を混同しているような...
Hogeというクラスがあったとして、
(Hoge)が(Object)から継承しているということが
(Hoge)のメタが(Object)だというわけではない。
それは、
HogeがObjectから継承していても
HogeのメタがObjectじゃないのと同じ。
Hogeのメタは(Hoge)だよね。

Rubyはよく知らないけど、もし
「ClassはClassのインスタンスでもあるらしい」が本当なら
(Hoge)のメタはClassという通常クラスで、Classはメタメタクラスになる。
ただ、これは継承関係とは全く別の話。

例えばSmalltalkだと
hogeのクラスはHogeで
Hogeのクラスは(Hoge)で
(Hoge)のクラスはMetaclassで、かつ、(Hoge)はClassのサブクラスで
Metaclassのクラスは(Metaclass)で
(Metaclass)のクラスはMetaclass
ってなってる。
つまり(Hoge)をメタクラスと呼ぶのは
「(Hoge)はMetaclassのインスタンスである」という意味。
これは1は整数と呼ぶのは
「1は整数のインスタンスである」ってのと同じ。
メタクラスの話をするときは、「1」と「整数」の混同に気を付けないと
わけわからなくなるから注意。


239 名前: 238 投稿日: 01/11/10 12:58
> (Hoge)が(Object)から継承しているということが
> (Hoge)のメタが(Object)だというわけではない。
じゃなくて
> (Hoge)がClassから継承しているということが
> (Hoge)のメタがClassだという理由ではない。
ね。スマソ。


240 名前: デフォルトの名無しさん 投稿日: 01/11/10 13:16
長い→読まない


241 名前: デフォルトの名無しさん 投稿日: 01/11/10 13:20
「長い→読まない」→読まない


242 名前: デフォルトの名無しさん 投稿日: 01/11/10 13:40
はっきり言ってわざと難解に書いているのかと思う。


243 名前: デフォルトの名無しさん 投稿日: 01/11/10 14:56
世の中、一言で簡単に説明できることばかりではない。


244 名前: デフォルトの名無しさん 投稿日: 01/11/10 15:54
SmalltalkのMetaclassのあたりはグチャグチャで汚らしいよね。
なんでMetametaclass、Metametametaclassがなくて、ClassとMetaclass
の2段だけなのか? 答:特に理由はない。
なんでいっそJavaみたいにClassだけにしなかったのか? 答:特に理由はない。

自分自身を(間接的に)要素に持つ集合なんて言うのを安直に考えた型システ
ムは健全でなくなるが、ちゃんと考慮されてるのか? 答:深く考えてない。


245 名前: デフォルトの名無しさん 投稿日: 01/11/10 16:41
>>244
再帰的に考えられないの?
CLOSとかのシステムはmetaclassの生成対象がmetaclassに
なることもある。


246 名前: デフォルトの名無しさん 投稿日: 01/11/10 17:04
244 はコボラー


247 名前: 228 投稿日: 01/11/10 17:10
なんか、僕の所為で混乱している人が多数、、、
僕が言った、メタクラスというのは、プログラミング上で実際、
そのオブジェクトのクラスに見えるクラスのことであって、
実装におけるklassが示すクラスの事じゃなかったんだけど、、、
と言うことで、用語が混乱しておかしかったと、、、すいません。

RubyではClassのクラスはClassだよ。
klassが示すものとしてのメタクラスの意味ではClassのメタクラスは(Class)だけど。

class Hoge; end
hoge = Hoge.new
hoge.type #=> Hoge
Hoge.type #=> Class
Class.type #=> Class

ってね。


248 名前: デフォルトの名無しさん 投稿日: 01/11/10 17:15
>>244
MetaclassがあることによってClass操作の柔軟性が増す。
同様にMetametaclassによってMetaclassの操作も可能にしたいと考えるが、
それを認めてしまうと無限のメタを許容することにもなってしまう。
そこで、全ての基底クラスにObjectを置き
作る作られるの関係を重視してMetaclass/Classという形にした、という話では?
プロトタイプ型の言語でプロトタイプの一種としてクラスの概念を導入した
と考えれば納得のいく構成だと思う。


249 名前: デフォルトの名無しさん 投稿日: 01/11/10 18:51
Metaclassだってクラスなんだから、Metametaclassなんて要らないんじゃないの?
Metametaclass=Metaclassで不都合なかろう。
>>244で、”スモールトークでは”って書いてあるのがきになるんだが、本当にこのことが問題になってたんですか?


250 名前: デフォルトの名無しさん 投稿日: 01/11/10 18:53
っていうか、
メタクラスの概念についてはいろいろ説明してる文章もあるけど
SmalltalkのClass,Metaclass周りのsource以上にわかりやすいものは
見たことないんだよね、正直言って。
つまり、
Metaclass自体がSmalltalkでどれだけ役に立ってるかというより、
OOにおけるメタ階層という概念の提示として
とても歴史的な意義があるんじゃないかと思う。

rubyなりpythonなりのメタ階層を設計する上で、
SmalltalkのClassやMetaclassは参照標準として
かなりの貢献をしたんじゃないかと思うよ。


251 名前: 厨房質問 投稿日: 01/11/10 19:07
これまでで
>>234 >>237
メタクラスの概念でクラスをオブジェクトとして扱えるのは
解ったんだけど、
それが実用上どんな利点をもたらすんでしょ?
人工知能で自己書き換えでもするんなら役立ちそうだけど。


252 名前: デフォルトの名無しさん 投稿日: 01/11/10 19:29
>>251
動的なコード生成で使える。
XML文書を読み込んでオブジェクト化する時とか。


253 名前: デフォルトの名無しさん 投稿日: 01/11/10 19:54
>>251
Smalltalkなんかだと、Smalltalkの開発環境もSmalltalkで
書かれているから、クラスをオブジェクトとして扱える事は
死活問題にかかわる。まさに自己書き換えの世界。

それ以外では、うーん、
例えばカラーパレットを実装したいとするよ。8bppとか24bppとか。
で、ColorPaletteという抽象クラスを作っておいて、
そのサブクラスにIndexedColorPaletteとRGBColorPaletteがあるとする。
で、8bppか24bppか32bppかに応じて使うクラスを切り換えたいと。
で、そんな場合は、それぞれのクラスにcanHandle()っていうメソッドがあって、
引数として8とか24とかのbppを与えると、trueかfalseを返してくれるようにする。
で、ここからがミソなんだけど、ColorPaletteクラスもオブジェクトだから、
「ColorPaletteの全サブクラスのそれぞれにcanHandle()を試してみて、
trueを返す」ようなメソッドを定義できる。
そしたら、その返ってきたクラスを使ってインスタンスを作ればいい。

クラスがオブジェクトじゃなくても似たような動作をさせる事は可能だけど、
サブクラスの名前をハードコーディングする事になると思う。
クラスがオブジェクトなら、サブクラスを追加した時にも
その追加したクラスのcanHandle()さえちゃんと定義しておけば
ColorPaletteクラスには手を入れる必要はない。
例えばBlackWhitePaletteとかMaskとか追加する時ね。

ってのはどうでしょう? >>251


254 名前: win530 投稿日: 01/11/10 19:57
win530


255 名前: 253 投稿日: 01/11/10 19:58
欝だ...
「ColorPaletteの全サブクラスのそれぞれにcanHandle()を試してみて、
trueを返す」ようなメソッドを定義できる。

「ColorPaletteの全サブクラスのそれぞれにcanHandle()を試してみて、
trueを返してきたクラスを返す」ようなメソッドを定義できる。
の間違いね。
欝になったから寝るよ。


256 名前: デフォルトの名無しさん 投稿日: 01/11/10 20:02
smalltalkのコアの部分の実装ってどれぐらい大変ですか?
コアよりもライブラリの構築が大変そうだけど。


257 名前: デフォルトの名無しさん 投稿日: 01/11/10 20:33
>>256
↓資料。
http://minnow.cc.gatech.edu/squeak/1602


258 名前: 厨房質問 投稿日: 01/11/10 20:34
>>252-253
レスありがとう。
俺的には、メタクラスの存在は現状ではユーザー側からは
限定的な状況でしか役に立たないと解釈しました。

実用上でこれまで主流だったのが非インタプリタ・非VMな
言語だったから、今実用されているアルゴリズムやデータ構造に
目立って役立たないのも当然の事なのかも?


259 名前: デフォルトの名無しさん 投稿日: 01/11/10 21:16
>>71
今の gcc は bison/flex つかわないで手書きパーサだったはず。


260 名前: デフォルトの名無しさん 投稿日: 01/11/10 21:54
>>253
>クラスがオブジェクトじゃなくても似たような動作をさせる事は可能だけど、
>サブクラスの名前をハードコーディングする事になると思う。

要するにSmalltalkではそういう時に使われるメタ情報が
(C++などでは最適化ビルド時に全部削除されるにも関わらず)
くっついているので、いわばサブクラスの識別子が最初から
ハードコーディングされているだけでしょ。そのことから
生じるデメリットも挙げなければミスリーディングだと思う。


261 名前: デフォルトの名無しさん 投稿日: 01/11/10 22:05
>>258 >>236
標準ライブラリのdelgate.rbにあるDelegateClass見てみろ。メタクラスが役に
たってる例だ。C++だったら、templateやマクロでアクロバット的なことをする
ような場合に、クラスがオブジェクトだと素直に書ける。


262 名前: デフォルトの名無しさん 投稿日: 01/11/10 22:59
>261
でも限定的なのは確かだよね・・・。


263 名前: デフォルトの名無しさん 投稿日: 01/11/11 03:08
>>260
「いわばサブクラスの識別子が最初からハードコーディングされている」
ってどういう意味よ?
#スーパークラスが持っているのはサブクラスへの参照だけで
#名前なんて保持してないはずだが...


264 名前: デフォルトの名無しさん 投稿日: 01/11/11 04:09
>>250
新しい言語はRubyもJavaもメタクラスなんて使ってないんだから
結局不要だったって事じゃないの?それがSmalltalkの教訓かも。

なんで「ClassとMetaclassの2段だけのループ」が良いのか、って
いうのが結局説得力のないad hocな話だったってのがわかってきた
ので「Classだけの1段のループ」でみんな満足してるんでしょう。


265 名前: デフォルトの名無しさん 投稿日: 01/11/11 04:37
>>263
smalltalkバイナリの大きさを見よ


266 名前: デフォルトの名無しさん 投稿日: 01/11/11 04:58
>>264



267 名前: デフォルトの名無しさん 投稿日: 01/11/11 04:58
>>265
で、Smalltalkのvirtual imageのうち
ハードコーディングされているサブクラスの識別子が
占めているサイズは何割ぐらいなのさ? (藁


268 名前: デフォルトの名無しさん 投稿日: 01/11/11 05:20
>>264
だとすると、
shもEmacs Lispもオブジェクト指向を取り入れてないから
オブジェクト指向は不要なんだね (藁

用途からして全く違う言語を持ち出して、不要も何もないぞ。
Rubyはスクリプト言語だからMetaclassがオブジェクトじゃないのは理解できるし、
Smalltalkはそれ自身が開発環境だから、Classのクラスがオブジェクトなのは
とても自然な事だろ。


269 名前: デフォルトの名無しさん 投稿日: 01/11/11 05:27
>>268
「shやEmacs Lispにとっては」オブジェクト指向は不要です。
もしかしてshにオブジェクト指向が必要だと思ってるとか?
もう寝ろ


270 名前: 322 投稿日: 01/11/11 07:55
>>268
>Rubyはスクリプト言語だからMetaclassがオブジェクトじゃないのは理解できるし、
えっ?そうだっけ?
というより、Metaclassという名前のクラスRubyには無いんだけど、、
というより、Rubyのメタクラスもオブジェクトのはずなんだけど、、
つか、Rubyのメタクラスは普通隠されているから、気にするなって、、、
全てのクラスのクラスはClassって思っていればだいたいいいのに、、、


271 名前: デフォルトの名無しさん 投稿日: 01/11/11 08:41
>>268
何を言ってるのかワカランが(本人もワカランのかも知れんが)
RubyだってJavaだってClassのクラスはオブジェクトだぞ。

開発環境をその言語自身で書く時だって特に不都合はなかろう。


272 名前: 271 投稿日: 01/11/11 08:43
一行追加: メタクラスなんか無くったってな。


273 名前: デフォルトの名無しさん 投稿日: 01/11/11 21:08
Lisp や Java や Ruby のメタクラス的概念の
おかげで自己反映計算ができるんだよね?


274 名前: デフォルトの名無しさん 投稿日: 01/11/12 00:32
スマートに記述できるという意味ではね。一般にはあまり使い道はないけどね。


275 名前: デフォルトの名無しさん 投稿日: 01/11/12 00:37
>>273
CLOSにはMetaclassがあるが、JavaやRubyにMetaclassの概念はない。
(無くても自己反映計算はできる。)


276 名前: デフォルトの名無しさん 投稿日: 01/11/12 02:36
>>236
>なんだか、「メビウスの輪」のように循環しているような部分があるからな。ObjectとClassの間で。

私もメタクラスとあのクラスツリーでつまづきました。
newなどのメソッドはClassにあるらしいですが、
そのnewのメソッド検索の順序はどうなるのでしょう?

class A end
var1 = A.new

例えば、上記のコードの場合、
クラスA→Object→Objectのメタクラス→Class
という順にクラスツリーをたどって、メソッドテーブルが検索されていくのでしょうか?それとも?

Rubyのソースは、Perlよりも比較的、初心者にもわかりやすいと思うのですが、このメタクラスやクラスツリーに関するところ
は私などにはかなり難解です。


277 名前: デフォルトの名無しさん 投稿日: 01/11/12 04:23
>>276
メタクラスは()で囲んであらわすよ。
メタクラスは得意クラスなのでプログラマからは見えない(typeでクラスを調べるときスキップされるなど)から注意してね。
で、オブジェクトとクラスの関係は"=>"でサブクラスとスーパークラスの関係は"→"であらわします。
class A; end
var = A.new

A => (A) → (Object) → Class
で、Classのnewが呼び出されるって事になります。
また、普通のオブジェクトであれば、、、
a = A.new
a.__id__

a => A → Object
で、Objectの__id__が呼び出されることになります。
で、特異メソッドとかは、、、
class <<a
  hoge(); end
end
a.hoge
a.__id__

a => singleton → A → Object
で、singletonのhogeとObjcetの__id__が呼び出されます。
singletonは無名の特異クラスなので同じくtypeなどではスキップされます。
つまり、メタクラスは特異クラスであり、クラスメソッドはメタクラスの特異メソッドであるわけで、プログラム上のクラスはClassと考えてもいいと思います。

RubyはPerlよりも簡単とか言われてますが、それはオブジェクト指向を理解している人には簡単だという事に、最近僕には思えるのですが、、、
そう言う意味ではオブジェクト指向を理解する為にRubyを学ぶことはいいことかも知れませんね。


278 名前: デフォルトの名無しさん 投稿日: 01/11/12 04:39
なんかゴチャゴチャして汚らしいね。
「隠れたメタクラス」なんてどうせ使わないんなら
無くした方が速度も速くなるだろうに。


279 名前: デフォルトの名無しさん 投稿日: 01/11/12 04:54
>>277
Rubyのメタクラスってどんなメソッドがあるの?
newをredefineしたりメソッドの呼び出し方をいじったりできるの?
できないならメタクラスがある意味はないな。


280 名前: デフォルトの名無しさん 投稿日: 01/11/12 04:56
>>279
できたってたいした意味はないよ。
メタオブジェクトプロトコルを変えるにはどうするんだ?
メタメタクラスがいるだろう? でも、そんなのはSmalltalkにもない。


281 名前: デフォルトの名無しさん 投稿日: 01/11/12 06:46
>>280
Smalltalkにもないってヲイヲイ...
Metaclass(という名前のクラス)がまさにそれだろ。


282 名前: デフォルトの名無しさん 投稿日: 01/11/12 08:53
>>278
じゃ、隠れたメタクラスを使わずにクラスメソッドをどう実装するんだ?
クラスメソッドを特異メソッドと同様なものとして扱える
うまい実装だと思うが、、、

>>279
newの再定義はできるよ。
まあ、一般に使うことはないと思うが、、、
(どのようにnewが動いているか調べることぐらいしか使えないと思う。)


283 名前: デフォルトの名無しさん 投稿日: 01/11/12 10:18
>>282
278は実装の話はしてないと思われ。
滅多に使わない機能なんか言語仕様から外しちまった方が
処理系の効率があがってマンセーだと言いたいのでは?
漏れは大して変わらないと思うがな。今の仕様に取り込まれているのは
作者の趣味だろ(藁


284 名前: デフォルトの名無しさん 投稿日: 01/11/12 13:25
>>276
>Rubyのソースは、Perlよりも比較的、初心者にもわかりやすいと思うのですが
自分もそう思った。
言語としての善し悪しは知らないが、こと、ソースの可読性、読みやすさに関しては
間違いなくRubyの方が上だと思う。

以前Perlのソースを読もうとしたのだが、すぐ挫折した。
オライリーの青い背表紙の本のどれだったかを立ち読みして、
ようやくスカラやハッシュなどのオブジェクトが2段、3段がまえになっているらしいと知った。
けど、あの本読んでも、ほとんど理解できなかったな。

Rubyのオブジェクトは、VALUE(u_long)の最下位ビットがゼロならRStringなどのオブジェクトへのポインタで、
そうでなければFixnum(Small Integer)などの値であるからわかりやすい。
自分でもインタプリタ(といっても簡易なものだが)を作った時、Rubyを参考にした。

どちらがより良い実装かなどはわからないが、
確かにPerlのソースは、初心者には難解だと思う。


285 名前: デフォルトの名無しさん 投稿日: 01/11/12 14:34
話しはかわるんですが、IPAの未踏ソフトウェアは1年だけだったんですか?
今年度は名前がみあたりません。


286 名前: デフォルトの名無しさん 投稿日: 01/11/12 16:12
>>281
Metaclassのメソッド(メタオブジェクトプロトコル)を「使う」
ことと、メタオブジェクトプロトコルを「変える」ことをごっちゃに
してないか?メタオブジェクトプロトコルを「変える」にはもう一段
メタがいるだろう、という話をしてるんだが?

>>282
ユーザーから見える言語仕様上、Rubyにメタクラスはないと言って
良いんじゃないの?実装上の都合(趣味)は知らん。プログラマから
見えなくて良いなら、OO的に書く必要もない。Java風にでもC++風に
でも、効率良いようにやれば良いんでは?


287 名前: デフォルトの名無しさん 投稿日: 01/11/12 19:38
>>286
まったく見えないわけでもないんだがな。

module Kernel
 def iclass
  class << self
   self
  end
 end
end

しかしメタクラスと中間クラスを混同しないように。
RubyのClassがメタクラス。中間クラスは実装の都合上の存在。


288 名前: Python 投稿日: 01/11/12 20:30
>>287
このendendendendが不恰好なんだよな・・・


289 名前: デフォルトの名無しさん 投稿日: 01/11/12 20:43
どうせやるんならさ、VBみたく
end class
とかのほうが良かったんじゃない?
はっきりいって読みにくいよ。


290 名前: デフォルトの名無しさん 投稿日: 01/11/12 20:54
読みにくさは我慢するけど、そういう実装にして速くなったの?


291 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:08
>>284
スレ違いですが
PerlにはRubyHacker'sGuideのような、ソースに即した解説は
ないのでしょうか?


292 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:12
>>288
ここでインデントがどーしただの言ーだすと
また無意味な闘争が起こるんだろうな、、、。
お互い、そーゆの、やめよー。


293 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:15
>>292
スクリプト言語にとっては本質的な問題だと思うぞ。


294 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:16
スレ違い


295 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:23
>>292
それだけ目に付くついうことだな。
実際、>>287のソースはインデントでかろうじて意味を
保っている様に感じる。


296 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:30
{}でない理由がわからん。


297 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:46
>>288>>293>>295>>296
292と294の言うとおりスレ違いだと思う。
これは、Rubyに限った話ではないし、、、
「{}、end、インデントのみ、どれが一番いいんだ?」
みたいな、別スレを立ててそこで議論すべし、、、
#不毛な議論になりそうだけど、、、


298 名前: デフォルトの名無しさん 投稿日: 01/11/12 22:50
C-like
module Kernel{
 def iclass{
  class << self {
   self
  }
 }
}
LISP-like
(module Kernel
 (def iclass
  (class << self self)))
VB-like
module Kernel
 def iclass
  class << self
   self
  end class
 end def
end module


299 名前: デフォルトの名無しさん 投稿日: 01/11/12 23:13
で、昔Python-likeが一番って結論になったんだよな。
Python-like。

module Kernel
 def iclass
  class << self
   self


300 名前: デフォルトの名無しさん 投稿日: 01/11/12 23:31
>>299
字下げで有効範囲を決めるのをPython-likeなんていうなよ。
Oberonの方が早いだろ。Haskellだってそうだし。


301 名前: デフォルトの名無しさん 投稿日: 01/11/12 23:44
>>300
ならC-likeとVB-likeについても同様。


302 名前: デフォルトの名無しさん 投稿日: 01/11/12 23:59
Cだって、1行の字下げはある。


303 名前: デフォルトの名無しさん 投稿日: 01/11/13 00:23
>>284
最近になって、まつもとさんとPerl開発者の一人の間接的な
対談記事を読みました。
Perl開発者から、なぜ構文木を長大なswitch文(rb_eval)で
たどって解析する方法をとったのかと、そんな意味のことを
訊ねられていたと思います。
それに対して、まつもとさんはPerlのように構文木のノードに
関数ポインタを埋め込む方法を試したが、思ったより速度が
上がらなかったと答えていたと思います。
(もちろん、自分の実装コードがまずかったのもあるだろうとも
言っていました)

僕はこの記事で初めてPerlの構文木とその評価方法を聞きました。
それまで、Rubyのソースしか見たことがなかったので。
僕も以前、インタプリタ型の小さな言語をRubyを参考に作りました。
オブジェクトやスタックフレームなど、大いに参考になり助かった記憶があります。
ただ、僕も構文木の評価、つまり解釈実行のルーチンだけは
長大なswitch文を使うのはどうかと迷いました。
結局、C++で書いていたので、構文木のノードの基底クラスに
virtual な評価関数をおくことにし、派生クラスの方の評価関数で
それぞれのノードに応じた処理をする、ということにしました。
下記のように。(まちがいがあるかも。擬似コードとして見てやってください)

しかし今考えると、下手くそなやり方だったと思います。
もっと良いやり方はなかったかと、、、。

class Node {
public:
virtual Value Eval( Node * ) = 0;
};

class NodeAdd : public Node {
public:
Value Eval( Node *node ) {
l = Eval(node->left);
r = Eval(node->right);
return l + r;
}
};


304 名前: デフォルトの名無しさん 投稿日: 01/11/13 00:30
アホですか?素直にジャンプテーブル使えや。


305 名前: 303 投稿日: 01/11/13 00:29
すみません、上の記事のアドレスは下記です。
http://www-6.ibm.com/jp/developerworks/linux/001027/ruby_qa.html
「宝石たちの語らい
Perl開発者 Simon Cozens氏から、Ruby開発者 まつもと ゆきひろ氏への質問とその回答」

すでに多くの方は読んでいるのでしょうが、、、。


306 名前: 303 投稿日: 01/11/13 00:36
>>304
すいません、厨房でした。
ただ、C++覚えたてで、仮想関数が使ってみたかったのです、、、。


307 名前: デフォルトの名無しさん 投稿日: 01/11/13 00:44
>>306
まつもと氏に言ったのだ。

構造化からON_GOTO外したのは間違いだなー。


308 名前: デフォルトの名無しさん 投稿日: 01/11/13 00:53
>>303
その記事は読みました。
matzも言っていますが、最近のコンパイラは最適化に優れているので、switch文の分岐はかなり高速になっていますから。

趣味や学習でつくったのなら構わないとは思います。
ただ仮想関数を使うと遅くなるでしょう。


309 名前: デフォルトの名無しさん 投稿日: 01/11/13 01:34
>>308
何をえらそーに。


310 名前: デフォルトの名無しさん 投稿日: 01/11/13 02:08
>>309
お前だよ、それ。


311 名前: デフォルトの名無しさん 投稿日: 01/11/13 02:59
このスレもいよいよ、つまんなくなってきたな。


312 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:03
Rubyの実装に疑問あり! ×
Rubyの存在に疑問あり! ○


313 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:05
Rubyの存在に疑問あり! ×
Rubyの存在に感心なし! ○


314 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:13
Rubyの実装に疑問あり! ×
HSPの実装に疑問あり!  ○


315 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:23
Rubyの実装に疑問あり! ○
Rubyの存在に疑問あり! ○
Rubyの存在に明日なし! ○


316 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:31
JAVAの存在の方が明日なし! ○


317 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:38
Mindに未来無し。今も無し。 ○


318 名前: デフォルトの名無しさん 投稿日: 01/11/13 03:56
このスレも終わったな。
もう書かんでいいぞ。


319 名前: デフォルトの名無しさん 投稿日: 01/11/13 04:25
とか言いつつageる>>318
書くなと言われると書きたくなる人(オレモナー)に
書かせようとしているに30ruby


320 名前: デフォルトの名無しさん 投稿日: 01/11/13 04:34
           ∧ ∧ ∧ ∧  ∧ ∧ ∧ ∧
  ∧ ∧     /(,,゚Д゚) (, ゚ρ゚) (, ゚ω゚) (*゚д゚) ̄⌒ヽー
  (, ゚д゚)⊃┳━∪∪━∪∪━∪∪━∪∪━⊂∪━┳ ΛΛ
 ヽ/   | . ┃  このスレは終了しました!      ┃(゚д゚;)_、
 (__∪  ). ┻━━━━━━━━━━━━━━━━┻ `uuuu
 ゙゙゙゙゙゙゙゙゙゙゙                             ゙゙゙゙゙゙゙゙゙
↓↓↓新スレはこちら↓↓↓
http://game.2ch.net/test/read.cgi/gamedev/1005313791/


321 名前: デフォルトの名無しさん 投稿日: 01/11/13 08:27
どうでもいいけど大きなswitchってコンパイルすると
ジャンプテーブル使ったコードになるよね。


322 名前: デフォルトの名無しさん 投稿日: 01/11/13 13:09
Cでそれ以外にジャンプテーブルってどう書くの?
関数へのポインタ配列?(遅そう…)


323 名前: デフォルトの名無しさん 投稿日: 01/11/13 13:34
何で遅いの?
アドレスロード+callだけじゃん。


324 名前: デフォルトの名無しさん 投稿日: 01/11/13 13:39
このスレ終わり、書かんでよろし。
新スレはPerl実装。


325 名前: デフォルトの名無しさん 投稿日: 01/11/13 13:42
>>323
CPUのプリフェッチ/パイプライン処理を詰らたりはするがな (藁


326 名前: デフォルトの名無しさん 投稿日: 01/11/13 13:44
>>305
だいぶ昔の記事だな。
まつもとの言うこと、あてになるのか?


327 名前: デフォルトの名無しさん 投稿日: 01/11/13 15:11
>>325
それは、ジャンプテーブルじゃなくてフラットなコードに展開しろってこと?
そんなことしてる処理系は存在しないだろ


328 名前: デフォルトの名無しさん 投稿日: 01/11/13 16:03
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          | こ、このスレ さ、さむいモナ〜
   Λ_Λ  ∠_____________
  (;´Д`)
 ( ( つ ⊂ ))
   〉 〉く く
( (__)(_.)) ...ガクガク


329 名前: デフォルトの名無しさん 投稿日: 01/11/13 17:45
callしたらreturnもしなきゃいけないんだよ。まずそのぶんjumpより遅くなる。

switchと違って局所変数を共有するわけには行かないから、インタプリタのス
タックポインタなんかは大域変数を使うか、引数で渡さなきゃなんない。
switchだとレジスタを見れば良いだけだった場合でもね。

レジスタに変数が割り当てられてたら、Cのコンパイラはレジスタをいちいち
退避/復帰するコードを出すだろうし。


330 名前: デフォルトの名無しさん 投稿日: 01/11/13 19:41
tail call セヨ。


331 名前: デフォルトの名無しさん 投稿日: 01/11/13 20:12
>>330
ワラタ
一回飛んだら戻らないのか。
それともSchemeで書くのか?


332 名前: デフォルトの名無しさん 投稿日: 01/11/13 21:52
C での tail call は御大も挑戦しておられる。
ttp://www.research.microsoft.com/Users/simonpj/Papers/spineless-tagless-gmachine.ps.gz でもながめテロ。


333 名前: デフォルトの名無しさん 投稿日: 01/11/13 21:59
STGマシンなら出てすぐ読んだが、それでRubyインタプリタ書けってか?
どう考えても巨大switchの方が速いだろ。

それはともかく、Cでのtail callなら
ttp://linux.rice.edu/~rahul/hbaker/CheneyMTA.html
も面白いよ。


334 名前: デフォルトの名無しさん 投稿日: 01/11/13 22:03
>>331

何かあると「guileで再実装しようか」って、まつもとゆきひろ氏
の口癖だった気が...


335 名前: デフォルトの名無しさん 投稿日: 01/11/13 22:11
もしかして Guy L. Steele Jr. の Rabbit も出てすぐに読んだクチでしょうか????


336 名前: デフォルトの名無しさん 投稿日: 01/11/13 22:19
巨switch賛成。
メンテナンスが意外と楽だし。


337 名前: sage 投稿日: 01/11/13 23:12
>>335
            RABBIT:
        A Compiler for SCHEME
         (A Dialect of LISP)

           A Study in

        Compiler Optimization

          Based on Viewing
          LAMBDA as RENAME
             and
        PROCEDURE CALL as GOTO

        using the techniques of

Macro Definition of Control and Environment Structures
      Source-to-Source Transformation
        Procedure Integration
             and
          Tail-Recursion

か。読んだよ。出てすぐじゃないが(そんな歳じゃない)。
しかし長い名前の論文だね。内容は面白かった。
これが修論だって言うんだからイヤんなるよね。


338 名前: デフォルトの名無しさん 投稿日: 01/11/14 00:08
>>337 なんかカッコいいなぁ。
sageはミスってるけど・・・

2年前は挫折したがあるいは今ならRubyのソース読めるだろうか。
明日からがんばってみるか。


339 名前: デフォルトの名無しさん 投稿日: 01/11/14 00:33
まっちゃんって天才?秀才?凡人?電波?


340 名前: デフォルトの名無しさん 投稿日: 01/11/14 01:28
Ruby はインタプリタのリファレンス実装としての価値があるのか。
Pascal みたいだな。


341 名前: デフォルトの名無しさん 投稿日: 01/11/14 01:40
リファレンス実装って何?


342 名前: デフォルトの名無しさん 投稿日: 01/11/14 02:36
   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) |
  (6       つ  |
  |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |      /__/ /  < 反面教師としてなら、価値がある
/|         /\   \______________


343 名前: デフォルトの名無しさん 投稿日: 01/11/14 02:46
RABBIT論文(11MBデカイ!と思ったら紙をスキャンしたビットマップだ)
ftp://publications.ai.mit.edu/ai-publications/pdf/AITR-474.pdf


344 名前: デフォルトの名無しさん 投稿日: 01/11/15 01:15
age


345 名前: デフォルトの名無しさん 投稿日: 01/11/21 13:16
>>341
age


346 名前: デフォルトの名無しさん 投稿日: 01/11/21 13:19
>>341
言語のことだろ。多分。
リファレンス実装じゃない方はバイトコード。


347 名前: デフォルトの名無しさん 投稿日: 01/11/21 15:13
>>346



348 名前: デフォルトの名無しさん 投稿日: 01/11/21 15:58
>>346
違うよ。例として参照する実装っていうだけの意味だよ。


349 名前: デフォルトの名無しさん 投稿日: 01/11/29 06:22
けっきょく


350 名前: デフォルトの名無しさん 投稿日: 01/11/29 06:56
南極


351 名前: shige 投稿日: 01/11/29 07:01
   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) |
  (6       つ  |
  |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |      /__/ /  < Ruby以外は全て糞
/|         /\   \______________


352 名前: デフォルトの名無しさん 投稿日: 01/11/29 07:21
アアアアアアアアアアアアアアアアアアア
アアアアアアアア
       アアアアアア
 アアアア             アアアアアアア
     アアアアアアアアアア
     アアアアアアアアア
     アアアアアアアア
     アアアアアアア
     アアアアアア
     アアアアア
     アアアア
     アアア
     アア
     ア


353 名前: デフォルトの名無しさん 投稿日: 01/11/29 07:43
かなりミスった

アアアアアアアアアアアアアアアアア
アアアアアア
       アアアアア
               アアアアアアアアアア
 アアアアアアアアアアア
     
            アアアアアアア
           アアアアアアア
          アアアアアアア
         アアアアアアア
        アアアアアアア
       アアアアアアア
       アアアアアアア
       アアアアアアア
        アアアアア
         アアア
          ア


354 名前: shige 投稿日: 01/11/29 14:20
>>353
二つともミスってるよ。
つまらんからもうやんなくていいよ。


355 名前: shige ◆3MSu.p0M 投稿日: 01/11/29 22:17
>>354 偽物ウザイよ。ヴォケ


356 名前: デフォルトの名無しさん 投稿日: 01/12/03 08:04
pppppppp


357 名前: デフォルトの名無しさん 投稿日: 01/12/03 08:05
pppoe


358 名前: デフォルトの名無しさん 投稿日: 01/12/03 10:25
これでKusakabeとか来たら終わりだな。


359 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:37
るびびびびびび


360 名前: >358 投稿日: 01/12/23 23:59
糞はC onlyだから大丈夫


361 名前: デフォルトの名無しさん 投稿日: 01/12/25 22:31
るびって読み方が書いてあるやつだよね!


362 名前: ルビ知識 投稿日: 01/12/25 22:51
印刷業界では活字のサイズごとに宝石の名前を付けていたんだよ!
振り仮名のサイズはルビーって呼ばれてたんだよ!
それが転じて振り仮名そのものをルビっていうようになったんだよ!


363 名前: デフォルトの名無しさん 投稿日: 01/12/26 17:35
正直、HTMLの<ruby>とかぶってるのは嫌げ


364 名前: デフォルトの名無しさん 投稿日: 02/01/19 06:32
<RUBY><RB>日本人</RB><RP>(</RP><RT>チョッパリ</RT><RP>)</RP></RUBY>



365 名前: デフォルトの名無しさん 投稿日: 02/01/27 12:30
Rubyの過去のバージョン(ver.0.x)って入手できますか?
現行バージョンと比べて研究してみたいので(ソースを読んだり、走らせたりして)。
特に最初期のRubyに関心があります。
ご存知の方、是非教えていただきたく思います。



366 名前: デフォルトの名無しさん 投稿日: 02/01/27 12:33
クサカベっていい年してCしかしらないの?


367 名前: デフォルトの名無しさん 投稿日: 02/01/27 13:10
>>365
大学のftpサイトあたりに落ちてるんじゃない?


368 名前: デフォルトの名無しさん 投稿日: 02/01/27 13:34
クリスチャン松本がんばれ!


369 名前: 365 投稿日: 02/02/02 12:22
すみません、探してみたのですが見つかりませんでした。
Rubyの過去のバージョンってもう無いのでしょうか?
どうしても入手したいので、知ってる方教えてください。
切にお願いします。
どうかどうかお願いします!
だれか助けて〜!



370 名前: デフォルトの名無しさん 投稿日: 02/02/02 12:37
MLで聞けよ


371 名前: デフォルトの名無しさん 投稿日: 02/02/02 15:43
そして>>365はMLで

subject:探しています


372 名前: デフォルトの名無しさん 投稿日: 02/02/02 16:15
>>369
1.0 より前って 1997 年以前だからなあ。
おそらく 1.0 が公開リリースなので見つからないのだと思う。
まつもと氏に直接頼むべし。

いつのまにか filez.com も fast ftp search もサービスやめていることに気付いた。
他に FTP 探せるサーチエンジンは何があるかな。


373 名前: デフォルトの名無しさん 投稿日: 02/02/02 21:08
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Tcl


374 名前: デフォルトの名無しさん 投稿日: 02/02/02 23:41
http://groups.google.com/groups?q=Ruby+0.95&selm=x3ag4nm7qn.fsf%40ix-02.nagoya.caelum.co.jp&rnum=1
>begin 644 ruby-0.95.tar.gz
><uuencoded_portion_removed>
‥‥‥‥googleメ。



375 名前: デフォルトの名無しさん 投稿日: 02/02/03 05:36
>>332 超遅レスすまんが、
Haskellの先生もMicrosoft Researchですか。
Microsoftは現代の客家なのだろーか?
ちょっと、Microsoftとコンピュータ・サイエンスの関係考えると怖いものがあるが、
IBM,ATT時代もこんな感じだったのかもしれん。


376 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:06
RUby、将来的に破綻しそうな気がしてならない。


377 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:11
お前みたいな粘着アンチがいるからな。


378 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:12
まるで、まだ破錠してないような言い方…


379 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:34
>>377
お前みたいなバカな盲信者がいるからRubyは馬鹿にされるんだ。

残念だと思うがRubyの実装が全く望ましい状態で無いのは事実だ。
使いもしないで喜んでる馬鹿には解らんのかもしれないが、
使ってれば心配にもなるだろ。


380 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:41
>>379 はぁ? お前みたいな低能にはもう何もいう気にもならん。


381 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:47
残念だと思うがRubyの実装が全く望ましい状態で無いのは事実だ。
使いもしないで喜んでる馬鹿には解らんのかもしれないが、
使ってれば心配にもなるだろ。


382 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:48
残念だと思うがRubyの実装が全く望ましい状態で無いのは事実だ。
使いもしないで喜んでる馬鹿には解らんのかもしれないが、
使ってれば心配にもなるだろ。


383 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:48
残念だと思うがRubyの実装が全く望ましい状態で無いのは事実だ。
使いもしないで喜んでる馬鹿には解らんのかもしれないが、
使ってれば心配にもなるだろ。


384 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:48
380は死ね


385 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:49
380はアフォ



386 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:50
飽きっぽいにも程があるぞ(ワラ


387 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:50
わけわからん。なんだこれは


388 名前: デフォルトの名無しさん 投稿日: 02/02/05 21:52
-------------------------------------------------------
         終了
-------------------------------------------------------


389 名前: デフォルトの名無しさん 投稿日: 02/02/05 23:27
まぁ、Rubyですから。


390 名前: デフォルトの名無しさん 投稿日: 02/02/05 23:40
コンパイルできねえのかよ、と思ったりもするが。


391 名前: デフォルトの名無しさん 投稿日: 02/02/05 23:43
>>390
Java はコンパイルできるのに遅いと貶されますね。


392 名前: デフォルトの名無しさん 投稿日: 02/02/05 23:45
>>391
VMつかってる言語と比べるのはどうかと思うが。


393 名前: デフォルトの名無しさん 投稿日: 02/02/06 03:16
Ruby も 2.0 Rite で VM 使いますが。


394 名前: デフォルトの名無しさん 投稿日: 02/02/06 03:38
>>393
むむむ、 >>391 が言ってるのは
普通にコンパイルする言語 と Javaのコンパイル
だと思うので、Rubyを出されても・・だ。


395 名前: デフォルトの名無しさん 投稿日: 02/02/23 22:15
Riteってもう手に入るの?



396 名前: デフォルトの名無しさん 投稿日: 02/02/23 23:09
>>395
まだ書き始めたばかりだそうで。
http://www.rubycolor.org/r/200202b.html#20


397 名前: デフォルトの名無しさん 投稿日: 02/02/24 01:51
未完っぽいな。


398 名前: デフォルトの名無しさん 投稿日: 02/02/24 02:20
うーん、パロットだっけ?PerlやPythonの。Riteはそれと同じようなもの?


399 名前: デフォルトの名無しさん 投稿日: 02/02/24 04:29
>>398
ParrotはPerl6。Pythonは.pycとか。Riteは前から開発していたRubyVMを乗っけた新バージョン……では?
RubyのVMはRuby i18n(だっけ?)と同じ場所にあったと思うけど、どこかは。


400 名前: 400! 投稿日: 02/02/24 04:31
    今だ!400ゲットォォォォ!!

      ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄        (´´
            /■\  )     (´⌒(´
         ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
               ̄ ̄  (´⌒(´⌒;;
           ズザーーーーーッ


401 名前: デフォルトの名無しさん 投稿日: 02/02/25 01:18
>>399
PerlとPythonの両方ともParrot使うって話なかった?エイプリルフールねた?


402 名前: デフォルトの名無しさん 投稿日: 02/03/02 09:32
おーむ


403 名前: デフォルトの名無しさん 投稿日: 02/03/02 12:30
>>401
ねたから出たまことだけど、Perl以外の言語で実装は進んじゃいない。
http://www.linuxjournal.com//article.php?sid=5854


404 名前: デフォルトの名無しさん 投稿日: 02/03/02 17:49
Rubyスレアゲまくってるの誰だよ


405 名前: デフォルトの名無しさん 投稿日: 02/03/05 22:58
まつもとさんが雑誌で
RubyVMはJavaVMを参考にしたから、当然おそくなったって
いってたけどJVMってそんなにだめ?
実装面からおしえて


406 名前: デフォルトの名無しさん 投稿日: 02/03/05 23:15
つーかそこまでわかってんだから自分で調べろよ


407 名前: デフォルトの名無しさん 投稿日: 02/03/06 03:04
おしえて!


408 名前: デフォルトの名無しさん 投稿日: 02/03/06 04:12
>>405
JVM (まんまの仕様)が Ruby の VM として相応しくないといっているだけかと。


409 名前: デフォルトの名無しさん 投稿日: 02/03/06 11:37
スタックマシンなのかRVMも?


410 名前: デフォルトの名無しさん 投稿日: 02/03/07 09:22
RubyVMもすたっくマシンです、当然おそいっす。


411 名前: ruby 投稿日: 02/03/10 02:34
まつもと氏は自分の実装の下手さかげんをJVMのせいにしてるのですね
なるほど
ところでRuby厨房は自分の使ってる言語の中身にも無知なのですね
もっともその言語自体が無知の集大成みたいなものですが



412 名前: デフォルトの名無しさん 投稿日: 02/03/10 02:49
405 の話は、世代別 GC を作った木山氏の友人が実装してる VM への
コメントじゃないの?


413 名前: デフォルトの名無しさん 投稿日: 02/03/10 07:01
405の言っていることは、LinuxMagazine2001/12のまつもとさんの記事のことか?
そこには実験的に作ったVM、現在のRubyよりも三倍近く速くなるらしいと書いてあるが、
今のRubyが遅すぎるだけなんちゃうかと。

>>411
まつもと氏が言いたかったのは、静的言語向けのJVMを参考にしても、
動的言語であるRubyを実装するのはあまり参考にならないのでは?って事じゃないの?
メーリングリストでも、似たような発言見かけたことがあったような。
記憶あやふやでスマソ。


414 名前: デフォルトの名無しさん 投稿日: 02/03/10 13:54
RubyにはJIT(といわずbytecodeコンパイラとか)ないの?
不要なシンボルの探索減らせば結構速くなるもんだけど。


415 名前: デフォルトの名無しさん 投稿日: 02/03/10 20:53
411 のような無知で嫉妬深いやつはほっとくとして、
>>414
RubyのJITは
http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/
にある。ちょっと古いけど。でもRubyのような動的言語では
ほとんど速くはならないらしい。


416 名前: デフォルトの名無しさん 投稿日: 02/03/28 23:31
RVM ばんざい!!
うそだよん


417 名前: デフォルトの名無しさん 投稿日: 02/03/29 00:37



418 名前: デフォルトの名無しさん 投稿日: 02/03/30 10:08
VMよりもgcの起動回数減らす方が速くなると思うよ


419 名前: デフォルトの名無しさん 投稿日: 02/04/03 22:43
Smalltalk80の本をもらったのですが
すごくおもしろいです。
前は立ち読みしてもさっぱりだったのですが、
Rubyをやりだした今読むと、なぜか理解しやすいのです。






420 名前: デフォルトの名無しさん 投稿日: 02/04/06 00:07
formulaってどうなったの?
作者の水野氏の怒りがC++のソースコードに埋め込まれていた。
「隣の白痴カップルのXXX音がうるせえ」とか(笑)
Rubyだけがなぜこんなに性交したんでしょ?


421 名前: デフォルトの名無しさん 投稿日: 02/04/06 21:10
Formulaの作者はカナ−リ逝ってたと思う。サイト見て引いたし。

そ−ゆういみではmatzは地味でいいかも。



422 名前: デフォルトの名無しさん 投稿日: 02/04/06 23:04
> C++なぞ問題外(^^;
これがなきゃもっと好感度があっただろうに…。


423 名前: デフォルトの名無しさん 投稿日: 02/04/07 18:10
>>422
いいこといった。

>「他言語との比較」ページをあまりにも真面目にとらえる人が多いので

真面目に捉えてるんじゃなくて、センスが悪いんだよと誰かこっそり教えてあげてほしい。



424 名前: デフォルトの名無しさん 投稿日: 02/04/11 23:03
formulaのソースで
Hashの高速化に線形リストではなく、2分木を組み合わせるという
「ワザ」を知ったウチは厨房ですか?
この作者は前にCマガで「自作スクリプト言語の製作」を
やってたけど、ネストしたブロック構造を持つ言語の記号表の実装で、
Hashテーブルをリストでつないでいくというのはいい方法なのかな?



425 名前: デフォルトの名無しさん 投稿日: 02/04/11 23:35
formulaって何よ?


426 名前: デフォルトの名無しさん 投稿日: 02/04/12 00:03
Rubyのendが苦手って人はEmacs使ってないんだろうな...


427 名前: デフォルトの名無しさん 投稿日: 02/04/12 13:26
>>426
Emacs使ってるけど、endは嫌だよ。
それにendの問題はタイプが面倒とかじゃなくて、可読性だと思う。
beginとかendの類は{とか}が入力&表示できない環境では意味があるけど、
今さら新たな言語で使うものじゃないだろ。


428 名前: デフォルトの名無しさん 投稿日: 02/04/12 14:58
そう思うんなら{}使えばいいじゃん。使えるんだし。
俺はend好きだけど


429 名前: 427 投稿日: 02/04/12 18:50
>>428
他人のソース読む時に気になるんだよ。


430 名前: デフォルトの名無しさん 投稿日: 02/04/12 23:55
end ってそんなに可読性悪いかなぁ
好みにもよるのかもしれないけど


431 名前: デフォルトの名無しさん 投稿日: 02/04/13 00:54
>>430
end が読みにくいと思う人がいるだろうことは認めるけど、気にならないという人
だって大勢いる。あと C とか Perl とかしか使ったことが無いのなら慣れの問題も
あるだろうし。俺は {} はシフトキーを押さなければいけないのがイヤ。

>>428
if や while などの制御構造では {} は使えない。


432 名前: デフォルトの名無しさん 投稿日: 02/04/13 05:47
>>431
可読性云々という話なら、Hashとかにしか{}を使わない僕は
どうなるんでしょう? 僕はどちらかというと、

* 引数がないのに括弧を付けてメソッド呼び出し。 foo()とか。
* インデントがTAB文字のみで行われている。
* requireなど予約語っぽいメソッドに括弧を付けるか付けないか。
僕は最近付けなくなりました。
* ''と""の使い分け。最近使い分けるようになりました。
* Hash.newと{}、Array.newと[]。僕は後者を使います。

の方が気になりますが、羅列してみたらどうでも良いことばかりですね。



433 名前: デフォルトの名無しさん 投稿日: 02/04/13 17:20
do〜endだとメソッドチェーンができない…と書こうとして今試したらできた。
前からそうだったっけ?

a = [1, -2, -2, 0]

a.sort{|x,y| x.abs <=> y.abs}.uniq

a.sort do |x,y|
 x.abs <=> y.abs
end.uniq


434 名前: デフォルトの名無しさん 投稿日: 02/04/13 18:57
>>433
過去にメソッドチェーンが出来ない頃があったんですか?
いやマジで質問なんですが。



435 名前: デフォルトの名無しさん 投稿日: 02/04/13 19:52
>>434
たぶん無い。
バージョン 1.0 より前の頃なら知らんが。


436 名前: デフォルトの名無しさん 投稿日: 02/04/14 23:39
だからformulaって何よ?


437 名前: デフォルトの名無しさん 投稿日: 02/04/15 21:37
Formulaばんざい


438 名前: デフォルトの名無しさん 投稿日: 02/04/17 21:29
googleしる!





439 名前: デフォルトの名無しさん 投稿日: 02/04/17 23:50
正直、構文問題はプリプロセッサを使うとかすれば
どうにでもできるんで、個人的にはどうでもいいね。



440 名前: デフォルトの名無しさん 投稿日: 02/04/21 15:44
疑問を持たれるだけいいよな。
相手にもされない言語多数...


441 名前: shige 投稿日: 02/04/21 15:59
はぁ?


442 名前: デフォルトの名無しさん 投稿日: 02/04/21 16:09
shigeってなにげにウザイ


443 名前: デフォルトの名無しさん 投稿日: 02/04/21 16:22
Rubyの構文がどうだこうだと言っている奴は、
Rubyのソースに手を入れて自分用にカスタマイズすりゃあ
良いんじゃないの。そういうのリリースしてもいいんだろ、
Rubyはフリーソフトウェアなんだから。


444 名前: デフォルトの名無しさん 投稿日: 02/04/21 16:33
>>442
>なにげにウザイ
・・・っいぇdさl:いtyえれりぇryh5blk;うひmなうねあじ
ッ邸浮かさ、あのシゲノスサマジえrklhj6hj63466554;ぉうぇいhr
RRRRつぶいおびおびお!! Ruby¥1!!!!!


445 名前: デフォルトの名無しさん 投稿日: 02/04/21 16:33
っっっうぇ5TTぶbvyrbrう゛ぇう!!!Rbuby!Ruby!!!!



446 名前: デフォルトの名無しさん 投稿日: 02/04/21 16:35
dwdwdd


447 名前: デフォルトの名無しさん 投稿日: 02/04/21 16:36
fewefwefwefwefwefwefwefwefwefw


448 名前: デフォルトの名無しさん 投稿日: 02/04/21 17:19
Javaユーザは十数年前の埼玉県の幼女連続誘拐殺人事件の犯人宮崎何某にうりそっくりな連中で満ち溢れているのだろうか?



449 名前: デフォルトの名無しさん 投稿日: 02/04/21 20:32
>>439
正直、それじゃあRubyとは呼べない。
define-syntaxとかないしね。


450 名前: デフォルトの名無しさん 投稿日: 02/04/21 22:39
>>440
>疑問を持たれるだけいいよな。
>相手にもされない言語多数...

どんなのがある?
できればマジレス希望



451 名前: デフォルトの名無しさん 投稿日: 02/04/21 22:54
rubyのendはlispの閉じ括弧と同じ気持ち悪さがある


452 名前: デフォルトの名無しさん 投稿日: 02/04/21 22:58
beginがないから?


453 名前: デフォルトの名無しさん 投稿日: 02/04/21 23:37
>>450
秀丸のマクロとか


454 名前: デフォルトの名無しさん 投稿日: 02/04/21 23:37
Uvaとか


455 名前: デフォルトの名無しさん 投稿日: 02/04/21 23:49
秀丸とUvaの作者発見!


456 名前: デフォルトの名無しさん 投稿日: 02/04/21 23:56
pythonとか。


457 名前: デフォルトの名無しさん 投稿日: 02/04/22 00:09
pythonてなんて読むんですかぷひょん?


458 名前: デフォルトの名無しさん 投稿日: 02/04/22 00:11
ぴちょん


459 名前: デフォルトの名無しさん 投稿日: 02/04/22 00:52
ぴしょん?


460 名前: デフォルトの名無しさん 投稿日: 02/04/22 09:36
ぴっとふぉん


461 名前: マジレスしちゃだめ? 投稿日: 02/04/22 20:53
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=python&sw=0


462 名前: デフォルトの名無しさん 投稿日: 02/04/23 23:13
>>456
Pythonはスレもあるが。


463 名前: デフォルトの名無しさん 投稿日: 02/04/26 20:51
Formula >>>>>>>>>>>>>>>>> Ruby
おわかり?
あほどもくん


464 名前: デフォルトの名無しさん 投稿日: 02/04/28 13:19
RiteってCで書かれているの?
C++使わないのか?
なぜ?
ところでRubyの良スレ他にないの?


465 名前: デフォルトの名無しさん 投稿日: 02/04/28 13:33
いくらRubyでもC++は使わないよ。


466 名前: デフォルトの名無しさん 投稿日: 02/04/28 14:19
Ruby++って無いの?


467 名前: デフォルトの名無しさん 投稿日: 02/05/01 02:15
>>464

Rubyについて
http://pc.2ch.net/test/read.cgi/tech/1012096319/

とか。



468 名前: デフォルトの名無しさん 投稿日: 02/05/01 09:29
Ruby.NETは出るんでしょうか


469 名前: デフォルトの名無しさん 投稿日: 02/05/03 13:22
>>468
出る、かも
わけないか


470 名前: デフォルトの名無しさん 投稿日: 02/05/03 13:54
WSHに対応してた言語は.NETにも対応しそうな気が


471 名前: デフォルトの名無しさん 投稿日: 02/05/03 21:16
NETRubyはどうよ?




472 名前: デフォルトの名無しさん 投稿日: 02/05/07 13:01
水野氏(Formula)>>>>まつもと(ruby)
というところでいいかな


473 名前: デフォルトの名無しさん 投稿日: 02/05/07 16:17
Formulaって何?



474 名前: デフォルトの名無しさん 投稿日: 02/05/07 18:20
>>473
http://www.animax.co.jp/program/m_cyberformula11.html
これの事じゃないか?


475 名前: デフォルトの名無しさん 投稿日: 02/05/07 18:22
http://www2d.biglobe.ne.jp/~Pca02/anime/gpx/gpx.html
こっちの方が詳しそう…。


476 名前: デフォルトの名無しさん 投稿日: 02/05/09 22:18
>>465
今のRubyのソースを見るとC++で書いた方が、スッキリすると思うのだが。
オブジェクトの実装で、RBasic構造体をメンバ変数として持っているところなども、継承を使った方が自然だし。
例外処理にsetjmpとlongjmpを使っているところも、tryとcatchで書けるのではないか。
ゴミ集めもnewの再定義で何とかなるのではと思えるのだが。
オブジェクト指向言語の方が実装しやすいのではないか。JRubyのように。
Perl6もC++で書いていると聞くし。


477 名前: デフォルトの名無しさん 投稿日: 02/05/09 22:31
まつもと氏曰く、
>ムーアの法則は30年間成立し続けている。
>人間のためにマシンの性能を浪費してもかまわない。


478 名前: デフォルトの名無しさん 投稿日: 02/05/09 22:37
機械にこびへつらう実装は卒業。ぷ


479 名前: デフォルトの名無しさん 投稿日: 02/05/09 22:52
>>476
移植性が落ちるからじゃない。いまのRubyは
かなり古いUNIXでも動いてるみたいだし。関数
定義がK&Rスタイルなのも移植性が最大の理由でしょ。

それに、いまのRubyのソースで複雑なのはなんと
言ってもパーサとイテレータ周り。C++はそこの助け
にはならない。それ以外の部分は、確かにちょっと
トリッキーだけど、難しくはない。



480 名前: デフォルトの名無しさん 投稿日: 02/05/10 14:08
ホントか?>>479 ANSIスタイルで書かれたオープンソース言語で、Rubyより多くのプラットホームをサポートしているものはいくらでもあるぞ。


481 名前: デフォルトの名無しさん 投稿日: 02/05/10 15:05
>>477-478
機械にこびへつらう実装は卒業ねぇ・・・
これだけ時代が進んで、マシンの性能を浪費する言語にあふれても
いまだにCのような言語がメインを張ってるという現実も
あるんだけどね。。。


482 名前: デフォルトの名無しさん 投稿日: 02/05/10 17:57
>>481
Cがメインを張っているのは事実。
RubyインタプリタもCでかかれてる。
でも話はそこで終わらないでしょ。
たとえば、perlの出現がどれだけ世界を変えたかってな。


483 名前: デフォルトの名無しさん 投稿日: 02/05/10 22:25
FormulaはC++で書かれてますよ〜ん。
奇麗なソースかどうかは見ればわかりますよ〜ん。
でも、Rubyと違って、POSIX thread使ってますよ〜ん。
けど、ガベコレ無いんですよ〜ん。



484 名前: qaz 投稿日: 02/05/10 22:43
競争の無いソフトだと、何で書こうが関係ないって気がするね。
でも、ユーザーは選択肢があると、「あっちのほうが軽い」
とか言って移り気するからね。


485 名前: デフォルトの名無しさん 投稿日: 02/05/11 12:28
formulaって何?


486 名前: デフォルトの名無しさん 投稿日: 02/05/11 14:39
formula1=F1


487 名前: デフォルトの名無しさん 投稿日: 02/05/11 16:48
Rubyのソースをさっき、ちらっと見たが、例外発生はソースコードのエラー処理でも、rb_raise()を使うことで統一されてるようだな。
だとすると、try{}catch{}で書き直す必要性は高くないだろう。
それより、なんでハッシュ(st.c)に他人のソースを流用してきてるんだ。
よくできているけど、これが唯一無比だとも思えんのだが。
まつもとなら、これぐらい作れるだろう。



488 名前: デフォルトの名無しさん 投稿日: 02/05/11 22:01
age


489 名前: デフォルトの名無しさん 投稿日: 02/05/11 22:21
sage


490 名前: デフォルトの名無しさん 投稿日: 02/05/12 11:55
>>487
たいていのRubyヲタは、ソースを読んだこともない(読めない)ので
聞いても無駄だって
そんなこともわからんか


491 名前: るびきち 投稿日: 02/05/12 12:40
君とか、ね。(苦笑)



492 名前: デフォルトの名無しさん 投稿日: 02/05/12 13:35
Rubyは実装に問題があるの?
他に理由があると思うが。


493 名前: デフォルトの名無しさん 投稿日: 02/05/12 13:36
了解。


494 名前: デフォルトの名無しさん 投稿日: 02/05/12 13:37
あう



495 名前: デフォルトの名無しさん 投稿日: 02/05/12 20:39
VBやJAVAは実務で活躍しているし、Delphiも
数は少ないとはいえ業務システムに使われているね。
フリーウエアでも古くはWin版AirCractから・・
rubyってパシリみたいな使用例しかしらないのよ。

私の本業である制御系やオープン系業務システムもRubyが最適でしょうか?
仕事では一度も聞いたこと無いのですが。

の回答マダァ?



496 名前: デフォルトの名無しさん 投稿日: 02/05/12 20:44
>>495
なに言ってるの?
Rubyしか選択しないじゃん
今はBIOSやファームウェアもRubyで書く時代だよ?


497 名前: デフォルトの名無しさん 投稿日: 02/05/12 21:27
>>495
仕事に使う言語くらい自分で見極めたら?
っていう空気を読め。


498 名前: デフォルトの名無しさん 投稿日: 02/05/12 21:29
>>495
Ruby以外でいいんとちゃう?


499 名前: デフォルトの名無しさん 投稿日: 02/05/12 21:41
既出レスだろうが、ベターperlっていうことでruby、
っていうのが一般的な使用例だと思う。


500 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:01
>>499 Ruby信者


501 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:11
ずさーああああっっー!!!!


502 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:13
500=サヨク。
まじめそうなレスにのみからんで茶化すから。



503 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:20
ベターなのは事実だろう
とか書いてみたりする。


504 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:26
Perl の代用にもならないといわれていた頃からすると
だいぶ評価が上がってるな。


505 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:55
まつもと氏のそもそもの開発の動機がベターperl、ベターpython。
そうなってあたりまえ。


506 名前: デフォルトの名無しさん 投稿日: 02/05/12 22:58
まつもとが開発?(プ


507 名前: デフォルトの名無しさん 投稿日: 02/05/12 23:00
まつもとが開発。


508 名前: デフォルトの名無しさん 投稿日: 02/05/12 23:29
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


509 名前: デフォルトの名無しさん 投稿日: 02/05/12 23:31
最近、>>508みたいな変なやつ増えたね。
Ruby/Pythonに恨みある系ですか


510 名前: デフォルトの名無しさん 投稿日: 02/05/12 23:36
最近、>>508みたいな変なやつ増えたね。
Ruby/Pythonに恨みある系ですか



511 名前: デフォルトの名無しさん 投稿日: 02/05/12 23:56
最近、>>508みたいな変なやつ増えたね。
Ruby/Pythonに恨みある系ですか


512 名前: デフォルトの名無しさん 投稿日: 02/05/13 00:11
最近、>>508みたいな変なやつ増えたね。
Ruby/Pythonに恨みある系ですか


513 名前: デフォルトの名無しさん 投稿日: 02/05/13 00:20
matsumoto ha yoko dori?


514 名前: デフォルトの名無しさん 投稿日: 02/05/13 00:58
効率。


515 名前: デフォルトの名無しさん 投稿日: 02/05/13 01:31
最近、>>508みたいな変なやつ増えたね。
Ruby/Pythonに恨みある系ですか



516 名前: デフォルトの名無しさん 投稿日: 02/05/14 09:14
最近、>>508みたいな恋なやつ増えたね。
Ruby/Pythonに恨みある系ですか



517 名前: 479 投稿日: 02/05/14 18:53
遅レスですが。

>>480
実際にちょっと前までK&Rだけの環境で使ってる事例があったわけよ。たしか
SunOS4だったかな。すでに動いてるのならわざわざはずすことはないじゃない?
つまり >>479 は「移植性が(今と比較して)下がってしまう」、というつもりでかいた。

あと一応補足すると、まつもとさんがK&Rの宣言のほうがすき、という理由も
あげられてる。だから確かに移植性「だけ」ではないね。そういう点では例としては
よくなかった。

>>487
そこより優先するとこがいくらでもあるからだと思う。優先順位の問題。なおせば
よくなるとこなんていくらでもあるんだから(Rubyに限らず)、問題がでかいところ
からやらなきゃ。現在、速度的なボトルネックはGCとrb_eval。論理的なボトルネックは
評価器 (eval.c) のアーキテクチャ。ライセンスならば正規表現エンジン。安定性
ならスレッド。そんで、GCは世代別GCが入るとかなり改善される。正規表現は
鬼車で解決。そうしたら後は評価器とスレッド周りでしょ。それをやろうとしてるのが
Ruby 2.0 (Rite) だな。



518 名前: デフォルトの名無しさん 投稿日: 02/05/15 11:57
>>517
rb_eval(動的評価)は、VMでは「その場で」中間コードをヒープに吐くのかな?


519 名前: デフォルトの名無しさん 投稿日: 02/05/15 15:18
FIXNUMの即値で速度が上がるか試したけど、
数%の改善にしかならないみたいね。ちょっとがっかり。


520 名前: デフォルトの名無しさん 投稿日: 02/05/16 02:00
rubyの速度が改善されようがされまいがどうでもいい、っていうruby使いも多いと思われ。
perlの速度を越えることはできんし。


521 名前: 479 投稿日: 02/05/16 04:09
>>518
ん、どういうことを言ってるんだろう? 動的評価とは何をさしてる?
バイトコードをファイルに保存できるかという意味なら、たぶんそう
なると思う。

「その場で」というのが「実行中に構文解析するのか?」という意味
なら、今もこれからも、構文解析はプログラムを読んだらすぐに
全部まとめてやる。ただ今はその結果として構文木を作るけど、今度は
バイトコードを作るっていう違い。



522 名前: デフォルトの名無しさん 投稿日: 02/05/16 11:16
518と479以外は、ソース読んだことも無いアホウrubyistなのか


523 名前: デフォルトの名無しさん 投稿日: 02/05/16 11:20
君も、ね(苦笑)


524 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:11
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。




525 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:29
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。







526 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:29
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。



527 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:30
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。



528 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:30
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。



529 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:31
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。



530 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:32
>>521
> 今もこれからも、構文解析はプログラムを読んだらすぐに
> 全部まとめてやる。

アホですか。
ソースの中身以前に、Rubyインタプリタの動作原理自体がわかっていないようだな。
evalメソッドの引数式には何がくるかは、実際に実行されるまでわからない。
だから、実行時に構文解析器を呼び出して、構文木に変換し、それをrb_eval()で辿って実行する。
この時、初めて現れたローカル変数は、コンパイル時にオフセットが確定する通常のローカル変数のようには実装できない。そのためにリストで管理する「動的ローカル変数」が必要となるわけだ。
上記のようなことは、一度、簡単なスクリプト言語でも作ってみれば、すぐに気づく性質のことだがな。
MLでのやりとりを羅列しているだけでは、わかるまいが。


531 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:34
なんだコレ?


532 名前: デフォルトの名無しさん 投稿日: 02/05/17 02:55
>>531
恒例の荒らしなので、反応しない様に。


533 名前: 524 投稿日: 02/05/17 18:00
>>532
525以降の書き込みは俺ではないよ。
Aちゃんねるにたむろしてる奴等ってレベル低いんだな。
Ruby派、アンチ双方とも、もっとまともな批判はできないのかね。
というか、何か作ってみたらどうだ。



534 名前: デフォルトの名無しさん 投稿日: 02/05/17 18:09
>533
あたりまえのことで必死になるなって。
そして自分をもっと大切にな。


535 名前: デフォルトの名無しさん 投稿日: 02/05/17 18:36
Cプログラマはコンパイラのソースを読み直せ。


536 名前: デフォルトの名無しさん 投稿日: 02/05/17 19:15
何のコンパイラ?


537 名前: デフォルトの名無しさん 投稿日: 02/05/17 19:22
535はあたまがさかな


538 名前: デフォルトの名無しさん 投稿日: 02/05/17 19:23
Rubyのスレってなんでこんなに気持ち悪いの?


539 名前: るびきち 投稿日: 02/05/17 19:29
>>538
俺様がいるから



540 名前: デフォルトの名無しさん 投稿日: 02/05/17 19:53
さかな、さかな、さかなー♪
さかなーをー食べーるとー♪


541 名前: デフォルトの名無しさん 投稿日: 02/05/17 20:23
rubyに嫉妬するのはやめようぜ。


542 名前: shige 投稿日: 02/05/17 20:36
mattakuda



543 名前: デフォルトの名無しさん 投稿日: 02/05/17 23:25
>>539-542
異常者のすくつですね。


544 名前: デフォルトの名無しさん 投稿日: 02/05/18 03:13
shige って誰??



545 名前: 479 投稿日: 02/05/18 03:59
>>524 = >>533 ?
どうなってんのかよくわからないけど、せっかくだから返事しとく。

うーん、なんか誤解されてると思う。「実行中に構文解析するのか」という
書き方が悪かったんだろうけど、これは >>518 が「rb_eval(動的評価)」って
言うから、昔のインタプリタみたいに構文解析と評価が混じってるような
感じを想定してるのかと勘繰ってみただけ。つまり、「評価器が構文解析
するのか?」という問いであって、「評価中に構文解析が起こるか?」という
一般的な問いじゃない。そりゃもちろんeval呼べばそのときは構文解析するし
requireでもloadでもrb_eval_stringでも、構文解析はやるに決まってる。
言いたかったのは、たとえばevalなら、「その引数の文字列に関しては」
構文解析をするのは一番初めにまとめて、ただ一回だけだろ、ということ。

ところでローカル変数云々って言う話があるけど、それは違うんでない?
eval のときだって文字列は同じパーサを通るんだから、ローカル変数の
オフセットを計算できないわけないじゃない。eval で導入したブロック変数
はその eval の中からしか見えないから、コンパイル時に参照を解決可能。
eval から eval 外で定義した変数を参照した場合も、「上」のスコープは
厳密に定まるからコンパイル時に計算可能。Procまで含めても、すべての
ローカル変数参照はコンパイル時に解決可能だと思うが。



546 名前: デフォルトの名無しさん 投稿日: 02/05/18 04:07
>>536
>>535 じゃないけど。CプログラマだからCじゃない?
なんにしても >>535 にはさんせいだ。



547 名前: デフォルトの名無しさん 投稿日: 02/05/18 04:52
>>544
Ruby関連スレにどこからともなく現れる粘着荒らし。
一人にしては数が多すぎるので複数人が使ってるらしい。



548 名前: デフォルトの名無しさん 投稿日: 02/05/18 13:28
>>544
Ruby関連スレにどこからともなく現れる粘着荒らし。
一人にしては数が多すぎるので複数人が使ってるらしい。



549 名前: デフォルトの名無しさん 投稿日: 02/05/18 14:26
>>545
>「その引数の文字列に関しては」
文字列から毎回解析入ると思うけど。
これをふまえると、後半の文は全部間違いだよ。

つーか、rb_evalに渡されるのが変数だった場合を考えてないね。
定数文字列ならその様な最適化を入れる事は可能かもしれないけど、
あまり意味は無い気がする。動的に文を変えられるのが売りなんだから。


550 名前: デフォルトの名無しさん 投稿日: 02/05/18 14:31
>>549
これがLISPのS式だと、話は違ってくるんだよね。
文字列->S式に変換されるのは最初の読みこみ時の1回だけ。
インタプリタであれば、実行コストは変わらない。
コンパイルはできないけど。


551 名前: デフォルトの名無しさん 投稿日: 02/05/18 14:45
>>550
ただ、LISPにもマクロ展開という同様の問題がある。
この場合は単純に実行前に完全に展開してしまうか、
マクロ展開後、結果をキャッシュしておくことで解決できる。
これはLISPマクロが静的変換だから可能なこと。
動的に評価結果が変わる可能性のある、
rb_evalみたいなのに対しては適用できない。


552 名前: shige 投稿日: 02/05/18 18:30
>>544
Ruby関連スレにどこからともなく現れる粘着荒らし。
一人にしては数が多すぎるので複数人が使ってるらしい。






553 名前: デフォルトの名無しさん 投稿日: 02/05/18 18:37
誤爆か?


554 名前: 479 投稿日: 02/05/18 19:07
>>549
あ、やっと食い違ってるところがわかったよ。ひとつのevalについて、を
構文上の一つととったわけね。そうじゃなくて、eval呼び出し一回につき
引数に渡される文字列を解析するのは一回ということ。引数に渡される
文字列が定数だろうとなんだろうと、それぞれ別のeval呼び出しなら
それはまったく別の話。

それに、コンパイル時に決定できる、ていうのは、evalの過程で行われる
コンパイルも含んでるんだよ? evalはコンパイル+評価でしょうが。
なんかファイルで最初の一回のコンパイルだけをコンパイルと呼んでる
みたいだけど、なんで区別するの? Rubyでは区別しようがないじゃん。

という条件なら、(評価時でなく)コンパイル時にローカル変数の参照先は
決定できる、といってもなんも変じゃないでしょ。それにさ、dvarがリストで
ある必然性は全然ないよ。ローカル変数と同じ実装はできるはず。

> つーか、rb_evalに渡されるのが変数だった場合を考えてないね。

つーか、こっちの書き方も悪かったけどさ、そっちもまず eval と rb_eval は
きっちり区別して書いてくれ。



555 名前: デフォルトの名無しさん 投稿日: 02/05/18 19:09
>545 必死だな。



556 名前: shige 投稿日: 02/05/18 19:43
Ruby!!!!!!!
http://www68.dns.ne.jp/~bbs2/upload3/helen/OB0004480.gif


557 名前: デフォルトの名無しさん 投稿日: 02/05/18 19:45
RubyからCへのコンパイルって可能なの?
rb2cはただインタプリタをインライン展開してるだけだよね。

もしRubyが本当に、同じ文を実行するたびに構文解析から
やり直さなきゃならないような言語なら、Cへのコンパイルも
バイトコードへのコンパイルも原理的に不可能だね。



558 名前: デフォルトの名無しさん 投稿日: 02/05/18 20:58
>>557
コンパイラも内蔵しちゃえばいいのさ。


559 名前: デフォルトの名無しさん 投稿日: 02/05/18 21:05
>>558
わかってないのに痛いレスはやめれ


560 名前: デフォルトの名無しさん 投稿日: 02/05/18 21:10
へえ。Rubyってforを100万回まわったら、その中身を100万回
構文解析し直すのか。腐った言語だね。


561 名前: デフォルトの名無しさん 投稿日: 02/05/18 21:11
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


562 名前: デフォルトの名無しさん 投稿日: 02/05/18 21:56
>>560
そういう無駄な構文解析が必要だと主張しているやつはいるが、ただの厨房。
いくらまつもとでもそんな糞な実装はしない。


563 名前: デフォルトの名無しさん 投稿日: 02/05/18 22:10
どうした急に実装について語り出したぞみんな
いいぞ!いいぞ!いいぞ!



564 名前: デフォルトの名無しさん 投稿日: 02/05/18 22:55
>>563
酔っ払いですか?


565 名前: デフォルトの名無しさん 投稿日: 02/05/19 01:11
黄河は水たまりを叱りはしない
matzは厨房を叱りはしない


566 名前: デフォルトの名無しさん 投稿日: 02/05/19 01:27
SQLシコシコやってるような坊やが、Ruby語るなっつーの。


567 名前: デフォルトの名無しさん 投稿日: 02/05/19 01:29
SQLで出来ることがRubyにはできないから仕方がない。


568 名前: デフォルトの名無しさん 投稿日: 02/05/19 02:56
rubyはなんでもできます。


569 名前: デフォルトの名無しさん 投稿日: 02/05/19 04:33
SQLデータベースをRubyで誰かが作ればな。
でも結局SQLで書くわけだろ。


570 名前: デフォルトの名無しさん 投稿日: 02/05/19 05:24
>>569
面白い事を言う人だ。


571 名前: デフォルトの名無しさん 投稿日: 02/05/19 06:43
なんでSQL?


572 名前: デフォルトの名無しさん 投稿日: 02/05/19 10:28
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SQL


573 名前: デフォルトの名無しさん 投稿日: 02/05/19 12:59
良スレのよかん


574 名前: デフォルトの名無しさん 投稿日: 02/05/19 13:59
>>573
きみウザイ


575 名前: デフォルトの名無しさん 投稿日: 02/05/19 14:22
なんで?>>574
GadflyみたいのRubyでつくろうって話じゃないのか?
http://gadfly.sourceforge.net/


576 名前: デフォルトの名無しさん 投稿日: 02/05/19 15:39
SQLは手続き型言語じゃないんだから、
単に「Rubyでライブラリ作って終り」じゃだめ。

関係代数的な検索条件を書いたときに、
それをどういう順序でやったら速いか最適化する
optimizerが重要。

で、DBエンジンとトランザクションモニタとSQL
パーザとオプティマイザをRubyで用意したとして、
検索は順序をいちいち指定したりせず
高水準な関係代数で書きたいから、SQL使うことに
なるだろ?

まあ、実際にはJDBCみたいなのをRubyで作れば良い
と思うけど。(でもやっぱり検索条件はSQLで書くこ
とになる。)


577 名前: デフォルトの名無しさん 投稿日: 02/05/19 15:59
データベース使ってると良く思うんだが、
SQL みたいな糞言語はやめて、直接関係代数式で書かせてほしいよ。

言語が Ruby であるプロジェクトのプロジェクト名を求めよ。
( (δ言語 = ”Ruby” プロジェクト) [ プロジェクト名 ]


578 名前: デフォルトの名無しさん 投稿日: 02/05/19 16:07
>>577
それは同意だな。
SQLは選択と結合と射影が直交してない。


579 名前: デフォルトの名無しさん 投稿日: 02/05/19 16:10
クソ言語同士、お似合いだよ


580 名前: デフォルトの名無しさん 投稿日: 02/05/19 16:10
このスレは「RubyでSQLを実装するスレ」になりました。


581 名前: デフォルトの名無しさん 投稿日: 02/05/19 16:23
db = DataBase.open("dbfile")
tb1 = db.getTable("顧客名簿")
tb2 = db.getTable("発注伝票")

query =
 tb1.join("顧客ID",
     tb2.select { |row|
      row.getColumn("日付") == curMonth
     },
     "顧客ID").project(tb1, "顧客ID", tb1, "顧客住所,
              tb2, "伝票No", tb2, "合計金額")
resultSet = query.exec()



582 名前: デフォルトの名無しさん 投稿日: 02/05/20 00:39
Formula is no.1!!
Ruby KUSO(w



583 名前: デフォルトの名無しさん 投稿日: 02/05/20 00:47
自分のスレッドももてないような言語の何処がいいんだか。



584 名前: デフォルトの名無しさん 投稿日: 02/05/20 01:07
>>583
Rubyはアンチのせいで糞スレばかりにされてますが。


585 名前: デフォルトの名無しさん 投稿日: 02/05/20 19:32
>>583
2ちゃんにスレがあることの何処が嬉しいんだか。


586 名前: デフォルトの名無しさん 投稿日: 02/05/20 19:40
>>585
なんだかんだいってわりと情報が集まるからな。玉石混交にせよないよりはまし。


587 名前: デフォルトの名無しさん 投稿日: 02/05/20 20:00
なんでSQLの話題になったのかが疑問なんだが。


588 名前: デフォルトの名無しさん 投稿日: 02/05/20 20:11
566=妄想坊や。


589 名前: デフォルトの名無しさん 投稿日: 02/05/20 23:36
Formulaは水野氏の先見性が注ぎ込まれたすばらしい言語です
rubyはまつもとの稚拙さがにじみ出ている税ドロ言語



590 名前: デフォルトの名無しさん 投稿日: 02/05/21 00:38
Formulaって何?


591 名前: デフォルトの名無しさん 投稿日: 02/05/21 00:40
>>590
Rubyには関係ありません。


592 名前: デフォルトの名無しさん 投稿日: 02/05/21 00:52
>>590
ガソリンかタイヤか、とにかく車関係の何かだったきがするヨ。


593 名前: デフォルトの名無しさん 投稿日: 02/05/21 01:45
Formulaって先進どころかかなーり後ろ向きな
ダサイ言語だと思うんだが。

つか、あれ使うならC使ってればいいっしょ。


594 名前: デフォルトの名無しさん 投稿日: 02/05/21 09:28
ネタをネタと見抜けない人は
(Rubyを利用するのは)難しい。


595 名前: デフォルトの名無しさん 投稿日: 02/05/21 11:57
>>595
GCないから、やつらはlocalmalloc()などという
alloca(2)のようなものを自慢してたよ(ぷっ)



596 名前: デフォルトの名無しさん 投稿日: 02/05/21 12:27
>>595
Rubyの前近代的なGCよりマシでは?
まつもと氏は最近のGC関連の論文を読んだことがないようですね。
ま、期待はしてませんが(笑)


597 名前: デフォルトの名無しさん 投稿日: 02/05/21 12:34
論文読んだだけで自分はできる風ですか、もう荒らしでもなんでもいいよ、
デフォルトの名無しさんだっけ?あんたもうこの世にいらない!


598 名前: デフォルトの名無しさん 投稿日: 02/05/21 13:12
今度はあんたもうこの世にいらないスレですか?SQLはどうなったんだ?


599 名前: デフォルトの名無しさん 投稿日: 02/05/21 13:43
>>598
なんでSQL?


600 名前: デフォルトの名無しさん 投稿日: 02/05/21 14:00
>>597
荒らし相手にあつくなってもしょうがないですよ。
彼らはどうせ 2ch の外には出てこれないし、こんなところで彼らがどんなに
騒いでたって何にもならないし、好きにさせとけばいいんじゃないですか。
それにしても、まったくおもしろくもないネタばかりでつまらないですけどね。


601 名前: デフォルトの名無しさん 投稿日: 02/05/21 14:02
んなこと知るか。>>599 最初にRubyはSQLよりエラいとか言い出したやつに聞いてくれ。


602 名前: デフォルトの名無しさん 投稿日: 02/05/21 14:19
アホらし>>601
つまらんネタにひっかかって騒いでるんじゃねえよみっともない。
わざとやってるのかもしれんが、おもしろくねえよ。


603 名前: デフォルトの名無しさん 投稿日: 02/05/21 15:29
だったら一々反応するな>>602 age


604 名前: デフォルトの名無しさん 投稿日: 02/05/21 15:34
クソすれsage


605 名前: デフォルトの名無しさん 投稿日: 02/05/21 17:11
Formulaの作者、水野だっけか。HPみるとかなりなkittyだよな。
人が「2ちゃんねらー」と聞いて思い浮かべるネガティブなイメージ
の体現者という感じ。


606 名前: デフォルトの名無しさん 投稿日: 02/05/21 18:56
>>605
kitty?
おまえさんのように?(ワラ


607 名前: デフォルトの名無しさん 投稿日: 02/05/21 19:03
確かにあのページ見てるとキショイ。
2ちゃんねるへのハマリ方があまりにも型にはまってる。



608 名前: デフォルトの名無しさん 投稿日: 02/05/21 20:13
ウヴァをおもいだしたYO!


609 名前: デフォルトの名無しさん 投稿日: 02/05/21 23:15
どこのHP? >>607


610 名前: デフォルトの名無しさん 投稿日: 02/05/21 23:26
これかな?
ttp://thor.prohosting.com/~junmz/


611 名前: デフォルトの名無しさん 投稿日: 02/05/22 00:34
妙な電波が出ているな。。猫の背景写真がちょっとコワイ。


612 名前: 609 投稿日: 02/05/22 00:56
>>610
やっぱ狂ってるよ
Cマガはあんなのに特集記事(しかもスクリプト言語の製作)を
依頼したのか
もちコンパイルする気にもならなんだ


613 名前: デフォルトの名無しさん 投稿日: 02/05/22 00:59
Rubyist = 中傷大好き



614 名前: デフォルトの名無しさん 投稿日: 02/05/22 01:08
>>613
悪いか?自分に素直な言語なんだよ。


615 名前: デフォルトの名無しさん 投稿日: 02/05/22 01:42
悪いよ。


616 名前: デフォルトの名無しさん 投稿日: 02/05/22 11:53
if ($Rubyist == Kasu) ???


617 名前: デフォルトの名無しさん 投稿日: 02/05/22 12:13
(eq? rubyist kasu) => #f


618 名前: デフォルトの名無しさん 投稿日: 02/05/23 07:30
(equal? rubyist kasu) => #t


619 名前: デフォルトの名無しさん 投稿日: 02/05/23 14:23
Formulaスレをつくっていいですか?(ワラ



620 名前: matz曰く(一部略) 投稿日: 02/05/24 21:45
http://www-6.ibm.com/jp/developerworks/linux/001027/ruby_qa.html
問い:Rubyの'eval'関数は一つの大きな'switch'文で実現されているようですが
パーフォーマンスへの影響は出ますか?

答え:関数ポインタを構文木に埋め込む(threaded code)手法を試験的に実装したことがありますが、
結果は期待したほどパフォーマンスが改善せず、かえって若干悪化しました。
この理由は、おそらく最近のCコンパイラではswitch文での分岐は十分に高速化されており、
ポインタを経由した関数呼び出しにともなうスタック操作のコストの方が
高かったからではないかと推測しています。



621 名前: デフォルトの名無しさん 投稿日: 02/05/24 21:47
>>619
そうしてくれれば遠慮なく叩けるな。
「スレ違い」と言われる心配がないから。


622 名前: デフォルトの名無しさん 投稿日: 02/05/24 21:50
>>620
1が可哀想だろ。


623 名前: デフォルトの名無しさん 投稿日: 02/05/24 21:55
構文木に関数へのポインタを埋め込むことをthreaded codeとは
普通言わないね。


624 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:01
>>623
そうでも無い


625 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:03
>>624
そうでもない


626 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:09
threaded codeってのは
 while (1) { 関数呼び出し...}
みたいなメインループがないのが大きな特徴だから、
関数ポインタを使った時点でthreaded codeじゃないと
思う。



627 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:15
http://dontaku.csce.kyushu-u.ac.jp/~shiba/study/b4/semi/9-4.html


628 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:20
>>626
そうか?

void (*opcode)()[] = {
op00, op01, ...
};

void op00()
{
...;
opcode[getbyte()]();
}

void op01()
{
...;
opcode[getbyte()]();
}

関数ポインタ使うぞ?


629 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:33
>>627
そう。
threaded codeってのは「スタックを完全に平らにする技術」のはずなのに
Cだと関数呼び出しのループになっちゃうんだよね。

ほんとうは間接ジャンプ
goto *ptr++;
みたいなことができないと実装できない(アセンブラだと簡単)。

>>628
で、スタックがあふれたらどうするの?


630 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:34
この際、threaded codeの
言葉上の定義は大した問題じゃないと思うのだが。


631 名前: 628 投稿日: 02/05/24 22:36
>>629
そういうことか、納得した。
スタック云々については知らなかった


632 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:38
>>628なんかの例は末尾呼び出しの最適化でなんとかならないの?
gccだけまともに動くってのもさびしいよね。
それか、多分スタックフレームを*作らない事ができる*処理系なら
ちゃんとうごくんじゃないかなあ。末尾最適化と同じ様な事だけど。


633 名前: 簡潔におしえれ 投稿日: 02/05/24 22:39
厳密な意味でのthreaded codeは、C言語では実装できないって事?


634 名前: デフォルトの名無しさん 投稿日: 02/05/24 22:46
>>633
continuation passing style(CPS)
ってのがあるらしい。


635 名前: 簡潔におしえれ 投稿日: 02/05/24 22:52
物知りっすねー。


636 名前: デフォルトの名無しさん 投稿日: 02/05/24 23:38
>>635
あ、CPSとかカッコつけて言っても、結局実装を見ればスタックじゃなくて
ヒープを伸ばしていく類の一種です。
(ホントは実装のことを言うんじゃないらしいけど)
これも、
while(){関数呼び出し}
や巨大switchで作れます。

でもこれだとWindowsのコールバック関数内とかで
例外throwが起きたりすると困るんだよね。
コールバックを強制するAPI呼ぶ段階で既にthreaded codeとは呼べないし。


637 名前: デフォルトの名無しさん 投稿日: 02/05/25 10:12
threaded codeといえばFORTHを思い出す‥‥。



638 名前: sage 投稿日: 02/05/26 10:28
sage


639 名前: デフォルトの名無しさん 投稿日: 02/05/26 15:08
rubyの問題っちゅうのはこうゆうのだな。言語仕様の細かいとこをあーだ、こーだ言うやつばっかしで、かっちりとしたアプリケーションを作る奴がいつまでたっても出てこない。
そのへんに転がってるコードは、1行読んで正規表現で処理の「Perlで書いたって同じじゃん」みたいのばっかりだし。


640 名前: デフォルトの名無しさん 投稿日: 02/05/26 15:31
>>639
perlで書かれた「アプリケーション」って何がある?


641 名前: デフォルトの名無しさん 投稿日: 02/05/26 15:51
>>640
おまえ、それで反論のつもりなのか? 大丈夫か?


642 名前: デフォルトの名無しさん 投稿日: 02/05/26 15:52
>>640
Kent (笑)


643 名前: デフォルトの名無しさん 投稿日: 02/05/26 16:07
>1
ルビーの実装が気にくわないなら、それを直した新言語作れば?
そいつが使えるなら、おまえ、神になれるよ、マジで。


644 名前: デフォルトの名無しさん 投稿日: 02/05/26 16:22
>>643
(-1 ガイシュツ)


645 名前: デフォルトの名無しさん 投稿日: 02/05/26 17:03
perlで書かれた「アプリケーション」って何がある?



646 名前: デフォルトの名無しさん 投稿日: 02/05/26 17:05
namazu


647 名前: デフォルトの名無しさん 投稿日: 02/05/26 17:10
アセンブラで書ける事はC言語でも書けると思っている、
おぼっちゃんが大勢いるって事をハケーン


648 名前: デフォルトの名無しさん 投稿日: 02/05/26 17:29
>>647
アセンブラでしか書けないこと以外は C 言語でも書けますが何か?


649 名前: デフォルトの名無しさん 投稿日: 02/05/26 18:11
goRuaとかquickmlとか。


650 名前: デフォルトの名無しさん 投稿日: 02/05/26 18:35
rushとか


651 名前: sage 投稿日: 02/05/26 19:39
sage


652 名前: デフォルトの名無しさん 投稿日: 02/05/26 21:16
>>648
C言語でしか書けないこと意外はLISPでも書けますが何か?


653 名前: デフォルトの名無しさん 投稿日: 02/05/27 09:17
>>652
LISPでしか書けないこと以外はHSPでも書けますが何か?


654 名前: デフォルトの名無しさん 投稿日: 02/05/27 16:34
>>639
実際は車庫と洗車場の往復なのに、エンジンのカタログスペックにやたらうるさいやつとかいるだろ。あれと同じ文化なわけよ。本人たちがそれで満足なんだから、いいんじゃナイの。


655 名前: 名無しさん@お腹いっぱい。 投稿日: 02/05/27 22:26
>>653
HSPでしか書けないこと以外はHaskellでも書けますが何か?


656 名前: デフォルトの名無しさん 投稿日: 02/05/27 22:28
マシン語でしか書けないこと意外はマクロアセンブラでも書けますが何か?


657 名前: デフォルトの名無しさん 投稿日: 02/05/27 22:29
Haskellでしか書けないこと以外はDOSのバッチファイルで(以下略


658 名前: デフォルトの名無しさん 投稿日: 02/05/27 22:29
マシン語でしか書けないことをすべて書けないマクロアセンブラは糞ですがあ何か?


659 名前: デフォルトの名無しさん 投稿日: 02/05/27 22:40
アセンブラで書ける事は機械語でも書けると思っている、
おぼっちゃんが1人いるって事をハケーン


660 名前: sage 投稿日: 02/05/30 13:21
sage


661 名前: デフォルトの名無しさん 投稿日: 02/06/01 17:59
CINT C/C++ Interpreter
http://root.cern.ch/root/Cint.html


662 名前: デフォルトの名無しさん 投稿日: 02/06/01 18:09
CINT C/C++ Interpreter
http://root.cern.ch/root/Cint.html


663 名前: sage 投稿日: 02/06/06 22:30
sage


664 名前: デフォルトの名無しさん 投稿日: 02/06/06 22:53
アセンブラじゃなくてアセンブリじゃないの?


665 名前: デフォルトの名無しさん 投稿日: 02/06/06 23:20
http://www.google.co.jp/search?hl=ja&q=%83A%83Z%83%93%83u%83%89+%83A%83Z%83%93%83u%83%8A+%83A%83Z%83%93%83u%83%8B&btnG=Google+%8C%9F%8D%F5&lr=


666 名前: デフォルトの名無しさん 投稿日: 02/06/07 02:04
なるほど。アセンブり言語=アセンブる言語だったのカ!

花咲かじじい=花を咲かせるじじいとすれば、
アセンブら言語=アセンブらせる言語?なるほどニュアンスが違うな


667 名前: デフォルトの名無しさん 投稿日: 02/06/12 09:47
pupu


668 名前: デフォルトの名無しさん 投稿日: 02/07/10 17:57
RubyにPerlのInline.pmみたいなのはないの?
便利だと思うけんど。


669 名前: デフォルトの名無しさん 投稿日: 02/07/10 18:06
http://www.ruby-lang.org/en/raa-list.rhtml?name=CGenerator



670 名前: 669 投稿日: 02/07/10 18:09
書き忘れ。

Rubyist!
http://www.rubycolor.org/r/200111a.html#06_t1



671 名前: デフォルトの名無しさん 投稿日: 02/07/10 21:55
<<669-670 ありがとです!



2ちゃんねるは、ここのサーバを使ってるです。。。