Ruby(プログラミング言語)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
ルビー
Rubyロゴ.svg
パラダイムマルチパラダイム機能的命令型オブジェクト指向反射型
によって設計されたまつもとゆきひろ
デベロッパーまつもとゆきひろ他
初登場1995 ; 27年前 (1995
安定リリース
3.1.1 [1] ウィキデータでこれを編集する / 2022年2月18日; 9日前 (2022年2月18日
規律の入力アヒルダイナミック強い
範囲語彙的、時には動的
実装言語C
OSクロスプラットフォーム
ライセンスRubyライセンス
ファイル名拡張子.rb
Webサイトwww .ruby-lang .org
主な実装
Ruby MRITruffleRubyYARVRubiniusMagLevJRubyMacRubyRubyMotionMrubyIronRuby
に影響を受けた
Ada[2] Basic[3] C ++[2] CLU[4] Dylan[4] Eiffel[2] Lisp[4] LuaPerl[4] Python[4] Smalltalk [ 4] ]
影響を受ける
ClojureCoffeeScriptCrystalDElixirGroovyIoke[5] Julia[6] MirahNu[7] Ring[8] Rust[9] Swift [10]

Rubyは、複数のプログラミングパラダイムをサポートする、インタプリタされた高水準汎用プログラミング言語です。プログラミングの生産性とシンプルさに重点を置いて設計されました。Rubyでは、プリミティブデータ型を含むすべてがオブジェクトです。1990年代半ば日本のまつもとゆきひろ「マッツ」によって開発されました。

Rubyは動的に型付けされ、ガベージコレクションジャストインタイムコンパイルを使用します。手続き型オブジェクト指向関数型プログラミングなど、複数のプログラミングパラダイムをサポートします作成者によると、RubyはPerlSmalltalkEiffelAdaBASICLispの影響を受けていました。[11] [3]

歴史

初期のコンセプト

松本は、Rubyは1993年に考案されたと述べています。1999年のruby-talkメーリングリストへの投稿で、彼は言語に関する彼の初期のアイデアのいくつかを説明しています

私は、オブジェクト指向のスクリプト言語の可能性について同僚と話していました。私はPerl(Perl5ではなくPerl4)を知っていましたが、おもちゃの言語の匂いがしたので、本当に好きではありませんでした(まだあります)。オブジェクト指向言語は非常に有望であるように思われました。その時私はPythonを知っていました。しかし、それが本当のオブジェクト指向言語であるとは思わなかったので、私はそれが好きではありませんでした–オブジェクト指向機能は言語へのアドオンであるように見えました。15年間、言語マニアックでオブジェクト指向ファンとして、私は本物のオブジェクト指向で使いやすいスクリプト言語が本当に欲しかったのです。探しましたが見つかりませんでした。だから私はそれを作ることにしました。

松本氏は、Rubyの設計を、Smalltalkのようなオブジェクトシステム、高階関数に触発されたブロック、Perlのような実用的なユーティリティを備えた、単純なLisp言語のようなものであると説明しています。[13]

「ルビー」という名前は、1993年2月24日に松本と石塚圭樹との間で行われたオンラインチャットセッションで、その言語のコードが作成される前に付けられました。[14]当初、「コーラル」と「ルビー」の2つの名前が提案されました。松本は後の石塚へのメールで後者を選んだ。[15]松本は後に、「ルビー」という名前を選んだ要因を指摘しました。それは彼の同僚の1人の誕生石でした。[16] [17]

初期リリース

Ruby 0.95の最初の公開リリースは、1995年12月21日に日本の国内ニュースグループで発表されました。 [18] [19]その後、2日間でさらに3つのバージョンのRubyがリリースされました。[14]このリリースは、新しい言語の最初のメーリングリストで ある日本語の ruby-listメーリングリストの立ち上げと同時に行われました。

開発のこの段階では、オブジェクト指向デザイン、継承を持つクラス、ミックスインイテレータークロージャー例外処理ガベージコレクションなど、Rubyの以降のリリースでおなじみの機能の多くがすでに存在していました[20]

1995年にRuby0.95がリリースされた後、次の年にいくつかの安定したバージョンのRubyがリリースされました。

  • Ruby 1.0:1996年12月25日[14]
  • Ruby 1.2:1998年12月
  • Ruby 1.4:1999年8月
  • Ruby 1.6:2000年9月

1997年、Rubyに関する最初の記事がWebに公開されました。同年、松本はnetlab.jpに雇われ、フルタイムの開発者としてRubyに取り組んだ。[14]

1998年に、Rubyアプリケーションアーカイブは、Rubyの簡単な英語のホームページとともに松本によって立ち上げられました。[14]

1999年に最初の英語のメーリングリストであるルビートークが始まり、それは日本国外での言語への関心の高まりを示しました。[21]この同じ年に、松本と石塚圭樹は、1999年10月に日本で出版されたRubyに関する最初の本であるオブジェクト指向スクリプト言語Ruby (OS指向スクリプト言語Ruby)を書きました。 2000年代に日本語で出版されたRubyに関する約20冊の本。[14]

2000年までに、日本ではRubyがPythonよりも人気がありました。[22] 2000年9月、最初の英語の本、Programming Rubyが印刷され、後に自由に公開され、英語を話す人の間でRubyの採用がさらに広がりました。2002年の初め、英語のruby-talkメーリングリストは、日本語のruby-listよりも多くのメッセージを受信して​​いました。これは、日本語を話さない世界でRubyの人気が高まっていることを示しています。

Ruby1.8および1.9

Ruby 1.8は、最初は2003年8月にリリースされ、長期間安定しており、2013年6月に廃止されました。 [23]廃止されましたが、それに基づくコードはまだあります。Ruby1.8はRuby1.9と部分的にしか互換性がありません。

Ruby 1.8は、いくつかの業界標準の対象となっています。Rubyの言語仕様は、情報処理推進機構(日本政府機関)のオープンスタンダード推進センターが開発し、日本産業標準調査会(JISC)、国際標準化機構(ISO)に提出​​しました。2011年に日本工業規格(JIS X 3017)として承認され[24] 、2012年に国際規格(ISO / IEC 30170)として承認されました。 [25] [26]

2005年頃、Rubyで書かれWebフレームワークであるRuby on Railsと並行して、Ruby言語への関心が高まりました。Railsは、Rubyの認知度が高まっているとよく信じられています。[27]

2011年10月31日にリリースされたRuby1.9.3で有効になり、[28] RubyはRubyライセンスとGPLの下でのデュアルライセンスからRubyライセンスと2条項BSDライセンスの下でのデュアルライセンスに切り替わりました。[29] 1.9の採用は、多くの人気のあるサードパーティの宝石を書き直す必要がある1.8からの変更によって遅くなりました。Ruby 1.9では、1.8シリーズに比べて多くの重要な変更が加えられています。例:[30]

Ruby 2

Ruby 2.0は、Ruby1.9.3との完全な下位互換性を目的としていました。2013年2月24日の公式2.0.0リリースの時点で、既知の(マイナーな)非互換性は5つだけでした。[31] Ruby 2.0には、次のようないくつかの新機能が追加されました。

  • メソッドキーワード引数、
  • Module#prependクラスを拡張するための新しいメソッド、、
  • 記号の配列を作成するための新しいリテラル、
  • Enumerablesの遅延評価のための新しいAPI 、および
  • #to_hを使用してオブジェクトをハッシュに変換する新しい規則。[32]

2.1.0以降、Rubyのバージョニングポリシーはセマンティックバージョニングにより類似するように変更されました。[33]

Ruby 2.2.0には、スピードアップ、バグ修正、ライブラリの更新が含まれており、非推奨のAPIがいくつか削除されています。特に、Ruby 2.2.0では、メモリ処理に変更が加えられています。インクリメンタルガベージコレクター、シンボルのガベージコレクションのサポート、およびjemallocに対して直接コンパイルするオプションです。また、system()およびspawn()でvfork (2)を使用するための実験的なサポートが含まれており、 Unicode7.0仕様のサポートが追加されています。バージョン2.2.1以降、[34] PowerPC64でのRubyMRIのパフォーマンスが向上しました。[35] [36] [37]廃止または削除された機能には、callcc、DLライブラリ、Digest :: HMAC、lib / Rational.rb、lib / complex.rb、GServer、Logger :: Application、およびさまざまなCAPI関数が含まれます。[38]

Ruby 2.3.0には、Proc#callの変更、例外キーワードのソケットとIOの使用、Thread#name処理、デフォルトのパッシブNet :: FTP接続、stdlibからのRakeの削除など、多くのパフォーマンスの改善、更新、バグ修正が含まれています。[39]その他の注目すべき変更は次のとおりです。

  • すべての文字列リテラルをデフォルトでフリーズとしてマークする機能により、文字列操作のパフォーマンスが大幅に向上します。[40]
  • キーだけでなく、キーと値のペアを直接チェックできるようにするハッシュ比較。
  • nilの処理を容易にすることができる新しい安全なナビゲーション演算子 (たとえば、の代わりに、を使用できます)。&.if obj && obj.foo && obj.foo.barif obj&.foo&.bar
  • did_you_mean gemがデフォルトでバンドルされ、 NameErrorまたはNoMethodErrorで類似した名前の一致を自動的に提案するために起動時に必要になります
  • Hash#digArray#digを使用すると、深くネストされた値を簡単に抽出できます(たとえば、 Foo Bazの値をで取得できるようになりました)。profile = { social: { wikipedia: { name: 'Foo Baz' } } }profile.dig(:social, :wikipedia, :name)
  • .grep_v(regexp)これは、他の新機能に加えて、特定の正規表現のすべての否定的な例に一致します。

Ruby 2.4.0には、ハッシュテーブル、Array#max、Array#min、およびインスタンス変数アクセスのパフォーマンスが向上しています。[41]その他の注目すべき変更は次のとおりです。

  • Binding#irb:binding.pryと同様のREPLセッションを開始します
  • FixnumBignum整数クラスに統合
  • 文字列は、ASCIIだけでなく、Unicodeの大文字小文字のマッピングをサポートします
  • 新しいメソッド、Regexp#match?は、Regexp#matchのより高速なブールバージョンです。
  • スレッドのデッドロック検出で、バックトレースと依存関係を持つスレッドが表示されるようになりました

Ruby 2.5.0でのいくつかの注目すべき変更には、レスキュー確実なステートメントが周囲のdo-endブロックを自動的に使用すること(追加のbegin-endブロックの必要性が少ない)、 yield_selfを使用したメソッドチェーン、ブランチカバレッジとメソッドカバレッジ測定のサポートなどがあります。 Hash #sliceHash# transform_keysを使用したハッシュ変換さらに、ブロックパスの高速化(3倍高速)、ミューテックスの高速化、ERBテンプレートの高速化、一部の連結メソッドの改善など、パフォーマンスが大幅に向上します。

Ruby 2.6.0でのいくつかの注目すべき変更には、実験的なジャストインタイムコンパイラ(JIT)とRubyVM :: AbstractSyntaxTree(実験的な)が含まれます。

Ruby 2.7.0でのいくつかの注目すべき変更には、パターンマッチング(実験的)、REPLの改善、圧縮GC、および位置引数とキーワード引数の分離が含まれます。

Ruby 3

Ruby3.0.0は2020年のクリスマスにリリースされました。[42] Ruby 3x3として知られています。これは、Ruby2.0と比較してRuby3.0でプログラムが3倍高速に実行されることを意味します。[43]そしていくつかは2から3への道の中間リリースですでに実装されていました。3x3を達成するために、Ruby 3はプログラムを高速化するためにJust-In-TimeコンパイラであるMJITを装備していますが、まだ最適化の準備ができていませんRuby on Railsやプログラマーのようなワークロードは、Ruby3.1がさらに改善されるのを待たなければなりません。MJITはデフォルトで無効になっており、実行時にフラグによって有効にすることができます。

Ruby 3.0のもう1つの目標は、並行性と2つのユーティリティFiber Schedulerを改善することであり、実験的なRactorが目標を容易にします。[42] Ractorは、共有オブジェクトではなくメッセージを交換することで実現されるため、軽量でスレッドセーフです。

Ruby 3.0では、静的分析用のRubyプログラムのタイプを記述するためのRBS言語が導入されています。[42]一般的なRubyプログラムから分離されています。

Ruby3.0にもいくつかの構文の拡張とライブラリの変更があります。[42]

Ruby 3.1は2021年のクリスマスにリリースされました。[44]実世界のビジネスアプリケーションのパフォーマンスを向上させるために、Shopifyによって開発された新しいJust-In-TimeコンパイラであるYJITが含まれています。新しいデバッガーも含まれています。このリリースには、構文の強化とその他の改善がいくつかあります。FTPSMTPIMAP、およびPOPのネットワークライブラリは、デフォルトのgemからバンドルされたgemに移動されます。[45]

バージョン表

バージョン 最新の小さなバージョン 初期リリース日 サポートフェーズの終了 セキュリティメンテナンスフェーズの終了
古いバージョン、メンテナンスされていません:1.0 NA 1996-12-25 [46] NA NA
古いバージョン、メンテナンスされていません:1.8 1.8.7-p375 ​​[47] 2003-08-04 [48] 2012-06 [49] 2014-07-01 [50]
古いバージョン、メンテナンスされていません:1.9 1.9.3-p551 [51] 2007-12-25 [52] 2014-02-23 [53] 2015-02-23 [54]
古いバージョン、メンテナンスされていません:2.0 2.0.0-p648 [55] 2013-02-24 [56] 2015-02-24 [55] 2016-02-24 [55]
古いバージョン、メンテナンスされていません:2.1 2.1.10 [57] 2013-12-25 [58] 2016-03-30 [59] [60] 2017-03-31 [61] [62]
古いバージョン、メンテナンスされていません:2.2 2.2.10 [63] 2014-12-25 [64] 2017-03-28 [65] 2018-03-31 [62]
古いバージョン、メンテナンスされていません:2.3 2.3.8 [66] 2015-12-25 [67] 2018-06-20 [68] 2019-03-31 [68]
古いバージョン、メンテナンスされていません:2.4 2.4.10 [69] 2016-12-25 [70] 2019-04-01 [71] 2020-04-01 [71]
古いバージョン、メンテナンスされていません:2.5 2.5.9 [72] 2017-12-25 [73] 2021-04-05 [72] 2021-04-05 [72]
古いバージョンですが、まだ維持されています:2.62.6 2.6.9 [74] 2018-12-25 [75] 2021-04-05 [76] 2022-04-05 [76]
古いバージョンですが、まだ維持されています:2.7 2.7.5 [77] 2019-12-25 [78] TBA TBA
古いバージョンですが、まだ維持されています:3.0 3.0.3 [79] 2020-12-25 [80] TBA TBA
現在の安定バージョン: 3.1 3.1.0 [44] 2021-12-25 [44] TBA TBA
伝説:
古いバージョン
古いバージョン、まだ維持されています
最新バージョン
最新のプレビューバージョン
将来のリリース

意味論と哲学

Rubyの作者、まつもとゆきひろ

松本氏は、Rubyは、優れたユーザーインターフェイス設計の原則に従って、プログラマーの生産性と楽しみのために設計されていると述べています[81] 2008年のGoogleTech Talkで、松本氏はさらに、「Rubyが世界中のすべてのプログラマーの生産性を高め、プログラミングを楽しみ、幸せになるのを助けてくれることを願っています。それがRuby言語の主な目的です」と述べています。[82]彼は、システム設計はコンピューターではなく人間のニーズを強調する必要があると強調している:[83]

多くの場合、人々、特にコンピューターエンジニアは、マシンに焦点を合わせます。彼らは、「これを行うことで、機械は速く動くでしょう。これを行うことによって、機械はより効果的に動くでしょう。これを行うことによって、機械は何か何かになるでしょう」と考えます。彼らは機械に焦点を合わせています。しかし実際には、人間に焦点を当てる必要があります。人間がプログラミングを行ったり、マシンのアプリケーションを操作したりする方法に焦点を当てる必要があります。私たちはマスターです。彼らは奴隷です。

松本氏は、彼の主な設計目標は、プログラマーの作業と起こりうる混乱を最小限に抑えて、彼自身が楽しんで使用できる言語を作成することであると述べています。彼は、驚き最小の原則(POLA)をRubyの設計に適用していなかったと述べています。[83]ニュースグループcomp.lang.rubyに関する2005年5月の議論で、松本はRubyをPOLAから遠ざけようとしました。デザインの選択は誰かにとって驚くべきものであるため、彼は驚きを評価する際に個人的な基準を使用すると説明しました。その個人的な基準が一貫している場合、基準に精通している人にとっては驚くことはほとんどありません。[84]

松本はインタビューでそれをこのように定義した:[83]

誰もが個人的な背景を持っています。誰かがPythonから来ているかもしれませんし、他の誰かがPerlから来ているかもしれません、そして彼らは言語のさまざまな側面に驚かれるかもしれません。それから彼らは私に近づき、「私はこの言語の機能に驚いたので、Rubyは驚き最小の原則に違反しています」と言います。待って。待って。驚き最小の原則はあなただけのものではありません。驚き最小の原則とは、驚き最小の原則を意味します。そしてそれは、Rubyを非常によく学んだ後の驚き最小の原則を意味します。たとえば、Rubyの設計を始める前は、C ++プログラマーでした。私はC ++で2、3年だけプログラミングしました。そして、2年間のC ++プログラミングの後、それでも私は驚いています。

Rubyはオブジェクト指向です。他の多くの言語がプリミティブ(整数、ブール値、「null」など)として指定するクラスや型のインスタンスを含め、すべての値はオブジェクトです。変数は常にオブジェクトへの参照を保持します。すべての関数メソッドであり、メソッドは常にオブジェクトに対して呼び出されます。トップレベルスコープで定義されたメソッドは、Objectクラスのメソッドになります。このクラスは他のすべてのクラスの祖先であるため、このようなメソッドは任意のオブジェクトで呼び出すことができます。それらはすべてのスコープで表示され、効果的に「グローバル」手順として機能します。Rubyは、動的ディスパッチミックスインによる継承をサポートしていますおよびシングルトンメソッド(クラスで定義されるのではなく、単一のインスタンスに属し、単一のインスタンスに対して定義されます)。Rubyは多重継承をサポートしていませんが、クラスはモジュールをミックスインとしてインポートできます。

Rubyは、マルチパラダイムプログラミング言語として説明されています。これにより、オブジェクト指向(すべてがオブジェクト)または機能プログラミング匿名関数クロージャ、および継続あります。ステートメントにはすべて値があり、関数は最後の評価を返します)。イントロスペクションリフレクションメタプログラミングをサポートしているほか、インタプリタベースのスレッドもサポートしています。Rubyは動的型付けを特徴とし、パラメトリック多型

