長い歴史を持つRuby
Rubyは、まつもとゆきひろ氏によって1995年に初めて公開されたプログラミング言語です。
20年以上に渡ってWeb開発を始めとする様々な場面で使用され続けているプログラミング言語Rubyは、色々なプログラミング言語に影響を与えてきました。
今日は、
- Rubyから影響を受けたプログラミング言語
- Rubyと関係が深いプログラミング言語
を紹介します。
- Crystal
- Elixir
- Goby
- Groovy
の4つです。
Crystal
Crystalは、2014年に初めて公開された新しいプログラミング言語です。
オブジェクト指向のプログラミング言語であるCrystalの構文は、Rubyと良く似ています。
公式ページでも、Rubyの影響を受けているプログラミング言語であることが明言されています。
Crystalでは、Rubyの構文のようなプログラミングコードの書きやすさを保ちつつ、
実行速度の速さを実現することを目指しています。
そのため、Rubyとは違い、静的型付けを採用しています。
静的型付けというのは、プログラム内の変数や引数などの型をプログラム実行前に、予め決める方式のことです。一見手間のように思えるこの方法は、予め型が決められた書き方がされるため、プログラムの実行速度が速くなるという利点があります。
Rubyは、動的型付け言語であり、プログラムの実行前に型を決めることはせず、実行時に型が決まります。プログラミングコードは書きやすくなる可能性はあるものの、実行速度が遅くなりがちです。
Rubyとの違いとしては、さらに
Rubyはインタプリタで実装、Crystalはコンパイラ言語
ということがあります。
コンパイラ言語では、まとまったプログラミングコードを一度にコンピュータが読み取れる形式に変換します(=コンパイル)。即時実行ができないという点がデメリットですが、プログラムの実行速度は速くなる傾向があります。
インタプリタ言語では、プログラミングコードを一文ずつコンピュータが読み取れる形式に変換しつつ実行します。直ぐに実行結果が得られるというメリットがある一方で、実行速度は遅くなります。
Crystalでは、
- Rubyに似た構文
- 静的型付け
- コンパイル言語
という点から、分かりやすい構文、速い実行速度を目指して開発が進んでいます。
Elixir
Elixirは、2012年に公開されたプログラミング言語です。
José Valim氏が主要な開発者として知られています。
ElixirはRubyの影響を受けているとされています。
Elixirは、Erlangという言語の仮想マシンで動作するプログラミング言語です。
仮想マシンというのは、中間コードを実行する演算機です。中間コードというのはここでは、人間が書くコードと、コンピュータが読み取れるコードの中間に位置するもの、という位の認識で大丈夫です。
簡単に言えば、仮想マシンは、中間コードを読み取って、コンピュータが実行できるコードに変えます。
ここでの仮想マシンは、プロセス仮想マシンとも呼ばれます。1つのコンピュータ上に、別のOSを構築する際に使われるシステム仮想マシン(VMware Workstation PlayerやOracle VM VirtualBoxなど)とは異なります。
仮想マシンの導入により
- 開発効率の向上
- 異なるOSなどさまざまな環境で開発が可能になる
などの利点があると言われています。
このような仮想マシンで動作するプログラミング言語として、Elixirは開発されました。
仮想マシンが有名なプログラミング言語としては、Erlangの他にJavaがあります。
- Erlang → 仮想マシン BEAM(Erlang virtual machine) → Elixir
- Java → 仮想マシン JVM(Java virtual machine) → Kotlin、Scala、Groovy
といった形です。
Elixirは、関数型言語でありながらもRubyに似ている、という独特なプログラミング言語であるとされています。
Goby
Gobyは、2017年に公開されたとても新しいプログラミング言語です。
Go + Ruby
でGobyということのようです。
Gobyはオブジェクト指向言語で、Rubyに影響を受けたプログラミング言語です。主にGo言語で開発されたプログラミング言語です。
そのためRubyに似た構文を採用しています。
Gobyは、以前はRoobyという名前でプログラミング言語の開発が進められていたそうです。
バックエンドでの開発に使用される想定のGobyは、登場から間もないということもあり、まだ発展している途中です。
今後、Rubyに影響を受けてGo言語で開発されたGobyの利用が広がっていくかもしれません。
RubyやGo言語に興味がある、という人は、プログラミング学習の時にGobyに触れてみるのも良いかもしれませんね。
Groovy
Groovyは、2003年に登場したJavaプラットフォームで実行できるオブジェクト指向のプログラミング言語です。
Javaプラットフォームというのは、Elixirのところで紹介したJavaの仮想マシン JVM(Java virtual machine)を含む、Javaのプログラムを開発実行できるソフトウェア(=エコシステム)のことです。
公式ページによると、GroovyはRubyを意識しているとされています。
Groovyは、
- 動的型付け言語
- Javaとの強い連携
- WebアプリケーションフレームワークのGrails
などの特徴があります。
Grailsを用いた開発は、Groovy on Grailsとも呼ばれ、まさにRubyでのWeb開発、Ruby on Railsと同様に捉えることができます。
Groovyは、Rubyに影響を受けているとされているように、比較的プログラミングコードが書きやすいと言われています。そのうえ、Javaプラットフォームで実行できるため、Javaとも距離が近いです。
- Javaは学習した
- Rubyは学習したが、Javaは少しハードルが高いと感じている
などの人は、プログラミング学習にGroovyを試してみるのも良いかもしれません。
試してみよう
歴史が長いRubyは、自身の発展と合わせて色々な領域に影響を与え続けています。
今日紹介した4つの言語は、Rubyを学んでいない人にもプログラミング学習時の選択肢になることがあると思います。
Rubyを学んだ人も
- Rubyとコンパイル → Crystal
- Rubyと関数型言語 → Elixir
- RubyとGo言語 → Goby
- RubyとJava → Groovy
という新しい視点から4つのプログラミング言語を見ると、興味が湧くことがあるかもしれませんね。
コメント