整理 | 寇雪芹

头图 | 下载于视觉中国

出品 | AI科技大本营(ID:rgznai100)

近日,编程语言 Crystal 发布了 1.0 版本。

Crystal 是一种通用的、面向对象的编程语言,其语法受到 Ruby 语言的启发,具有静态类型检查功能,一般不需要指定变量或方法参数的类型,可实现接近 C/C++ 的性能。

像C一样快,Ruby般丝滑

Crystal 的标语是“Fast as C, Slick as Ruby”, 翻译过来的意思是“像C一样快,Ruby般丝滑”。作为一门基于 LLVM 的可编译的静态类型语言,Crystal 的整体设计很接近 Ruby 的体验,语法与各种标准库的接口也都几乎和 Ruby 一样。

Crystal 利用了工具链中内置的所有优化,它的类型检查系统在编译期间可以捕获类型错误,从而避免运行时的错误。由于它具有内置的类型推断功能,大多数类型注释都是不必要的,代码也因此更加整洁、易于阅读。

另外,空引用检查、宏系统和 C 绑定等功能让 Crystal 成为一种功能强大且易于使用的语言,其中最突出的是 Crystal 完善的 C 绑定,而 C 库的成熟度和高性能大大弥补了 Crystal 自身语言的生态不足。

Crystal 提供了指针、结构体和函数、以及和 C 相同的枚举。开发者能够在不写一行 C 代码的情况下无缝使用 C 的库,只需要将 C 库中所需的函数的签名在 Crystal 中定义,类型上有 Crystal 提供的对应版本,或者通过重写方法让自己的类型对应 C 库中的类型。

Crystal 由一群热爱 Ruby 的人创建,开发团队喜欢 Ruby 编写代码的效率,又倾心于 C 语言的性能。因此,早期的 Crystal 高度兼容 Ruby 语法和语义,编译器用 Crystal 重写的时候只需要进行少量修改便能成功移植。

Crystal 的语言特性:

  • 语法类似 Ruby

  • 无需指定变量类型和方法参数类型

  • 可以调用 C 代码

  • 编译时代码模拟和生成

  • 编译成高效的本机代码

示例代码:

# Compute prime numbers up to 100 with the Sieve of Eratosthenes
max = 100
sieve = Array.new(max + 1, true)
sieve[0] = false
sieve[1] = false
(2...max).each do |i|if sieve[i](2 * i).step(max, i) do |j|sieve[j] = falseendend
end
sieve.each_with_index do |prime, number|puts number if prime
end

结语

Crystal 类似 Ruby 的语法、无需指定变量类型和方法参数类型、C 代码调用便捷高效……基于这些突出的语言特性,Crystal 被多数用户喜爱,但其发展速度也明显比粉丝的期待慢。

查看 1.0 版本更新内容,请点击参考链接:

  • https://github.com/crystal-lang/crystal/pulls

  • https://crystal-lang.org/2021/03/22/crystal-1.0-what-to-expect.html

☞自由软件之父回归 FSF,遭 1933 人、21 家组织联名抵制!☞乔布斯18岁求职信拍卖价22.24万美元,值吗?
☞进退两难的硅谷程序员们
☞6000万条GitHub帖子告诉你:工作状态与表情符号强相关