Ruby FAQによると、構文はPerlに似ており、セマンティクスはSmalltalkに似ていますが、設計哲学はPythonとは大きく異なります。[85]

機能

構文

Rubyの構文は、PerlPythonの構文とほぼ同じです。クラスとメソッドの定義はキーワードによって示されますが、コードブロックはキーワードまたは中括弧のいずれかで定義できます。Perlとは対照的に、変数には必須の接頭辞としてsigilが付いていません。使用すると、シジルは変数のスコープのセマンティクスを変更します。実用的な目的のために、式ステートメントの間に区別はありません[93] [94]改行は重要であり、ステートメントの終わりと見なされます。セミコロンも同様に使用できます。Pythonとは異なり、インデントは重要ではありません。

PythonやPerlとの違いの1つは、Rubyがすべてのインスタンス変数をクラスに対して完全にプライベートに保ち、アクセサーメソッド(、など)を介してのみそれらを公開することattr_writerですattr_readerC ++Javaなどの他の言語の「getter」メソッドや「setter」メソッドとは異なり、 Rubyのアクセサメソッドはメタプログラミングを介して1行のコードで作成できますただし、アクセサメソッドはC ++およびJavaの従来の方法で作成することもできます。これらのメソッドの呼び出しには括弧を使用する必要がないため、呼び出し元の1行を変更したり、C#やC#同様の機能を実現するリファクタリングを実行したりせずに、インスタンス変数を完全な関数に変更するのは簡単です。VB.NETプロパティメンバー。

