Posted at

将来有望!文法が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使ってみてください。