说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

专访资深程序员庄晓立:我为什么要选择Rust?

HTML文档下载 WORD文档下载 PDF文档下载
Rust声称解决传统C语言和C++语言几十年来饱受责难的内存安全问题,同时还保持极高的运行效率、极深的底层控制、极广的应用范围。日前,CSDN采访了Rust1.0版本代码贡献者庄晓立,请他分享Rust语言特性以及学习经验。

Rust是由Mozilla开发的注重安全、性能和并发性的编程语言。这门语言自推出以来就得到了国内外程序员的大力推崇。Rus声称解决了传统C语言和C++语言几十年来饱受责难的内存安全问题,同时还保持了极高的运行效率、极深的底层控制、极广的应用范围。但在国内有关Rust的学习文档并不多见,不久前,笔者联系上了Rust1.0版本代码贡献者庄晓立(精彩博文:为什么我说Rust是靠谱的编程语言),请他分享Rust语言特性以及学习经验。


庄晓立

CSDN:你是从什么时候开始接触Rust语言的?是什么地方吸引了你?

庄晓立:我大概从2013年后半年开始深入接触Rust语言。它居然声称解决了传统C语言和C++语言几十年来饱受责难的内存安全问题,同时还保持了极高的运行效率、极深的底层控制、极广的应用范围。

其ownership机制令人眼前一亮,无虚拟机(VM)、无垃圾收集器(GC)、无运行时(Runtime)、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争(Data Race)……所有这些,都深深地吸引了我——这个十多年以来深受C语言折磨的痛并快乐着的程序员。

CSDN:在你看来,Rust是怎样的一门语言?它适合开发什么类型的项目?为何你会说Rust不惧怕任何竞争对手,它既能取代C语言地位;又可挑战C++市场,还可向JavaPython分一杯羹?与这些语言相比,Rust有哪些优越的特性?

庄晓立:Rust是一门系统编程语言,特别适合开发对CPU和内存占用十分敏感的系统软件,例如虚拟机(VM)、容器(Container)、数据库/游戏/网络服务器、浏览器引擎、模拟器等,而这些向来主要都是C/C++的传统领地。

此外,Rust在系统底层开发领域,如裸金属(bare metal)、操作系统(OS)、内核(kernel)、内核模块(mod)等,也有强劲的实力,足以挑战此领域的传统老大C语言。Rust丰富的语言特性、先进的设计理念、便捷的项目管理,令它在上层应用开发中也能大展拳脚,至少在运行性能上比带VM和GC的语言要更胜一筹。无GC实现内存安全机制、无数据竞争的并发机制、无运行时开销的抽象机制,是Rust独特的优越特性。

其他语言很难同时实现这些目标,例如传统C/C++无法保证内存安全,Java/Python等无法消除运行时开销。但Rust毕竟还是很年轻的项目,它释放影响力需要时间,被世人广泛接受需要时间;它的潜力能否爆发出来,需要时间去检验。我们只需耐心等待。

CSDNRust在国内有没有具体的实际使用案例?

庄晓立:因为Rust1.0正式版刚刚发布不足一月,在国内影响力还不大,我们不能苛求它在国内有实际应用案例。但是在国外,一两年前就已经有OpenDNS和Skylight把Rust应用在生产环境。还有浏览器引擎Servo、Rust编译器和标准库、项目管理器Cargo等“两个半大型应用案例”。这些足够说明Rust语言的成熟和实用。

CSDN:你参与了Rust1.0版本代码贡献,目前该版本正式版已经发布,对此你感觉如何?这门语言是否已经达到比较成熟的阶段?

庄晓立:我积极参与了Rust语言开源项目,多次贡献源代码,曾连续三次出现在Rust官方博客公布的Rust 1.0 alpha、Rust 1.0 beta和Rust 1.0正式版的贡献者名单中。在Rust 1.0正式版出台的过程中及此前的很长一段时间,开发者付出了极大的努力,确保Rust 1.0正式版在Semver 2.0规范下,务必保持向后兼容性,除非遇到重大Bug不得不修复。

我认为,在1.0正式发布之后,Rust就已经进入了比较成熟的阶段。而且,Rust还在快速迭代发展过程中,1.0发布6周后将发布1.1,再6周后将发布1.2,必然会一步一个台阶,越来越成熟稳定。

CSDN:除了功能优先级以外,在你看来,Rust正在朝什么方向发展?未来的Rust可以期待什么样的特性?

庄晓立:Rust一定会沿着“确保内存安全、无运行开销、高效实用”的既定方向持续发展。在短期内值得期待的语言特性有:动态Drop、偏特化、继承、改进borrow checker、改进宏和语法扩展。短期内值得期待的其他特性有:增强文件系统API、提供内存申请释放API、更好地支持Windows和ARM、更快的编译速度、更方便的二进制分发机制(MUSL)、更实用的工具等等。