Pythonのプロパティ記述子は似ていますが、開発プロセスにはトレードオフがあります。公開されたインスタンス変数を使用してPythonで開始し、後でプロパティ記述子を介して公開されたプライベートインスタンス変数を使用するように実装を変更した場合、クラス内部のコードは、パブリックプロパティではなくプライベート変数を使用するように調整する必要があります。 。Rubyの設計では、すべてのインスタンス変数をプライベートにするだけでなく、宣言setgetメソッドを簡単に行う方法も提供しています。これは、Rubyでは、クラスの外部からクラスの内部メンバーに直接アクセスすることは決してないという考えと一致しています。むしろ、メッセージをクラスに渡し、応答を受け取ります。

実装

MatzのRubyインタープリター

オリジナルのRubyインタープリターは、 MatzのRubyインタープリターまたはMRIと呼ばれることがよくあります。この実装はCで記述されており、独自のRuby固有の仮想マシンを使用します。

標準化され廃止されたRuby1.8の実装は、シングルパスのインタープリター言語としてCで記述されています[23]

Ruby 1.9以降、Ruby 2.x以降では、公式のRubyインタープリターはYARV( "Yet Another Ruby VM")であり、この実装は、以前のリリースのMRIで使用されていた低速の仮想マシンに取って代わりました。

