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

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

(责编/夏梦竹)

广告教父的哲学:值得F2P游戏借鉴的8条经验 UC李云:基于Chromium的浏览器如何打造更好体验 一周消息树:颠覆互联网思维?年薪50万码农转行卖凉皮 Coconut2D:跨平台2D游戏及应用开发工具 第八届中国大数据技术大会将于12月中旬隆重召开 10个常见的缓存使用误区 用户暴增下的收入降低,AWS面临尴尬 云数据中心选址PK:微软第一,IBM第二,谷歌最少 不应错过2014微信开发者大会的八个理由 为什么软件测试需要变革? 苹果和IBM成最佳搭档 微软谷歌或受威胁 OpenStack社区又添新成员 浪潮推动开放云生态系统构建 重度使用AWS及Hadoop,Pinterest的自服务平台打造历程 《近匠》腾讯信鸽:基于大数据的推送 超低功耗'Whisper'架构发布:IoT、可穿戴连接性IP新标准! R的数据分析制霸以及企业级应用盘点 第二届游戏运营技术论坛来袭!与大牛共论云时代的游戏运营之道 云雀科技:飞行器+地图,展望飞行器的新体验 Sandstorm,前Googler和极客名人建立通用开源工具保姆 触控科技CEO陈昊芝:引擎技术推动行业升级 谁能成为Hero,这一次你说了算!——TCL智能电视开发大赛创意阶段评审征集 微信官方在“公开课”上13个热点问题的解答摘要 MDCC 2014移动开发者大会10月开幕:你就是主角! 设计师该如何挣得一席之地? 回到未来:最热门的十大清洁能源技术公司 深度学习:未来机器人的进化途径 搜狗开源内部项目管理系统Cynthia,已被数十家企业采用 沃游戏新版本全新登场 好友PK根本停不下来 腾讯发布首款智能硬件,内部筹建孵化器鼓励创新 触控开发者平台:孕育“十亿开发者俱乐部” 《近匠》大新伙伴:大姨吗防晒小助手,帮你呵护女神 一个莫名奇妙的问题 关于自己以后发展方向的一个问提!!!(偏软还是硬) 对WinSock和TCP/IP协议共同工作的疑惑 请高手指点迷津 综合我的几个问题,请高手指点。 为什么我存储图象的时候小的bmp能存储大的却说invalid blob length 一个字符串的基础问题 求助,关于DropDownList控件的问题 请教一个简单的SQL语句的写法! 请问我把两路PCM的样值点相加除2得到混音信号,可是噪音很大,应该怎么消除呢(有代码) 大家快看电视新闻,中国一艘潜艇在海上出事了!紧急发布! 各位快请帮帮忙呀!Session问题!!! 如何在代码中添加新增lookup字段??? xp系统问题!高分等答案 pl/sql中函数与过程有什么区别 关于事务 LIB 在线等!!!!!!!! ADO+SQL Server 如何用VB编写发邮件的程序? 数据库搜索的一个怪问题 怎么得到从另一个页面传来的参数 Full Text: Bush Speech Aboard the USS Abraham Lincoln 请问 怎么实现变量互换阿 我是新手~~~ FAT错误,请问如何修复? flashget那个小方框怎么做? 谁有《UML与Rational Rose2002从入门到精通》书的选配光盘 急!!!随机函数 FAT错误,请高手帮忙修复。 内部消息(我对我说的负责) 不定时开放FTP服务器 急,求救!!! 一个很简单的问题. 为什么 “基本图象处理代码(1) ehom(原作)”对grayscale不对? linux下的oicq 有马? 帮帮我,好吗,感谢,非常 help,help,sql query question? 大家认为考研考进其他学校(且跨专业)的可能性有多大 显示图片 数据库搜索的一个怪问题 共享上网问题!急~!!!! 句柄和指针有什么区别吗? 大虾快进来,帮帮兄弟们!!!再现等待!高分!! 请问C++Builder的程序中能不能使用*.mdb类型的数据库? 帮帮忙!!个位大哥 请问用java编程能实现数据采集的程序并进行传输(即c/s模式)吗? 请问什么命令找开一个窗体的? 请问:如何从文件中获取icon并得到HBITMAP句柄? 如何在客户端打开一个word文件 MVP是个什么概念???? linux启动不了,Bringup loopback interface时出错,请问是什么原因? 帮帮忙!! 我海军一艘潜艇失事 70名官兵不幸全部遇难!! 如果一个锐角是另一个锐角的2倍,那么,这两个锐角分别是多少度和多少度? 埃字组词,急--- 步测一个圆形花坛周长,两人的走向和起点完全相反,一人每步长54厘米,另一人每步长72厘米,两人脚步有重合走完一圈后只留下60个脚印,这个花坛的周长是多少?(答案是21.6米,)急! 在八点和九点之间什么时候指针夹角是60%度一共两个,要一个. 用埃组词!如:埃及... 奥运会举重比赛时的杠铃片有几种重量 真空包装的食品打开几天后还能吃吗?前两天买了袋豆干,真空包装的,当天没吃完,过了两天才吃完,这样会不会对身体不好啊? 埃的组词6个以上!好的话我会追加分的! 利息几分几厘什么意思 用所给词的适当形式填空 This book is the best-----------(sell). 厦怎么组词用xia 这个音我弄错了,我要的是厦sha 年利率4.5%,月利率3. 顿号前后可以是俩字义近的词么? 祖国颂征文怎么写,必须要自己写的,急,分不是问题,给30分,快,祖国颂征文, 书的总页数一定,已经看的页数和未看的页数.是否成正比例?理由,为什么,他们是不是两种相关联的量,比值是不是不一定? 英语根据所给词的正确形式填空:half of the books ——(sell) out so far 中华赞,祖国颂征文建议以清明节端午节……一些传统节日为挈机,深入挖掘中华传统文化精髓和传统节日的历史底蕴.400字以上500字以下.好的话会追100分的! 汉译英:高温烹煮火鸡两个小时 Cook turkey ( ) ( ) (汉译英:高温烹煮火鸡两个小时Cook turkey ( ) ( ) ( ) ( ) ( ) for tow hours Jack usually has a hamburger and a cup of milk for lunch.对a hamburger and a cup of milk提问 which is right?A.let,s make a cake to your monter B.a cook cooksfoodb four peopiec.the apple come from japan are dearer D.Help yourselves to some sushi,Milk and TimYou __buy any sweets.We have someA.need B.needn't to C.don't need D.don't need to 问 书的总页数一定,已经看的页数和未看的页数.是否成正比例?用因为所以说比如小新跳高的高度和他的身高。小新跳高的高度和他的高度,不是两个相互关联的量,所以小新的跳高的高和他的 400米跑道,每条跑道的周长,每条半径的长、直道得长和弯道的长 庆祝生日 提示词 cook a big dinner make a cake do some cleaning make a birthday card sing a song 英语翻译Cook turky ----------- ------------ ------------ ------------ ------------ for two hours. 这是我今年给我算的东东,一九八九年   九月    廿五日    丑时食      印      日      才八字 己      甲      丁      辛    巳 把下列名词变为复数 shirt watch egg tomatopotato jacket plane fishdeer hero radio pianofamily child mouse busfoot tooth Chinese GermanAmerican knife wife Englishman 一本书的总页数一定,看的天数与平均每天看的页数成正比例吗一堆煤的总质量一定,烧去的煤和剩下的煤成正比例吗三角形的高一定,三角形的面积和底成正比例吗》?都讲讲 吨能组什么词语 把下列名词变成复数teacher,desk,cap,dog,house,bus,box,peach,student,bed,city,scarf,hero,man,sheep,child.bus,dictonary,chair,uncle,driver,sheep,knife,inan,vase,watch,horse,woman,match,horse,woman,match,goat,party,child,bike,map,foot. 核舟记中雕刻家雕刻了多少人和物 1、______,the firemen could quench the fire.A try they would B as they tried C what they tried D try as they would.为什么不能选项B,2、The older the goose,______to pluck.A it is the harder B the harder C the hardest D it is hard这是什么 aunt /never /makes /cake /a /birthday /my / . 核舟记的雕刻者是谁 请看物理题,请讲解详细思路!O(∩_∩)O谢谢!还有我搞不清楚平均速度是速度加起来平均么?某运动员在百米跑道上以8M/S的速度跑了80米,然后又以2M/S的速度走了20M,这个运动员通过这段路的平均 he sings so fast that i can not listen 蝉是怎样把口器插进树皮的? Excuse me.Do you have a table for two? Sorry,_____there aren't any seats now.Do you mind waitingfor a while?此处为什么用but而不用and,and和but的用法是什么? 1.Your brother need his notebook .can you( ) it to him?2.Look( ) the map .it is a map( )china 怎样分辨蝉的雌雄,口器有区别么? pleasant词性上变成反义词如agree-disagree 名词的复数形式如何变化?如题 用所给单词的适当形式填空.1.every sunday,my mothe likes_____(wash) some clomes. when ___ you have a contest? sorry i___know 1.are.don`t 2.do aren`t 3.are aren`t 4.do don`t 名词的复数形式怎么变化? I gave him a book 直接宾语是不是只是book a是修饰book的 但为什么许多书上都写直接宾语是a book啊 Read the ____(需求广告)____(介词)your sister. I gave him a book 直接宾语是不是只是book a是修饰book的 但为什么许多书上都写直接语是a book啊 祖国颂.`````~短一点的~~~~~~~~~~~~~~~!@#$急! 有一个"日",由七跟火柴棍构成,现在给上下两根接上电源(我们假设他能导电),如果其余的火柴棍上各穿一个电阻,为了方便起见,我们可以从左到右,从上到下,就像读书一样,依次标注为1,2,3,4,5,那 He does that every Sunday.(用next Sunday改写) He( ) ( ) ( ) ( )that( ) Sunday. iso9001,iso1400和iso2000分别是指什么? 不同电压设备的同一电路的链接我们车间是380V的电源,有一些设备的额定电压是220V,应该怎么样去连接呢?是不是需要变压器啊? 连词成句:gave,him,a,I,two,age,book,days(.) ISO900,ISO9001,ISO9002,ISO9003,ISO9004,ISO1400有什么区别,是什么意思! 一个人双脚站立与行走时相比较,地面受力面积之比为 __,地面受到的压力之比为___,对地面的压强之比__. That you gave him such a book to read meant _______ .A.being wasted his time B.to be wasted his time C.wasting his time D.to waste his time 翻译包括选项并分析. 你怎么理解Iso9001 i donnot know (what还是how)to cook for dinner 两年期存款利率是4.40%,表示什么意思 天降“救命钱” 浙江金华警方顺藤摸瓜漓江入选全球最美15条河流 成中国唯借“欧锦赛”代理境外赌球网站 浙江一美国脱口秀主持人就“杀光中国人”言论俄媒:法国和荷兰部长将用带语音编码手日本厂家用世界最薄面料 制作出仅8克中方回应澳政府对华为禁令:希望提供公中方对国际原子能机构与伊朗积极互动表俄圣彼得堡将遭强飓风袭击 涅瓦河水位穆兄会领导人将首次在埃及受审 原定于俄媒:法国荷兰政府部长将使用带语音编外交部:中澳应共同努力为彼此企业正常西班牙遭美监控消息被指未引发国内强烈白宫:美国政府或会对美情报机构工作进日本一公司办公室内种160多盆大麻草澳大利亚新政府称将继续禁止华为参与网俄北高加索发生枪战 1名军官和1名武俄北高加索发生枪战 1名军官和1名武格鲁吉亚现总统发表卸职演讲 感谢民众格鲁吉亚现总统发表卸职演讲 感谢民众教授:转基因技术从根本上灭绝人类 是美军KC-46加油机成功首飞 201中国981石油平台穿越南海前往印度洋中国第六艘052D驱逐舰出坞下水 海陈水扁获准保外就医 狱方帮忙打包行李越南驻美国大使:旅居海外越南人半数在濒临破产男子借汽油费参加寻宝 挖出数日媒:泰国将打造潜艇编队 应对南海不北京市东城区突出“为民服务”主题扎实福建福州:举行县(市)区委书记抓基层中优足球队“落户”呼和浩特已引入外援大连阿尔滨足球俱乐部更换总经理及球队2015年乔氏杯大师赛秦皇岛开杆 2捷克43岁老将破NHL帽子戏法年龄纪“翼龙”性能比肩“捕食者” 将用于大以色列:不许国际刑事法庭以战争罪审判2015国际消费电子展 4K电视引领百米石雕《清明上河图》亮相湖南郴州安倍称将继承历代内阁历史认识 传达“广西贺州现巨型野生灵芝 直径107厘拾金“有昧”肌瘤超过3厘米,慎补激素!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