也许你已经在写 Ruby,并且作为主要生产工具,并享受于此。为什么还要了解 Crystal?

    让我们花一分钟回顾一下 Ruby 最大的弱点是什么?对于我来说有以下三点:

    • 并发
    • 速度
    • 文档

    Ruby 有哪些很酷的地方?

    • Vaguely functional (怎么翻译?)
    • 语法非常简单
    • 关注开发者快乐
    • 快速启动并运行
    • 动态类型

    所以我们可以从像 Ruby 一样的语言中学到很多,很好的处理并发,运行飞快。我们不想牺牲匿名函数,漂亮的语法,不用写一个 AbstractFactoryFactoryImpls 就可以完成工作。

    我觉得那个语言就是 Crystal

    现在:Crystal 不是很完美,但正在变得更好。但重点是学习,使用一种非常熟悉但又不同的语言,可以学会很多东西。

    用 Crystal 来一个 “Hello World” :

    1. puts "Hello, world!"

    Crystal 并发版 “Hello World” :

    1. channel = Channel(String).new
    2. 10.times do
    3. spawn {
    4. channel.send "Hello?"
    5. }
    6. puts channel.receive
    7. end

    Ruby 可能会是这个样子:

    1. 10.times.map do
    2. Thread.new do
    3. puts "Hello?"
    4. end
    5. end.each(&:join)

    差不多了,不过请注意与 Ruby 类似的地方 :

    • 语法相同
    • 变量虽然是静态类型的,但有类型推导,所以我们不需要声明类型

    还是有一些 不同

    • 静态编译有时候会让我们抓狂

    还有:

    1. $ time ./hello
    2. ./hello 0.00s user 0.00s system 73% cpu 0.008 total
    3. $ time ruby hello.rb
    4. ruby hello.rb 0.03s user 0.01s system 94% cpu 0.038 total

    5 倍速提升,but 无关紧要的性能测试。

    无论如何,我希望你明白我的观点:有很多 Crystal 的东西在语法上与 Ruby 相似让你有种 “家” 的感觉,它的优点也是 Ruby 最大的弱点,即使你没有在日常工作中使用,我认为你也可以通过把玩 Crystal 来学到很多东西。