Ruby
Elixir
crystal
Goby

将来有望!文法がRuby風味のプログラミング言語たち

どうも、あんはるです。
今日、技術書典5に行ってきたのですが、買ってきた入門系の本が結局、Ruby風味のプログラミング言語になっていたので、Ruby風味のプログラミング言語キテるなぁと思いこの記事を書きます。(なぜかHaskellとScalaは自重し、Ruby風味のプログラミング言語の本を買ってしまった、やっぱ自分Ruby好きなんだな)

Ruby風味のプログラミング言語って何がいいんだろう?

私のファースト言語はRubyです。
Rubyの良さとは何でしょう。
私はやはり書いていて楽しいということだと思います。
書いていて楽しいというのは人それぞれでありますが、Rubyの楽しさは開発生産性にあるのではないでしょうか。
例えば、Railsがあんなにも多く使われてるのはなぜでしょう。それは、開発生産性があるというのも一つの理由だと思います。作りたいWebアプリケーションがあって、それを完成させるのは断然Railsが早いです。

Ruby風味のプログラミング言語の特徴はこれです

  • Rubyの開発生産性(楽しい)
  • 高速

つまり、Ruby風味のプログラミング言語は、
楽しく開発生産性があり、しかもパフォーマンスが良いと言う良いことずくめ な言語になっているのです!!!(主観)

Ruby風味のプログラミング言語って具体的に何?

Elixir

最近話題の言語。
ErlangのVM上で動く、動的型付けの関数型言語です。
elixir
Erlangの恩恵(耐障害性など)を受けつつ、Rubyのような書きやすさを実現した魅力的な言語です。
また、ElixirのWebApplicationフレームワーク、Phoenixも勢いがあります!
Phoenixのコンセプトは"Productive. Reliable. Fast."
あーーーー、もう魅力的ですね。生産性はあり、そして信頼性があり高速。
Railsの代替になるのももうすぐでしょうか。

Elixirのコード

current_process = self()

# Spawn an Elixir process (not an operating system one!)
spawn_link(fn ->
  send current_process, {:msg, "hello world"}
end)

# Block until the message is received
receive do
  {:msg, contents} -> IO.puts contents
end

詳しくは。
https://qiita.com/HirofumiTamori/items/0dfdbada30c7d8f183fd
https://phoenixframework.org/

Crystal

静的型付けのコンパイラ言語。
まだα版です。
crystal

Crystalのコンセプトは"Fast as C, Slick as Ruby"
Cのように速く、Rubyのように滑らかに。
これもRubyの良さを生かしパフォーマンスがありとてもかっこいいですね!!

CrystalはElixirと違って、静的型付け言語です。
Rubyがファースト言語でしたから、静的型付けは慣れなかったんですけど、Rustを始めてから少しずつ慣れてきました。静的型付けなら実行しなくても単純なエラーをすぐに発見できるので良いですよね。(当たり前)
Rubyを書いてるようなのに静的型付けで素晴らしいと思いました。
また、Null安全性を取り入れていますよ。
そして、マクロというシステムがあり、コードの重複を排除すると言うメリットがあります。

Crystalのコード

# A very basic HTTP server
require "http/server"

server = HTTP::Server.new do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world, got #{context.request.path}!"
end

puts "Listening on http://127.0.0.1:8080"
server.listen(8080)

詳しくは。
http://ja.crystal-lang.org/

おまけ

Goby

Goによる(ほぼ)Ruby実装。
主にAPIサーバやマイクロサービスの作成のための言語だそうです。
goby
https://github.com/goby-lang/goby

最後に

Ruby風味のプログラミング言語たちは、Rubyの生産性を実現させつつ、パフォーマンス、開発者への優しさがある言語だなぁと思い感心しました。
Rubyを書いてるようなのに、速い!!!静的型付けがある!!!とかとても感動的です。
みなさん、Elixir,Crystal使ってみてください。