CSDN:据我了解,你之前也比较推崇Go语言,为何想到放弃Go转向Rust

庄晓立:推崇Go语言还谈不上,不过我曾经尝试努力接受Go语言,2011底年开始我曾经花费将近半年时间深度关注Rust开发进程,提了很多具体的改进意见和建议,也曾经多次尝试贡献源代码。后来考虑到Go语言的设计理念跟我偏差太大,其社区也不太友好,慢慢地疏远了它。我曾经写过一篇博客《我为什么放弃Go语言》,谈到了很多具体的原因。

CSDN:国内,参与Rust代码贡献的开发者多吗?有核心的人员吗?有哪些社区在维护Rust

庄晓立:国内参与Rust代码贡献的开发者并不多,但也不少,官方的贡献者名单中也偶见几个貌似国人的名字。Rust的核心开发人员基本上都是Mozilla公司的员工,他们专职负责开发维护Rust语言和相关的项目,Rust社区也主要是他们参与组织和管理的。社区人员讨论主要集中在GitHub项目主页RFC/PR/Issue官方、Discuss论坛/IRC、Reddit、HN、StackOverflow等。

CSDN:对于开发者而言,应如何学习Rust?请分享下你的经验。

庄晓立:由于Rust刚刚发布不久,各方面学习资料有限,我可以分享的经验也不多。首先推荐学习Rust官方提供的文档:

  • Rust学习手册:https://doc.rust-lang.org/nightly/book/
  • Rust学习示例:http://rustbyexample.com/
  • Rust标准库文档:https://doc.rust-lang.org/stable/std/
  • Rust语言规范:https://doc.rust-lang.org/stable/reference.html

对于已经具有C++开发经验的开发者,可以看一下这个教程,是专门给C++程序员量身定制的Rust教材。这个虽然不是官方文档,但其作者是Rust开发组成员,文档质量是有保证的。除此之外,建议大家多关注一下Reddit网站的Rust专题,那里有全世界Rust程序员分享的许多有价值的资料(地址)。中文的资料更少,大家可以看看我参与筹建的Rust中文社区,与广大国内开发者共同交流进步:http://rust.cc

作者简介:庄晓立(网络ID是Liigo、CSDN博客),山东省梁山县人,80后,2002年毕业于山东理工大学。从事IT行业十余年,其中有接近十年时间专注于易语言(eyuyan.com)编程平台的研发,长期担任大连大有吴涛易语言软件开发有限公司研发部部长。后来曾短期参与嵌入式软件开发。目前在教育行业负责视频培训软件研发。

本文选自程序员电子版2015年6月B刊,该期更多文章请查看这里。2000年创刊至今所有文章目录请查看程序员封面秀。欢迎订阅程序员电子版(含iPad版、Android版、PDF版)。

(责编/夏梦竹)

云适配CEO陈本峰:8年磨一剑 Splashtop企业应用:SplashApp让办公移动起来 时空旅行+内付费“植物大战僵尸2”下月18日全球同步发行! 中移动推网络电话Jego 后来者能否居上? 防止数据泄露:BYOD下的管理员5大妙招 咕咚副总裁司建铭谈移动时代的“软硬整合” 未来的物联网结点:可穿戴设备 应用开发的4个技巧,让程序能真正为用户使用 Google早期的10个API:它们现在在哪? 为啥微软开发产品总是慢半拍? Visual Studio 2013 Preview新功能预览 “中国手机游戏四月流水榜”出炉 超半数基于Cocos2d-x引擎 为移动而设计之信息架构篇 难逃厄运:Zynga将关闭Draw Something母公司OMGPOP 直接拿来用!最火的iOS开源项目(一) 是时候抛弃Eclipse转向IntelliJ了 Arrow:轻量级的Python时间日期库 编程语言API,你最青睐哪一款? 推动新输入方式发展:英特尔为感知计算设1亿美元基金 AWS到底有多大?目前看来有158000台服务器 C语言实现树的动态查找 第五届中国云计算大会于北京隆重举行 改变企业移动化:新Google地图API支持用户定制 诺基亚旗舰手机EOS真机图曝光 配备“巨型”摄像头 走进豆瓣:豆瓣的技术架构与团队文化分享 加速Web开发的10款HTML5工具 微软式微?AMD、英特尔等开始疏远Windows 语音技术现状:四千万突破语音产业的技术壁垒? 万维网联盟W3C推荐Web性能API 微软郑子颖:Windows Azure如何支持开源系统和软件? EMC 叶成辉:软件定义数据中心实现统一、开放的管理 2000共享文件问题,请高手看一下,很古怪的! 朋友,你好! 离开 论坛 散分【四】 高手救命,简单数据库规划问题!!!价值50分!!! 想听听大家对 static 命名的函数、变量的用法 Access数据库传到服务器后,变为只读了?求助,白思不得其解 请问怎样取得PCM流 离开 论坛 散分【五】 打包,解包??? 离开 论坛 散分【六】 离开 论坛 散分【七】 求教SQL语句,高手、或刚入门的同道都进来讨论一哈 最初linux使用什么编译开发的? 离开 论坛 散分【八】 关于字符串截取问题 谁有FASTREPORT的注册版本 我急用!在线等待!谢谢! 离开 论坛 散分【九】 Application.messagebox和messagebox有什么区别呢? 水晶报表的两个小问题? 怎样向Foxpro表中添加float型数据? 离开 论坛 散分【十】 问一个和Session有关的问题,达人请进 在宏里把ie关闭。非常感谢 如何让window.showModalDialog的page提交数据到原来的父页面? 合租住房!! 有没有一个命令直接解开iso文件或提取里面的一个文件或文件夹 请给看看程序:AVI视频的读取和重建 如何显示出电脑内已经注册的dll文件列表? 中程浮点数问题! solaris下CC编译器的问题? UML的书籍和软件? 那里有vs.net2003的vss6.0d版本? 有时候exe文件不能运行? 自己准备写一个工资发放和发布的程序,欢迎探讨. 襄儿妹妹还在吗?幸好偶这个马甲还有点分,全给你吧,这个ID密码她不知道呵呵~~~ 关于linux WEB服务器名的问题? 请教ATL中CBindStatusCallback的问题 我的IE不能打开新窗口?用鼠标左键点击超链接没有反应? 我的项目改变目录后打不开,怎么办? 多CPU机器,同时可有几个线程处于运行状态? 高分求高效高斯模糊算法。。 如何判断软件是否过期 是不是运行ASP.Net应用的服务器必须安装.Net FrameWork呢?还是只要有Win2000 Server和IIS就行。 谈情说爱 清除内存中用call调用的脚本文件? 一个很老的问题,如何避免CListCtrl闪烁。 请大家给看看程序:avi视频读取和重建 研究数字图像处理应该那些知识? 图片上传并显示实例(VB+SqlServer2000) SQL语言中 怎样将CHAR型转换成INT型? 級連更新... 请大家帮解释初一13课几个辞的意思黛色,灵秀,贮满,终极,匍匐,融融,澹澹,芊芊细草,轻飞曼舞,春华秋实,春花秋月,闲情逸致 请大家帮解释初一9课几个辞的意思执着,鞭策,盛名,报酬,奢望,蹂躏,呵责,懊恼,沉醉,迷醉,猝然长逝,问心无愧 请大家帮解释初一17课几个辞的意思,峰峦,预兆,轻盈,匀称,崩塌,弥漫,征兆,一霎间,姿态万千,变化无常 请大家帮解释初一11课几个辞的意思朗润,酝酿,卖弄,宛转,嘹亮,黄晕,烘托,静默,舒活,欣欣然,繁华嫩叶,呼朋引伴,抖擞精神,花枝招展 请大家帮解释初一19课几个辞的意思,观测,指令,合算,海域,畅谈,神往,里程碑,昂首挺立,一叶孤舟,遥遥在望 人教版必修2语文作文关于“地球上最后一个人,忽然有了敲门声” 语文必修三第二次作文,是人教版的... 下列关于法家思想说法错误的是A法家学派的创始人是战国末期的韩非B韩非主张改革反对空谈仁义C商鞅变法体现了法家学派的思想观点D韩非提出建立君主专制中央集权的封建国家的观点被秦 醉西游答题活动,言论自由属于:正确答案是什么? 2010年下半年的商务英语初级成绩谁查到了 You ask,I'll pay 有什么用词或者语法错误没? “被暴利”的星巴克?金华8890便民服务平台今日开通美“情报器”失控威胁全球 奥巴马或成中国经济改革顺应世界大势提升信任感亦可靠食补铁托遗孀落葬德媒曝美监听站遍布全球沙特女性“要开车”伊朗边防军遭伏击 处决16名反叛者德媒曝美监听默克尔十余年法一残障者本周跳伞飞越珠峰湖南临澧公安回应“挂牌保护污染企业”专家谈日本三井被强执案:与“战争赔款旅西失业华人被“发小儿”欺骗 偷渡希痛心“繁荣不再” 纽约侨领吁华人团结巴西对中国无缝钢管征收6个月临时反倾“跟随垃圾去旅行”:城市固废垃圾处理俄媒:普京下令6月前制定额黑海舰队发瑞士拟开通世界首个无过敏源航班 专为德国两城市为申请举办统一纪念日活动展欧盟机构反腐制度被指落实困难 立法程张永德任甘孜州副州长 许春秀辞任(图
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