【Ruby】「RubyはCで実装されている」 の意味は?
色んなところで見る「RubyはCで実装されている」というワード。
PHPもそう。
パーフェクトPHPにも「PHPはCで実装されている」とありました。
これ、いったい何を指すのか、
いまいち分からず師匠に相談してみました。
「Rubyの実装はC言語で書かれている(※1)」って、 どのフォルダの中を見れば、C言語で実装されていることをを感じる (理解するとまでは行かなくても)事ができるのでしょう? (※1)いまは、自分のPCに入っているMRIに話を限っています。
あるかもしらんけど、なんで?普通は見せる意味もないから、無いと思うよ。
C言語で書かれてますというのは、その後に続く文のほうが大事で、C言語で書かれているから何?かが大事。
多分 ObjectクラスをRubyで実装はしていないと思いますよ。
(大体、Rubyでどうやって実装するのかって問題があります)
なんかいまいち、言語が言語で実装されていると言うのが、 良く分からないと言うか、もやっとしていて。 例えば「組み込み系のクラス(例えばObjectクラス)」はrubyで記述されていません。 ⇒Rubyフォルダ内に「Object.rb」ファイルは存在しないことから、そう考えました。 なので、ObjectはC言語で実装されているのでは? じゃあ、コアクラスがX言語で実装されているとき、 その言語はXで実装されている、と表現されるのか。。?と疑問に思っています。
ちょっと頑張って説明しましょう。携帯から。
「いえいえ まずは考えます!」と師匠を押しとどめ、
改めて考え直し。
ObjectクラスをCで実装しているから、 Rubyインタプリタ(C言語をコンパイルした実行ファイル)が Objectクラスを理解できる、という流れですかね。 そうやって考えると、 インタプリタと組み込み系のクラス群はセットになりますね。 インタプリタがJavaで記述されていたら、組み込み系のクラス群は Javaで記述されていないといけない(Object.classになるのかな)
そうです。普通はそうなってます。
なんせ、組み込みっすから。ただ、言語のデザインによっては、X言語の基本的なクラスをX言語で記述するということも可能です。
例えば、 Java の StringクラスはJavaで書くことができます
なるほど 「標準ライブラリ」と「組み込み」の違いがぴんと来なかったのですが、 インタプリタが使うかどうかで考えると、違いが見えてきますね! 「RubyはCで実装されている」というのは、正確に言うと 「Rubyを評価できるプログラムをCで書いたよ」というだけで。 だから何って話ですね。その後につづく話があるのですね。
そうです。
Cで書かれてるから、チューニングとかできて早いですとか
Cで書かれてるけど、***です。とかそういうのがくる
なるほどね!
「RubyはCで実装されている」の意味が分かったよ!