为什么Crystal是我2017年及以后最喜欢的编程语言

为什么Crystal是我2017年及以后最喜欢的编程语言

如果您要问我经常联系我最喜欢的语言是什么的开发人员,我可以保证您会喊出一个响亮的“水晶!”。 原因很简单。 无论是Twitter,Telegram,Reddit还是博客,我总是分享对Crystal语言的热爱。 地狱,我再做一次。

现在,我选择的语言已经确立,但并不总是Crystal。 我从事Web和软件开发已有8年了,Crystal仍然是一种相当新的语言(甚至还不是Beta版)。 在过去的几年中,我一直是一名沉重的JavaScript开发人员,但我还与Rust,D,C ++,Elixir,Nim等一起工作。 那么,即使Crystal仍在开发中,为什么Crystal仍将它作为我的最爱呢

很好的回答是,如果您了解或至少已经了解了Ruby语法,它会有所帮助。 我知道这是一个有争议的话题,但是我实际上发现Ruby语法非常漂亮。 我的意思是看一下这段代码,并告诉我,您不仅会坠入爱河。

Crystal与Ruby具有相同的基本语法,这是我非常喜欢它的第一个原因。 实际上,上面的Ruby代码也是完全有效的Crystal代码。 头脑还没炸吗 没有好吧,让我们继续。

水晶编译

这是Crystal和Ruby之间的第一个巨大区别。 Crystal是一种编译语言,这意味着许多错误会在编译时被捕获,从而导致生产中出现问题。 当然,这需要一个小的“发展速度”权衡,但从长远来看会有所回报。 这也意味着您可以构建和发布二进制文件,而不必部署整个代码存储库。 这对于可能只有10或20 GB存储空间的VPS的人们来说非常好。

当然,编译的确也有缺点。 口译语言的编写和测试速度非常快,因为您不必每次进行更改都等待编译代码。 在元编程或编写可编写和修改代码的代码方面,Ruby也是一种非常高级的语言。 这意味着可以随时更改Ruby代码,可以基于不断变化的数据生成方法,等等。对于Crystal而言,情况并非如此,主要是出于安全原因。 当编译语言在运行时改变自身时,它将失去许多使编译语言变得很棒的安全功能。

水晶是静态类型的

这是Crystal的最佳功能之一。 大多数语言都有某种基本类型系统。 甚至JavaScript都具有基本类型,包括数字,字符串,对象,数组等。但是,许多语言不强制执行类型或提供任何类型的类型检查。 JavaScript,Ruby,Python和PHP就是这种方式(我知道我会得到有关Python和PHP实际上具有类型的注释,但实际上并没有。至少在程度上与真实类型的语言不同)

Crystal可以在很多时间推断类型,这就是为什么此代码

即使没有任何类型信息也可以工作。 当然,此代码也适用于整数或可以使用运算符加在一起的任何其他值。 因此,我们可以轻松地将类型定义添加到我们的代码中。

现在, 方法仅适用于字符串。

Crystal还支持联合类型。 这些基本上是组合类型,这意味着某种东西可以是A型或B型。这是一个示例。

水晶有宏

还记得我之前提到的元编程吗好吧,Crystal实际上也允许这样做,但只能在编译时进行。 Crystal通过称为宏的特殊方法来执行此操作。 对于某些人来说,宏可能是一个令人困惑的话题,但是我对编程语言的工作原理有一点了解 ,我认为它们很容易理解。

大多数编程语言都有一个称为标记器(或词法分析器)和解析器的东西。 分词器负责获取代码的原始文本表示形式并将其转换为“令牌”。 这些标记代表从字符串到标识符(定义,类,模块等)再到数字的所有内容,通常包括基本信息,例如找到标记的行和列。 然后,解析器将这些标记转换为AST(抽象语法树)。 该树包含代表类,模块,方法等的节点。

这是一个非常基本的定义,可能有些瑕疵,但可以满足我们的目的。 宏在AST创建阶段进行扩展,并在创建AST时实际对其进行修改。 这意味着您可以动态地(在编译时)添加方法,创建和修改类等。与Nim和Rust相比,Crystal的宏系统是非常基本的(它具有非常混乱的宏),但是它仍然很有帮助。 这是一个简单的宏的示例。

基本上, 宏仅采用新的方法名称和现有方法的名称,并创建一个复制现有方法的方法。 Ruby可以使用来做到这一点,但是由于它被认为是一种反模式,因此Crystal开发人员并未将其包含在语言本身中。

水晶快

如您所见,Crystal已经为此付出了很多。 它很漂亮,经过编译,是静态类型的,具有元编程功能,接下来可能是什么好吧,如果我告诉您Crystal也几乎与C一样快

我知道这听起来令人难以置信。 我的意思是说美丽的语言不能很快吗在发展世界中总是存在着权衡取舍。 确实是这样。 至少,Crystal很容易比Ruby快100倍(不是在开玩笑)。 只是看看基准 。

速度当然不是全部,但不必担心它确实很高兴。

我不喜欢什么

使用Crystal会有一些弊端,尤其是在尚处于开发阶段时。 第一个是Windows兼容性基本上不存在。 您可以在WSL(Linux的Windows子系统)中下载并运行Crystal,但这不如本机兼容性。 现在,它正在开发中 ,但是它并不是最重要的事情,因此开发速度很慢。

由于它是新的,因此开发工具实际上还不存在。 在名为Scry的Crystal语言服务器上已经取得了长足的进步,但是由于缺乏专职开发人员,导致类似的项目再次花费了很长时间才能完成。 也有正在开发的Atom和VSCode插件。

最后是沟通问题。 这个问题已经解决了好几次了,值得赞扬的是,最近几个月,核心开发人员的工作做得更好,但是与沟通一直是Crystal项目的一个小问题。 Crystal由阿根廷的Manas Tech公司开发和资助。 他们不是像Google或Microsoft这样的大公司,因此无法为开发投入数十万美元。 因此,Manas慷慨地将开发Crystal所花费的时间捐赠给了社区,有时其他项目也被优先考虑。

重点是,Crystal是一种很棒的语言,您绝对应该尝试一下。 我将继续传播福音,并希望其他人也能照做。 如果您愿意,可以访问我的GitHub存储库,并查看我的一些项目(其中很多都是Crystal的惊喜,惊喜)。

编码愉快!

From: https://hackernoon.com/why-crystal-is-my-favorite-programming-language-of-2017-and-beyond-ee733224e6f2

相关资源:晶体学查看软件_晶体结构查询-软件测试其他资源-CSDN文库

来源:dfsgwe1231

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年2月6日
下一篇 2018年2月6日

相关推荐