像 C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?相关推荐

  1. C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?

    整理 | 寇雪芹 头图 | 下载于视觉中国 出品 | AI科技大本营(ID:rgznai100) 近日,编程语言 Crystal 发布了 1.0 版本. Crystal 是一种通用的.面向对象的编程语 ...

  2. 联机相关,让你的好友联机如局域网般丝滑!

    这几天刚开始和女盆友联机玩无主3,但是联机的时候作为客机的我总是会有各种载入黑屏/伤害技能延迟/跑步回弹等等问题,双方都开了加速器也没有很好的改善,联机体验十分不爽. 这时候我想起来以前有用过Team ...

  3. 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一orm篇【如EF般丝滑】typeorm介绍(8/8)...

    文章目录 前情概要 在使用nodejs开发过程中,刚好碰到需要做一个小工具,需要用到数据库存储功能.而我又比较懒,一个小功能不想搞一个nodejs项目,又搞一个后端项目.不如直接在nodejs里面把对 ...

  4. qtscrcpy自定义按键_QtScrcpy电脑控制手机 苹果般丝滑华为多屏协同般体验 免安装使用...

    这篇文章总字数为:1606 字,有 0 张图存于本站服务器 QtScrcpy(控制安卓手机软件),支持Linux.Windows和Mac平台,可以通过USB或通过wifi连接Android设备,并进行 ...

  5. 在低配macOS上如德芙般丝滑的运行3A游戏大作,可能么?

    MacOS远程windows 10操作系统 背景 众所周知,macOS的内存和运行空间非常昂贵,如果为了娱乐而在mac上堆很多性能会很没必要.本着勤俭节约的美好品德,就用想着之前的旧电脑来作为娱乐工具 ...

  6. Windows11 安装 WSL2,wsl2+ubuntu子系统+docker 感受丝般顺滑

    主板BIOS中开启虚拟化 启动电脑,按DEL键,进入BIOS页面 进入Advanced,CPU Configuration ,修改Intel(VMX) Virtualization Technolog ...

  7. 面试题:如何实现丝滑般的数据库扩容

    初版 如果我们的线上服务不重要,一般来个单体的数据库DB来存储数据即可来. 单体应用 优点:简单,省事,方便. 缺点:数据并发性,稳定性都有问题.   进阶 随着数据量的不断增大,一般我们要对数据进行 ...

  8. 如何实现丝滑般的数据库扩容

    初版 如果我们的线上服务不重要,一般来个单体的数据库DB来存储数据即可来. 单体应用 优点:简单,省事,方便. 缺点:数据并发性,稳定性都有问题. 进阶 随着数据量的不断增大,一般我们要对数据进行水平 ...

  9. 使用Docker实现丝般顺滑的持续集成

    作者简介:蒋运龙,有容云高级咨询顾问.十年来混迹于存储.三网融合.多屏互动.智能穿戴.第三方支付.Docker等行业:经历过测试.运维.实施各岗位全方位的摧残,依然活跃在技术的风头浪尖.  本文转载自 ...

最新文章

  1. 百度CTO王海峰阐释AI融合创新,降低门槛,按下产业智能化加速键
  2. 三大运营商扎堆进军“元宇宙”
  3. 一个关于debug的说明(摘自thinkingpython)
  4. 福建省计算机一级应用技术基础知识,求福建省计算机一级考试的基础题
  5. iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库
  6. Retrofit2 完全解析 探索与okhttp之间的关系
  7. 计算机视觉应用的简称,计算机视觉应用之图像检索任务简单介绍
  8. python字典遍历的4种方法
  9. 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
  10. for循环中使用多线程
  11. 关于flex,好像有12个属性非常重要
  12. java 16 binary_【图片】【困扰】java(tm) platform se binary 已停止工作该如何是好【minecraft吧】_百度贴吧...
  13. elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂
  14. 34 SD配置-销售凭证设置-定义销售凭证类型
  15. 百练_4123 马走日(深搜)
  16. unity3d api 中文文档_官方文档
  17. 利用FreeMarker生成java源代码
  18. 突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
  19. 百度搜索结果左侧图片设置方法
  20. 微信应用架构!!-----微信应用的测试管理篇

热门文章

  1. 机器学习之支持向量机(SVM)小结
  2. yum安装nginx,并配置静态资源服务器
  3. python寻找list中最大值、最小值并返回其所在位置
  4. 信息传递(luogu 2661)
  5. C#中DllImport用法
  6. 06 iOS 关闭侧滑返回
  7. [设计模式]单例模式
  8. 【机器学习】【计算机视觉】非常全面的图像数据集《Actions》
  9. css的img移上去边框效果及CSS透明度
  10. 【maven】Controller层参数如何设置传null