所以 – 我决定写一些Rust,还有Go,因为在我的世界里,每个人似乎看起来对它都很着迷。
我使用C/C++的历史并不多。诚实的讲,我的强类型语言的编程经验并不多。作为一个系统管理员,我们通常就是给某人的程序打补丁(我做了很多这种事,但打补丁不像从头开发东西)。在我拥有的有限经验中,我发现编译->运行->排错循环太令人恼火。我承认这是我个人的无知:如果我多花时间来理解语言,我一定可以发现发现那些定期打击我的陷阱。
Cargo包管理器非常好
像脚本语言一样富有表现力
有些东西像as_slice和Vec也许需要一点时间来解释,但它非常的直白。下面链接可以回顾这些函数:
Strongly typed 强类型
对于我最重要的是,我的代码从来没有segfaulted或者恐慌。这些都是我以前用底层系统编程语言中从来没有拥有过的体验。如果编译器接受我的输入,它开始运行-快速并且准确。
Rust还在进化,快到1.0了(译者:现在1.2都出来了)。作为一个副作用,许多高级库都还不存在,或者还没被写出来。一个好的(小)例子是命令行语法解析库还不存在。有一个包包含在标准库里,但是界面效果不佳。Github中有一些有希望的库,但是最好的那个(从接口、功能性等来看)没有办法用最新的Rust来编译通过。(这是由于fail!(..)宏被改为panic!(..)-不是一件大事,但也是一件说明Rust还在演进的事实。)
关于Rust的最终想法
也就是说,我第一次觉得自己可以相信自己可以快速写出一个快速、高效的底层系统代码。编译器非常友好,它提供的错误提示非常有用和清晰。当它演进到1.0,并且库的生态系统开始升温时-Rust将是一股不可忽视的力量。
Go比较小巧
Go是自以为是的 – 关乎很多事情
静态输出是好的-和现实,任何你本地编译的都会是你用户所消费的,感觉不错。
Rust编译器让你很确定你的想法会如何在底层代码中工作,Go坐在中间。语言是强类型的,但在实践中,它大部分时间都似乎可以推断出你的意图。举例:
Go的运行时失败
在第九行盲目的假设正表达式找到匹配,然后导致运行时错误信息。这在Rust中绝不会发生。
速度,可访问性,还有库
Go有巨大的库生态系统,一个清晰的方式来寻找它们,和一个简单的方式来得到它们。
我想,务实的回答是‘物尽其善,那个实用用哪个’。Go可以替代人们用Ruby、Pythong或者Perl所写的东西。它是一个简单,平易近人的语言,加上强类型和难以置信的生态系统。我明白人们为什么喜欢它。静态二进制,很好的生态系统,配合的很好。我写Go代码大概比Rust快一倍。
我想起了一次高层招聘规则获取的教训,规则之一是他/她必须在某些方面让人惊讶一个在很多方面“好”的人,通常来说不是伟大的。Go就是给我这种感觉-它在每一方面都好,但没有抓住我的心,没有让我觉得因为在我已有的生态系统里面没有这些东西而觉得非常兴奋,Rust绝对惊人的保证你写的代码是在运行时正确和安全的-这是一种启示。
原文链接:Rust and Go(译者/Scott Huang责编/钱曙光)
CSDN Rust 学习交流群拥有多位Rust资深研究者,如果你想零距离接触大牛,请加群主微信 qshuguang2008 或扫描下方二维码申请入群,备注:实名+公司名+Rust。
