< 返回版块

ChaosBot 发表于 2018-07-15 10:51

Tags:rustnews

WebAssembly 不仅仅是Web

虽然WebAssembly名字里包含了Web,但实际上它并不仅仅局限于Web。

很多程序员知道WebAssembly是运行于浏览器中执行非JS代码的一种技术。这是事实,但实际上还有更多的内容。

为了将WebAssembly嵌入到不同的环境中,其规范是被拆分到独立的文档中并区分了层级:

  • 核心层。定义WebAssembly模块及其指令集的语义。
  • API层。定义应用程序接口。目前指定了两个API:JavaScript API、Web API。

由此看出,WebAssembly其本身是独立于Web的,Web只是其应用的特定环境。事实上,WebAssembly也被应用于很多除了Web之外的领域:

  • 桌面图形化程序
  • 区块链智能合约,比如Parity的以太坊VM
  • 编写操作系统微内核,比如Nebulet

等等,请发挥你的想象力。

原文


Rust vs Go

本文作者以自身的经验对Rust和Go做了评价,比较了以下几点:

  • 内存管理: 很难为谁打call。因为这两门语言都是内存安全的。(那Rust没有GC,是不是算赢了呢?逃)
  • 学习和使用的难易度。很难为谁打call。因为虽然Go语法简单容易上手,但是作者更想把精力和时间花在编写经得起时间考验的代码上,而非排查各种Bug。(我很赞同)
  • 泛型。这个自然是Rust赢了,因为Go不支持泛型。
  • 代码健壮性。显然是Rust赢了。列举一下Rust有但Go不支持的可增强代码健壮性的特性: - 断言。断言很重要,但是Go不支持。Go将所有问题都归结为「错误」,相比之下,Rust就给你安排明白了,不该是错误的就不是错误。 - 类型标注。Rust有更严格的类型标注,可以精准传达程序员的意图。 - 文档注释。Rust的文档注释可以支持markdown。但是Go的比较简陋。 - 错误检查。Rust有更高级的类型系统来处理返回的错误。
  • 分析工具。Go内置了分析工具,比较好用。
  • 构建速度。Go赢了。
  • 构建工具。Rust有优秀的包管理工具Cargo,赢。
  • 单元测试。 作者对go的测试不满意,但是因为有testify的存在,所以这里勉强和Rust打个平手吧。

这份比较报告,不是为了要挑起语言之争。每种语言都有其优缺点和适用领域,作为程序员,应该对每种语言的特性有所了解,这样有益于为项目选择最佳的工具。 作者还强烈建议广大程序员,应该学学Rust,即使你不用Rust,你也能在这个学习过程中学到更多其他语言里学不到的东西。

原文


讨论: Rust正在帮助我重新理解编程

我也有同感,你呢?

原文


两个新项目

GitHub趋势榜今日上榜项目:

  • rust-lang-nursery/mdBook, Rust实现,可以像gitbook那样生成在线的电子书。
  • alexcrichton/tokio-signal,tokio的信号处理库
  • alexcrichton/ctest,自动为Rust的FFI C绑定生成测试
  • brendanzab/cgmath,Rust实现用于计算机图形学的线性代数和数学库
  • softprops/atty,Rust写的一个用于判断是否为tty的工具

评论区

写评论

还没有评论

1 共 0 条评论, 1 页