代替実装

2018年の時点で、 JRubyRubiniusmrubyなど、Rubyの代替実装がいくつかあります。それぞれが異なるアプローチを取り、JRubyとRubiniusはジャストインタイムコンパイルを提供し、mrubyは事前コンパイルも提供します。

Rubyには3つの主要な代替実装があります。

  • JRuby 、 Java仮想マシン上で実行されるJavaとRubyの混合実装JRubyは現在Ruby2.5をターゲットにしています。
  • TruffleRuby 、 GraalVMでTruffle言語実装フレームワークを使用したJava実装
  • Rubiniusは、実行時にLLVMを使用してマシンコードにコンパイルするC ++バイトコード仮想マシンです。バイトコードコンパイラとほとんどのコアクラスは、純粋なRubyで記述されています。Rubiniusは現在Ruby2.3.​​1をターゲットにしています。

その他のRuby実装には次のものがあります。

その他の現在は機能していないRubyの実装は次のとおりです。

Ruby実装の成熟度は、 Ruby on Rails (Rails)フレームワークを実行する能力によって測定される傾向があります。これは、実装が複雑で、多くのRuby固有の機能を使用するためです。特定の実装がこの目標を達成するポイントは、「Railsの特異性」と呼ばれます。リファレンス実装、JRuby、およびRubinius [96]はすべて、実稼働環境で変更なしでRailsを実行できます。

