像 C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?
整理 | 寇雪芹
头图 | 下载于视觉中国
出品 | 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 版本,你看好吗?相关推荐
- C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?
整理 | 寇雪芹 头图 | 下载于视觉中国 出品 | AI科技大本营(ID:rgznai100) 近日,编程语言 Crystal 发布了 1.0 版本. Crystal 是一种通用的.面向对象的编程语 ...
- 联机相关,让你的好友联机如局域网般丝滑!
这几天刚开始和女盆友联机玩无主3,但是联机的时候作为客机的我总是会有各种载入黑屏/伤害技能延迟/跑步回弹等等问题,双方都开了加速器也没有很好的改善,联机体验十分不爽. 这时候我想起来以前有用过Team ...
- 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一orm篇【如EF般丝滑】typeorm介绍(8/8)...
文章目录 前情概要 在使用nodejs开发过程中,刚好碰到需要做一个小工具,需要用到数据库存储功能.而我又比较懒,一个小功能不想搞一个nodejs项目,又搞一个后端项目.不如直接在nodejs里面把对 ...
- qtscrcpy自定义按键_QtScrcpy电脑控制手机 苹果般丝滑华为多屏协同般体验 免安装使用...
这篇文章总字数为:1606 字,有 0 张图存于本站服务器 QtScrcpy(控制安卓手机软件),支持Linux.Windows和Mac平台,可以通过USB或通过wifi连接Android设备,并进行 ...
- 在低配macOS上如德芙般丝滑的运行3A游戏大作,可能么?
MacOS远程windows 10操作系统 背景 众所周知,macOS的内存和运行空间非常昂贵,如果为了娱乐而在mac上堆很多性能会很没必要.本着勤俭节约的美好品德,就用想着之前的旧电脑来作为娱乐工具 ...
- Windows11 安装 WSL2,wsl2+ubuntu子系统+docker 感受丝般顺滑
主板BIOS中开启虚拟化 启动电脑,按DEL键,进入BIOS页面 进入Advanced,CPU Configuration ,修改Intel(VMX) Virtualization Technolog ...
- 面试题:如何实现丝滑般的数据库扩容
初版 如果我们的线上服务不重要,一般来个单体的数据库DB来存储数据即可来. 单体应用 优点:简单,省事,方便. 缺点:数据并发性,稳定性都有问题. 进阶 随着数据量的不断增大,一般我们要对数据进行 ...
- 如何实现丝滑般的数据库扩容
初版 如果我们的线上服务不重要,一般来个单体的数据库DB来存储数据即可来. 单体应用 优点:简单,省事,方便. 缺点:数据并发性,稳定性都有问题. 进阶 随着数据量的不断增大,一般我们要对数据进行水平 ...
- 使用Docker实现丝般顺滑的持续集成
作者简介:蒋运龙,有容云高级咨询顾问.十年来混迹于存储.三网融合.多屏互动.智能穿戴.第三方支付.Docker等行业:经历过测试.运维.实施各岗位全方位的摧残,依然活跃在技术的风头浪尖. 本文转载自 ...
最新文章
- 百度CTO王海峰阐释AI融合创新,降低门槛,按下产业智能化加速键
- 三大运营商扎堆进军“元宇宙”
- 一个关于debug的说明(摘自thinkingpython)
- 福建省计算机一级应用技术基础知识,求福建省计算机一级考试的基础题
- iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库
- Retrofit2 完全解析 探索与okhttp之间的关系
- 计算机视觉应用的简称,计算机视觉应用之图像检索任务简单介绍
- python字典遍历的4种方法
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- for循环中使用多线程
- 关于flex,好像有12个属性非常重要
- java 16 binary_【图片】【困扰】java(tm) platform se binary 已停止工作该如何是好【minecraft吧】_百度贴吧...
- elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂
- 34 SD配置-销售凭证设置-定义销售凭证类型
- 百练_4123 马走日(深搜)
- unity3d api 中文文档_官方文档
- 利用FreeMarker生成java源代码
- 突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
- 百度搜索结果左侧图片设置方法
- 微信应用架构!!-----微信应用的测试管理篇