crystal是什么意思(为什么Crystal是2020年最有前途的编程语言)

/ 0评 / 0

crystal是什么意思(为什么Crystal是2018年最有前途的编程语言)

很多开发人员多年前就集思广益,“我们如何使用类Ruby语法来实现C的执行效率、通用性,并且像C/C++一样,可以在任何具有高级语言特性的平台上编译成Baxter的本地二进制文件,比如丰富的标准库、fiber支持等。”,而这个梦想在几年后终于用Csystal编程语言实现了。

下面我将举一个例子来解释为什么它是水晶,而不是像JavaScript、仙丹、Rust、Ruby、Python或Go

水晶郎

无懈可击:“像C一样快,像Ruby一样聪明”

Crystal的主要魅力在于打破了优雅易用的动态语言(如Ruby、Python)和面向效率的底层系统语言C/C++之间的界限。到现在为止,在开发中经常需要做一个选择:写难读、难调试但高效的代码,比如C/C++,或者用Ruby/Python写一个功能相同的代码,但是速度慢,消耗内存。换句话说,你需要在性能和开发效率之间做出选择。因为在Ruby/Python中开发MVP比在C/C中容易得多,所以在过去的18年里,SaaS的公司,无论大小,都倾向于接受动态语言,并将额外的性能开销视为不可避免的业务成本。然而,有了Crystal,你可以用Ruby/Python做任何事情,但速度和系统开销与C/C++二进制程序相同。

使用水晶语言的11个理由

性能。Crystal是一种基于LLVM框架的静态编译语言。水晶是“没有分号的速度”。

语法。像许多解释语言一样,Crystal尽最大努力让您以可读且美观的方式编写更少的代码。Crystal有时被宣传为类似Rust,但更容易读写。

纤维.在C/C++世界里,你不能轻易得到的是Fibers。实现Fiber可以让你绕过回调地狱(nodejs没有承诺的时候,节点标准库还没有承诺),让编写游戏/UI循环、事件、异步和同步IO等变得更加容易。

静态类型。Cr(www.isoyu.com原创版权)ystal是一种静态类型语言,这意味着每个变量都有一个或多个潜在的类型,需要在编译时进行计算。Ruby/python是动态类型,因此很难优化ruby/python代码。通过执行静态类型,Crystal消除了大量与类型相关的错误,为优化和静态编译铺平了道路。更好的是,Crystal编译器只需要在语法不明确时显式指定类型,通常不需要直接指定类型。

宏。在C/C++领域,如果不使用非常古老的语法来编写一些令Baxter感到困惑的宏,将很难以静态的方式做一些事情。Crystal允许你在编写宏时使用大量的语言,这样你就可以做一些在静态编译语言中通常不可能做到的疯狂事情。

动态定义方法*。有些人害怕使用Crystal,因为它是一种编译语言,他们不能动态定义方法,但是宏让你在编译时这样做。

与零/零相关的错误是不可能的。Crystal编译器将NIL视为一种类型,并在与可能为零的对象交互之前强制执行显式NIL检查。

碎片.与Ruby中的包管理系统和其他语言的包(如node npm)相同。它们易于安装和维护,并且可以通过静态链接直接编译成二进制可执行文件。不管你使用多少碎片,你都会得到一个可执行文件。

越来越流行。这意味着将会有更多的碎片包,更多的新功能和更快的bug修复时间。最近,Crystal仅在第60个月就从Tiobe指数升至第32位。没有其他现代编程语言在如此短的时间内经历过如此高的增长率。

跨平台支持。目前Linux和OSX都支持,Windows还需要一段时间。已经支持QT和LibUI了。

Web框架。基于Crystal的最流行的Web框架Amber类似于Rails。比Rails快n个数量级。有几个像Kemal这样的轻量级框架适合API开发,比如“像Ruby一样滑头,比golang还快”。

为什么是Crystal而不是其他语言?

没有任何其他语言可以将所有这些放在一起(编译时宏、静态类型、C速度、Ruby语法、包管理系统、本机二进制编译、Fiber和跨平台支持)。在这方面,Crystal会和Rust(最近备受关注)一样值得关注,它是Crystal最接近的语言,它的作用是作为C++的替代品。

最后,一些限制

在撰写本文时,Crystal的主要局限性是:

Windows支持尚未完成(但将很快得到支持)

除非链接到并行C代码,否则没有并行性(光纤模型完全支持并发性)。所谓GO风格并行即将实现,并且已经在测试分支工作。

因为1.x版本还没有发布,语言还不稳定,偶尔会有一些小改动。

Crystal是一种非常神奇的语言,在我们的项目中已经小规模使用。让我们等待它的1.x版本。