プラットフォームのサポート

松本はもともと4.3BSDベースのSonyNEWS -OS 3.xでRubyを開発しましたが、後に彼の作業をSunOS 4.xに移行し、最終的にLinuxに移行しました。[97] [98]

1999年までに、Rubyは、NEWS-OS、SunOS、AIXSVR4SolarisNEC UP-UXNeXTSTEP、BSD、Linux、Mac OSDOSWindowsBeOSなどのさまざまなオペレーティングシステムで動作することが知られていました。[99]

最新のRubyバージョンと実装は、Linux、BSD、Solaris、AIX、macOS、Windows、Windows Phone[100] Windows CESymbian OS、BeOS、OpenVMSIBMiなどの多くのオペレーティングシステムで利用できます。

Rubyプログラミング言語は、 JelasticHerokuGoogle CloudPlatformなどの多くのクラウドホスティングプラットフォームでサポートされています。

リポジトリとライブラリ

RubyGemsはRubyのパッケージマネージャーです。Rubyパッケージは「gem」と呼ばれ、コマンドラインからインストールできます。ほとんどのgemはライブラリですが、 IDEなどのアプリケーションであるものもいくつか存在します[101] RubyGems.orgでホストされているRubygemは100,000を超えています。[102]

多くの新規および既存のRubyライブラリは、 Gitのバージョン管理リポジトリホスティングを提供するサービスであるGitHubでホストされています。

Rubyプログラミング用のアプリケーション、ドキュメント、ライブラリをホストしていたRubyアプリケーションアーカイブは、その機能がRubyGemsに移管された2013年まで維持されていました。[103]

も参照してください

参考文献

  1. ^ https://www.ruby-lang.org/en/news/2022/02/18/ruby-3-1-1-released/
  2. ^ a b c クーパー、ピーター(2009)。Rubyの始まり:初心者からプロフェッショナルまで初心者からプロフェッショナルまで(第2版)。バークレー:APress。p。101. ISBN 978-1-4302-2363-4程度は低いですが、Python、LISP、Eiffel、Ada、およびC ++もRubyに影響を与えています。
  3. ^ a b "Rubyの背後にある理由"Ruby Conference2008ConfreaksTV 2019年6月25日取得
  4. ^ a b c d e f Bini、Ola(2007)。実用的なJRubyon Rails Web 2.0プロジェクト:Ruby onRailsをJavaに導入しますバークレー:APress。p。 3ISBN 978-1-59059-881-8これは主に、Perl、Smalltalk、Python、Lisp、Dylan、およびCLUの機能を利用しています。
  5. ^ ビニ、オラ。「イオケ」Ioke.org2011年7月21日にオリジナルからアーカイブされました2011年7月21日取得Io、Smalltalk、Lisp、Rubyに触発されました
  6. ^ 「Julia1.0ドキュメント:はじめに」2018年10月6日取得
  7. ^ バークス、ティム。「Nu™について」プログラミングNu™ネオンデザインテクノロジー株式会社2011年7月21日取得
  8. ^ リングチーム(2017年12月3日)。「リングと他の言語」ring-lang.netring-lang
  9. ^ 「Rustリファレンス」2019年11月16日取得
  10. ^ ラトナー、クリス(2014-06-03)。「クリス・ラトナーのホームページ」クリス・ラトナー2014年6月3日取得Swift言語は、言語の専門家、ドキュメンテーションの達人、コンパイラ最適化の忍者、そしてアイデアの洗練とバトルテストに役立つフィードバックを提供した非常に重要な社内ドッグフーディンググループのチームによるたゆまぬ努力の産物です。もちろん、Objective-C、Rust、Haskell、Ruby、Python、C#、CLUなど、他の多くの言語からアイデアを引き出して、この分野で苦労して獲得した経験からも大きな恩恵を受けました。
  11. ^ 「Rubyについて」2020年2月15日取得
  12. ^ 前田修吾(2002年12月17日)。「Ruby言語に関するFAQ」2014年3月2日取得
  13. ^ まつもとゆきひろ(2006年2月13日)。「Re:RubyのLisp機能」2020年2月15日取得
  14. ^ a b c d ef 「 Ruby の歴史」
  15. ^ 「[FYI:historic]言語名Rubyの決定的な瞬間。(Re:[ANN] ruby​​ 1.8.1)」(杉原宏からruby-talkへのメール)。
  16. ^ 「1.3なぜ「ルビー」という名前なのか?」Ruby言語に関するFAQRuby-Doc.org 2012年4月10日取得
  17. ^ まつもとゆきひろ(1999年6月11日)。「Re:Rubyの名前?」Ruby-Talk(メーリングリスト)2012年4月10日取得
  18. ^ 「より多くの考古学:原始ルビーを発掘する」2015年11月6日にオリジナルからアーカイブされました2015年5月2日取得
  19. ^ "[ruby-talk:00382] Re:ルビーの歴史" 2015年5月2日取得
  20. ^ "[ruby-list:124]チュートリアル—ルビーの機能" 2015年5月2日取得
  21. ^ 「Rubyの作成者へのインタビュー」
  22. ^ まつもとゆきひろ(2000年10月)。「Rubyのプログラミング:転送」2014年3月5日取得
  23. ^ a b "Ruby1.8.7を廃止します" 2015年5月2日取得
  24. ^ 「IPA独立行政法人適用機構:プレスジャケットプログラム言語RubyのJIS祥(JIS X 3017)作成開始」2015年5月2日取得
  25. ^ 「IPA独立法人情報処理機構:プレスリリースプログラム言語Ruby、国際測定適用承認」2015年5月2日取得
  26. ^ 「ISO / IEC30170:2012」2017年3月10日取得
  27. ^ Web開発:Ruby onRailsDevarticles.com(2007-03-22)。2013年7月17日に取得。
  28. ^ 「Ruby1.9.3p0がリリースされました」ruby-lang.org。2011年10月31日2013年2月20日取得
  29. ^ "v1_9_3_0 / NEWS"RubySubversionソースリポジトリruby-lang.org。2011年9月17日2013年2月20日取得
  30. ^ Ruby 1.9:何を期待するかスライドショー.rubyforge.org。2013年7月17日に取得。
  31. ^ 遠藤裕介。(2013-02-24) Ruby2.0.0-p0がリリースされました。Ruby-lang.org。2013年7月17日に取得。
  32. ^ 遠藤裕介。(2013-02-24) Ruby2.0.0-p0がリリースされました。Ruby-lang.org。2013年7月17日に取得。
  33. ^ 「Ruby2.1.0から始まるセマンティックバージョニング」2013年12月21日2013年12月27日取得
  34. ^ Gustavo Frederico Temple Pedrosa、Vitor de Lima、Leonardo Bianconi(2015)。「Ruby2.2.1がリリースされました」2016年7月12日取得{{cite web}}: CS1 maint: multiple names: authors list (link)
  35. ^ Gustavo Frederico Temple Pedrosa、Vitor de Lima、Leonardo Bianconi(2015)。「v2.2.1ChangeLog」2016年7月12日取得{{cite web}}: CS1 maint: multiple names: authors list (link)
  36. ^ Gustavo Frederico Temple Pedrosa、Vitor de Lima、Leonardo Bianconi(2014)。「ppc64のパフォーマンスを向上させるための不揮発性レジスタの指定」2016年7月12日取得{{cite web}}: CS1 maint: multiple names: authors list (link)
  37. ^ Gustavo Frederico Temple Pedrosa、Vitor de Lima、Leonardo Bianconi(2014)。「ppc64のパフォーマンスを向上させるためのMACROの指定」2016年7月12日取得{{cite web}}: CS1 maint: multiple names: authors list (link)
  38. ^ "ruby / NEWS at v2_2_0・ruby / ruby​​・GitHub"GitHub 2015年5月2日取得
  39. ^ 「v.2_3_0のRuby / NEWS --ruby / ruby​​」GitHub 2015年12月25日取得
  40. ^ 「Ruby2.3.​​0の変更と機能」Rubyで実行しています。dev.mensfeld.pl。2015年11月14日。
  41. ^ 「Ruby2.4.0がリリースされました」www.ruby-lang.org 2016年12月30日取得
  42. ^ a b cd 「 Ruby3.0.0 リリース済み」Rubyプログラミング言語2020-12-25 2020年12月25日取得
  43. ^ 「Ruby3x3:Rubyパフォーマンスの未来についてのMatz、Koichi、およびTenderlove」
  44. ^ a bc 「 Ruby3.1.0 リリース済み」ruby-lang.org 2021年12月25日取得
  45. ^ 「Ruby3.1.0がリリースされました」
  46. ^ 「Rubyコミュニティのクリスマスリリース」www.rubyinside.com
  47. ^ 「時間のパッチ:Rubyの保護」
  48. ^ 「ruby-1.8.0がリリースされました!」www.ruby-lang.org
  49. ^ 「1.8.7の計画」www.ruby-lang.org
  50. ^ 「EOLforRuby1.8.7および1.9.2」www.ruby-lang.org
  51. ^ 「Ruby1.9.3-p551がリリースされました」www.ruby-lang.org
  52. ^ 「Ruby1.9.0がリリースされました」www.ruby-lang.org
  53. ^ 「Rubyバージョン1.9.3のサポートは2015年2月23日に終了します」www.ruby-lang.org
  54. ^ 「Ruby1.9.3のサポートは終了しました」www.ruby-lang.org
  55. ^ a b c "Ruby2.0.0-p648リリース済み"www.ruby-lang.org
  56. ^ 「Ruby2.0.0-p0がリリースされました」www.ruby-lang.org
  57. ^ 「Ruby2.1.10がリリースされました」www.ruby-lang.org
  58. ^ 「Ruby2.1.0がリリースされました」www.ruby-lang.org
  59. ^ 「Ruby2.0.0およびRuby2.1のサポートプラン」www.ruby-lang.org
  60. ^ 「Ruby2.1.9がリリースされました」www.ruby-lang.org
  61. ^ 「RubyIssueTrackingSystem」bugs.ruby-lang.org
  62. ^ a b "Ruby2.1のサポートは終了しました"www.ruby-lang.org
  63. ^ 「Ruby2.2.10がリリースされました」www.ruby-lang.org
  64. ^ 「Ruby2.2.0がリリースされました」www.ruby-lang.org
  65. ^ 「Ruby2.2.7がリリースされました」www.ruby-lang.org
  66. ^ 「Ruby2.3.​​8がリリースされました」www.ruby-lang.org
  67. ^ 「Ruby2.3.​​0がリリースされました」www.ruby-lang.org
  68. ^ a b "Ruby2.2のサポートは終了しました"www.ruby-lang.org
  69. ^ 「Ruby2.4.10がリリースされました」Rubyプログラミング言語2020-03-31 2020年4月1日取得
  70. ^ 「Ruby2.4.0がリリースされました」www.ruby-lang.org
  71. ^ a b "Ruby2.4のサポートは終了しました"www.ruby-lang.org
  72. ^ a bc 「 Ruby2.5.9 リリース済み」Rubyプログラミング言語2021-04-05 2021-04-05を取得
  73. ^ 「Ruby2.5.0がリリースされました」www.ruby-lang.org
  74. ^ 「Ruby2.6.9がリリースされました」Rubyプログラミング言語2021-11-24 2021年12月14日取得
  75. ^ 「Ruby2.6.0がリリースされました」www.ruby-lang.org
  76. ^ a b "Ruby2.6.8がリリースされました"Rubyプログラミング言語2021-07-07 2021年8月15日取得
  77. ^ 「Ruby2.7.5がリリースされました」Rubyプログラミング言語2021-11-24 2021年12月14日取得
  78. ^ 「Ruby2.7.0がリリースされました」www.ruby-lang.org
  79. ^ 「Ruby3.0.3がリリースされました」Rubyプログラミング言語2021-11-24 2021年12月13日取得
  80. ^ 「Ruby3.0.0がリリースされました」www.ruby-lang.org
  81. ^ 「Rubyプログラミング言語」2015年5月2日取得
  82. ^ Google Tech Talks –YouTubeRuby1.9
  83. ^ a b c ビル・ベナーズ。「ルビーの哲学」2015年5月2日取得
  84. ^ 「RUBYWEEKLYNEWS.ORGへようこそ」2017年7月4日。2017年7月4日のオリジナルからアーカイブ。{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  85. ^ 「Ruby言語に関するFAQ:Rubyはどのようにスタックしますか...?」2015年5月2日取得
  86. ^ ブルース・スチュワート(2001年11月29日)。「Rubyの作成者へのインタビュー」オライリーメディア2015年5月2日取得
  87. ^ ビルベナーズ。「Rubyによる動的生産性」2015年5月2日取得
  88. ^ 「言語ワークベンチ:ドメイン固有言語用のキラーアプリ?」martinfowler.com 2015年5月2日取得
  89. ^ 「Ruby–実行時にクラスメソッドを追加する」
  90. ^ ビルベナーズ。「Rubyのブロックとクロージャ」2015年5月2日取得
  91. ^ 「メソッド」公式RubyFAQ
  92. ^ ブリット、ジェームズ。「Ruby2.0.0標準ライブラリのドキュメント」2013年12月9日取得
  93. ^ "[ruby-talk:01120] Re:whileの値..." Rubyの構文では、ステートメントは引数として表示できない式の特殊なケースです(複数の代入など)。
  94. ^ "[ruby-talk:02460] Re:優先順位の質問"ステートメント[...]は、括弧内にグループ化されていない限り、式の一部にすることはできません。
  95. ^ "remove / virtual_module:Rubyコードを3倍以上高速化するために生まれました。うまくいけば"GitHub2020年2月21日。
  96. ^ ピータークーパー(2010-05-18)。「Rubinius1.0のリリースの理由、内容、および方法」
  97. ^ Maya Stodte(2000年2月)。「IBMdeveloperWorks– Ruby:新しい言語」2000年8月18日にオリジナルからアーカイブされました2014年3月3日取得
  98. ^ まつもとゆきひろ(2002年8月)。"lang-ruby-general:Re:Rubyの初期開発に関する質問" 2014年3月3日取得
  99. ^ まつもとゆきひろ(1999年1月5日)。「ruby-talk:Re:ハァッ、これらのエラーをチェックしてください」2014年3月3日取得
  100. ^ 「WindowsPhone7上のIronRuby」
  101. ^ 「Rubyツールボックス」2015年4月4日取得
  102. ^ 「StatsRubyGems.orgあなたのコミュニティgemホスト」rubygems.org 2021年12月10日取得
  103. ^ 「raa.ruby-lang.orgを廃止します」2013-08-08 2016年1月3日取得

さらに読む

外部リンク