重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

require 'open-uri'

file = open('http://www.google.co.jp')
p file.read
というソースコードで、コマンドプロンプトで実行した結果、
C:/samples/samples/09_02/library2.rb:3:in `initialize': Invalid argument @ rb_sysopen - http://www.google.co.jp (Errno::EINVAL)
from C:/samples/samples/09_02/library2.rb:3:in `open'
from C:/samples/samples/09_02/library2.rb:3:in `<main>'
という結果が帰ってくるのですが、なぜでしょうか?教えていただけると幸いです。
の所で、以下のURLの回答者が、
https://oshiete.goo.ne.jp/qa/14056720.html
で、「その open が何者だか、インタプリタが理解できなかったのでは?」と言っていますが、インタプリタではコンパイルの間違いですよね?教えて頂けると幸いです。

A 回答 (2件)

rubyは一般的にはインタプリタとして分類されています。


下記参照

コンパイラとは?インタプリタとの違いやプログラミング言語の種類、オンライン環境も紹介
https://x-tech.pasona.co.jp/media/detail.html?p= …

インタプリタとはなにか?「コンパイラ」との違いとインタプリタ言語の代表例
https://staff.persol-xtech.co.jp/hatalabo/it_eng …

しかしながら、rubyがJITコンパイルを採用するようになったので、
JITコンパイラは、実行時コンパイラと呼ばれることもあるそうです。
その意味では、インタプリタでなくコンパイラといっても良いのかもしれません。

rubyのJITコンパイラはYJITと呼ばれています。
【Ruby1.8以前から】Rubyの処理系とJIT【Ruby3.2のYJITまで】
https://qiita.com/wataru86/items/ab2d1b507c8d67c …
    • good
    • 0

前回、回答した者です。


いや、だから、そういうとこに拘るんじゃなくて、
そのコードでは、処理系が open を
どのオブジェクトの open メッソッドか判断できなかったんじゃないの?
って言われてることを理解しようよ。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています