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

专访资深程序员庄晓立:我为什么要选择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版)。

(责编/夏梦竹)

CocoaChina开发者大会 全新引擎Cocos 3d-x开源 Oracle和微软的抱团,以及对抗Amazon霸主的5个可用点 Agile已死 Agility长存? 论程序员的自我修炼 Github女员工因遭性别歧视离职 继七年iPhone、四年iPad后,苹果的下一城:Healthbook 普元CTO焦烈焱:专注于基础软件 在Spark上的深入实践 Python 3.4.0正式发布 未添加任何新语法特性 谷歌受困邮件挖掘丑闻,企图抹掉庭审记录 Python 3.4.0发布,增加了多个功能模块 美的+阿里,“云端”战略第一把火是智慧家居 对产业互联网战略的战术思考——争夺企业信息入口的战争 加入Cassandra,OpenStack发力DBaaS生态圈 死磕Google Keep,微软正式发布Mac免费版OneNote 《近匠》安管云CTO石磊:降维安全的开放平台 2014 Unity亚洲开发者大会&#183;中国站讲师名单议题全部出炉 【独家专访】红旗Linux元老:猎猎红旗永飘扬 借助三大技巧 助你提升API状态页面 集成GemFire,Hadoop生态圈的又一把火 次世代光照体验:Unity 5面世,功能系统全升级 深入浅出,以咖啡店为例演示Web应用程序扩展 百度Clouda:可依赖的实时JavaScript开发框架 Oracle发布Java 8正式版及JDK 8 编程语言中一些令人抓狂的规则 廉颇未老,微软股价创14年新高 中国云计算大会PPT集萃(三):核心架构及应用实践 特性是增多了,但是Google的云服务仍然不温不火 全国云计算大数据创新项目评选活动正式启动 【独家专访】Perl发明者首次来华:将在OSTC大会分享其编程人生 腾讯核心创始人张志东半年后卸任首席技术官 改任终身荣誉顾问和学院讲师 咱们约会吧,Web设计师教你不一样的语言 这个问题怎么办?? (ADO OPEN) Up 有分! 母亲生日,你觉得送什么礼物为好? 用c++ 写的 hello 程序在unix g++ 编译通过后,运行出错 如下几个初级问题要问,高手们请进-> SQLSERVER高手进来聊聊........ 怎样用代码实现两台电脑之间的文件传输? 哪位知道Microsoft Firewall Client 的下载地址? 关于RECORDset的问题,求教 如何在web页面使用 Windows 窗体控件,最好有例子! 使用DOM的XMLHttpRequest对象来发送xml请求,但当返回的响应带有中文时候,在PDA上无法正常显示,我使用MultiByteToWideChar也没用。有人 请问在窗口中放置控件时,PB是否有靠近格线对齐的功能。如果有,在哪设置? DELPHI中FASTNET组件使用方法 请问在SELECT查询中怎样娶得行号? 在一般的类中如何得到当前文档的指针? 巨菜问题:重装xp后grub启动菜单消失,怎么办? FIP上传问题,非常着急,在线等,解决就结贴, 用javaScript打开窗口后,原窗口的gif动画不动了 FindWindow的用法 反正没几个人能回答,发来玩玩。 在当前文档中如何实现刷新操作? 构造sql语句时,表名或字段有可能是sql的保留字段,如何解决? 小弟急需文件操作和线程管理方面方法技巧的资料,望各位英雄赐教 怎么将power point打包成exe 如何恢复execl中vba的密码 怎样在ISA中设置带宽限制? 如何实现数据库的更新?? 搜胡首页是<<美英百架战机空袭伊拉克 攻伊序幕已拉开>>,但... string 读取的问题。 正在看c++primer的请看(高手当然也能看拉) 有哪位高手用过bcp_exec导入数据吗? vb数据库安全问题 大学新生师弟师妹们很快要来报告了,大家能不能帮我想想一些迎新的宣传标语? 数据窗口中dddw下拉前触发的事件是哪一个(使用pbm_dwndropdown无效)? 有关的vs.net的简单问题! 下周可能要去勞動局!矛盾激化! 博士,硕士,教授等请进,关于前途的问题: 如果明天csdn也被封了,我们还能做什么???? 请问SQL SERVER区分大小写吗 关于lcc-win32 winme下如何调整显示器的刷新率 大家练练手,征集下面这个小程序的算法!!!(很有趣的阿!!) 消失的古代王朝---亚述 Web services 的应用。 关于EXCEL中,连接到其他文件的删除问题 30 分 大侠们,怎么打包BDE,在线等待,急 关于VB的报表打印问题 请教:如何判断Varient变量是否为空? Sygate中的带宽具体怎样设置? 一个循环显示和记录集相关的问题? 请问为什么会这样? 用VC开发软件的朋友是用MFC(即选MFC Appwizard)还是用API(即选WIN32 Application)开发软件?社会上一般用哪种? “我就是抄下来的”怎么翻译成英语 求缘是天意 份在人为的英文翻译! 请问青藏铁路经过了那几地方我问的是青藏铁路经过了那几地方,地方 地方 姐姐 不对 还是不对大姐 英语翻译:缘分怎么说?有例子更好. 这是一种缘份!让我们祝他们生日快乐!英语翻译 青藏铁路经过了哪些地方 1.I'm going to go to Hainan(同义句转换) 2.Are you going to go swimming.(同义句转换) tomorrow we are going to go to Hainan .中的tomorrow应该在前还是在后,为什么? 青藏铁路沿途都过哪些地方啊? 高中地理人教版必修一考题.识图题.等压线分布图. 池塘里的莲池塘里的莲,托着荷叶的是_______,顶着荷花的是,莲真正的茎是横卧在污泥里的_________,藕内布满的细丝是______组织 青藏铁路沿途要经过哪些地区 广州话 距噶 英语 we're going to go to 无论你是缘分或是知己,我都珍惜.英文翻译 广州话噶口语“几啦”是什么意思? 四川盆地周围的主要山脉? 怎样在电脑上查英文,比如快速方便查找句子意思和单词,有这样的软件吗. 广州话噶口语“几啦”是什么意思! 生物角度讲莲是什么科 如图 2题 答案上的解析没看懂 英文短语“注意安全” 荷花和莲花是一种生物吗?它们的科、属、纲、目完全相同吗?为什么莲花和荷花的形象有明显区分呢?荷中间花心部分有莲蓬,而莲只是有黄色的花芯而已啊. 快捷键中ctrl x 这个x是哪个单词的缩写 交通安全的英语短语不要闯红灯.... We are going Hainan tomorrow.改病句 在word中,写出以下快捷键组合的意思:Ctrl+A:Ctrl+B:Ctrl+C:Ctrl+U:Ctrl+D:Ctrl+X:Ctrl+E:在word中,写出以下快捷键组合的意思:\x05Ctrl+A:\x05\x05Ctrl+B:\x05\x05\x05\x05Ctrl+C:\x05\x05Ctrl+U:\x05\x05Ctrl+D I'm going to go to middle school this September.(变成一般疑问句)按要求完成句子 求人教版高中地理必修一全教案 快捷键ctrl+C,ctrl+V,ctrl+X,ctrl+A,ctrl+Z 中的 C,V,X,A,Z,分别是哪个英文单词? 英文翻译 梅菜笋丝 求文档: 珠峰的岩石层中为什么有远古代的海洋生物的化石 “笋”的英语单词是什么? 人教版高中地理必修二总结第一章是人口的变化的那本书,要全书的知识点概括,是概括,太多的就不要发了. 求动物介绍 英文的要一篇英文的动物介绍 不要太长 英语翻译hull 是指果实类的壳吧能用在这里修饰笋的壳吗?请大家给点在国际贸易中,关于笋壳的常用词汇吧 "你是指"笋壳鱼"吗?应该是"blue code"如果我没记错的话..." 不好意思不是的,我的 艺术创新如何做到科学发展 在标准键盘上,“ctrl”、“esc”、“alt”键分别是什么单词的简写? 英语翻译纯鲜榨雪梨汁纯鲜榨凉瓜雪梨汁纯鲜榨苹果甘笋汁纯鲜榨西芹甘笋汁柠七可乐煲姜鲜奶加蛋橙汁西米露麦片鲜奶什果宾治薄荷宾治薄荷七喜红豆冰什果西米露柠蜜西洋菜蜜西柚汁柠 《创新与想象》 关于艺术与科学,本文作者的观点是什么 “手机”英语翻译? 类是于街霸里的哈都跟 午休噶 一类的发音还有什么 哈都跟 和 午休噶 是什么意识? 结婚和笋用英文怎么写 We're going to go to Hainan 中文翻译是什么?在1月九号之前给我答复,星期一就不用答案了 什么是铁制剂 四川盆地和塔里木盆地的差异有哪些?从民居,服饰,饮食,文化等方面来考虑 going,to,are,to,go,we,Hainan(连词成句) 促进离子铁吸收的因素有哪些? 四川盆地和塔里木盆地区别地形特点,气候类型,干湿状况,温度带,主要河流及特征,主要农作物 英语翻译请帮我翻译一下这个菜单 已知有一芳香烃结构式为CxHy,怎么由它得到y≤2x-6?我想知道为什么y要小于等于2x-6 四川盆地及塔里木盆地自然环境要素的异同自然环境要素包括气候,土壤,地形,水文,植被. 英语翻译我现在手机界面是英文的了.我想把英文换成中文.在手机的那个项目个找阿. 芳香烃的结构式是否一定的画苯环,谢C6H5. 四川盆地和塔里木盆地分别是在什么温度带 北京自然博物馆的古生物大厅里,陈列着一具大象的骨架,这就是古代黄河象骨骼的化石.这句如何缩句? 英语翻译274.It is not unusual for you to work for an organization that has a multicultural workforce. 相遇是缘 学着去珍惜所以的缘份.的英文翻译 6元环的所有碳原子都在一个平面上吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