维基 - CrystalNotes

主要观点:作者尝试 Crystal 语言并记录感受,对比多种语言特性,指出标准库存在一些问题但仍值得尝试。
关键信息:

  • 2014 年创建,类似强类型 Ruby 且有大量类型推断,程序经 LLVM 编译为本地可执行文件,无 repl 和 main 函数,有可编辑可执行在线代码块,教程简洁但参考不错,无 for 循环用类似 Ruby 的方式迭代。
  • 对象相关:newinitialize分离,类变量私有,有 Ruby 风格注释,常量和类型类名首字母大写,结构体类似 C# 值类型类,有“splat 赋值”特性。
  • 类型系统:几乎无需添加类型注解但可选择添加,有全局类型推断、联合类型、变量声明赋值方式、可重赋值不同类型变量、未初始化变量类型为 Nil 等,类似 TypeScript 类型系统,有真实泛型和常见 OO 特征。
  • 标准库:有多种实用功能但 tempfile 库存在安全问题,OptionParser可改进,寻找包较困难,部分库设计继承自 Ruby 但不一定好,如Dir对象迭代相关。
  • 其他:可使用命名参数调用函数,有“splat 运算符”,无 sum 类型和真正的模式匹配,模块是一等值,crystal二进制有内置工具,require基于文件导入,有自动类型转换,错误处理是普通异常,对Nil的处理有特色,类构造函数属性快捷方式方便。
  • 后续待看:反射、FFI、错误处理、宏、泛型更深入、类似 Ruby 的迭代退出方式、线程等。
  • 结论:世界需要固有的不可变优先和函数优先的脚本/胶水语言,Crystal 是考虑周全的 OO 语言,静态类型系统低摩擦,可替代 Python/Ruby/JS 脚本。
阅读 7
0 条评论