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

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

(责编/夏梦竹)

AMD高级副总裁Lisa Su访华 宣布引领AMD复兴的五大战略 一周热点:IBM新技术使网速达400G/s,硬盘会“烧掉”吗 特种作战,纽约极客企图建造现实中的“潘多拉星球” 领先Google 150年的数据可视化和“不务正业”的超级计算机 苹果会成为新微软的四大理由 雨血·影之刃:参选2014年Unity游戏及应用大赛 AT&T联手IBM对抗AllSeen:“晚点和堵车”将成历史 微软WP春季更新将降低手机生产成本 意在开拓新兴市场 私人定制,十款最佳Node.js MVC框架 开发者“逆袭”,就等你一票! 基于多路云计算方案焕发新春 浪潮抢发E7 v2服务器 美国人眼中的腾讯 英特尔发布64位凌动处理器Merrifield 布局移动市场 OvershareKit:开源的iOS社交分享工具库 Ruby 2.1.1发布,改进系统加速,服务器兼容等问题 专访Ejoy2D作者云风:因Lua而生的开源图形引擎 当DDoS跨入400Gbps时代,那些来自孩子们的攻击该如何应对! Mesos渐入主流,Twitter模式有望“无限复制” 几十亿美元当头,你现实世界信息是否还会安全? 华为V3服务器挑战小型机,多路高端市场汹涌 迟到的祝福:Ruby生日快乐!编程快乐! 无缘CEO Stephen Elop将执掌微软硬件业务部门 又一API聚集地 3scale成立API Codex 你应该放弃的八大设计元素 Tropo与华为达成合作 Tropo API首次可供中国电信客户使用 抢先看:2014即将召开的Web Design大会 小米盒子2视频推送测试及解决播放优酷视频卡的问题 《近匠》UPYUN——从开发者变为服务者 移动开发者必须了解的10大跨平台工具 不差钱:30+收购案,170亿美元投资,IBM再度出手收购Cloudant 微软反击谷歌:Windows授权费降七成+硬件要求减少一半 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 oracle 入门的书籍,请大家推荐!本人是菜鸟现在想学习 oracle请大家多多指教!!!!! 谁有好的VB电子书籍 不会使用网上的控件,谁教我? **********四大网站被黑!!!********** 怎麼寫這兩條SQL語句;(1)顯示當前數據庫?(2)顯示當前所有用戶表? 急,謝謝 送分问题,绝对给分! 如何才能不改变字体大小? 数据窗口有bh(编号),name(名称)两列,编号是string型,用什么方法可快速查找出bh中的最大值?只准对数据窗口操作。 delphi(dll) 大话爱情大结局 ??如何编写邮件服务器? createfont怎样创建一个随意宽高的字体? 急,请问有函数可取字符串后面N位字符吗?在线等待 怎样显示报表页总数问题 在打印中如何实现实现小计(即每页显示金额的总和)100分 问一个简单的问题,关于初始化 请问谁有动态树状目录的原码啊,急需!! 什么问题,怎么解决? 西瓜:有人要求我贴你的没穿外套没穿鞋子的照片 就是你说生气的那张 贴不贴啊? 怎样将一个十进制数转换为二进制数,并将二进制数中的每一位单独取出来? GetProcAddress在VB中的使用? excel单元格格式问题 用按钮保存网页的问题 用c++ builder和access.数据表中的记录多了之后,应用什么方案将之备份以及恢复? 以下ASP在Win2000server上运行报错请问大家为什么??? 在指定位置输出文本 怎么办? 如何启动和终止一个NT服务 .Net——又一个起跑线 怎么样注册jsp上的jdbcoracle驱动 什么问题,怎么解决? 我的爱情大结局----失败爱情原闯文章 在学习了2个月的delphi后,总结四大问题! OnPaint()的问题?为什么我的程序要刷很多次才能得到正确的结果? win2000 Server中的终端服务问题,急,所有的终端都趴下了! 深入浅出MFC 100分﹕vs.net正式版的產品密鑰 怎样动态改变下拉框中的值? 如何将已有的程序(有源程序)封装成ActiveX控件? 讨论一个数据库建模的使用工具问题? 关于Flash的Action的小问题 怎样为xslt中的超联接加上参数? 问题 如何设置datagrid行背景颜色? 安装程序安装完运行显示“运行时错误'380':无效属性值”是怎么回事? win2000+ms proxy 2.0问题 API函数 ReadFile的pb的中文说明谁有,告诉我好吗? 在线求助 在线等待,急 关于计算字段,急! 数学·九年级·全一册(人教版)(十四)九年级上册数学期中测试卷(A)的答案 有没有根据由若干小正方体堆砌而成的立体图形的三视图判断有多少个小正方体这一类的题目?越多越好! 甲班学生不满50人,在一次课外活动中,参加各类运动的占全班人数的三分之一,下面还有参加绘画的占全班人数的七分之一,参加唱歌的占全班人数的二分之一,余下的参加跳舞,参加跳舞的有多 四一班和四二班班比赛乒乓球.每班选出乒乓球最好的5名同学参赛,共打打5场球,5局3胜制.如果你是.四一班体育委员,你怎么安排本班的的5名选手出场比赛才有可能打赢比赛. 启航 公园里都有什么生物,生活环境是什么?(急!只要两个,生活环境就是土壤什么的. 甲、乙两个乒乓球运动员进行乒乓球单打比赛,比赛规则是5局3胜制(如果甲或乙无论谁先胜3局,则宣告比赛结 是试卷!全名是 英语三辰影库音像出版社的! 各种生物的生活环境请在植物、动物和其他生物中各选5个(两个以上也可以)来介绍其生活环境和生长状况 乒乓球比赛的规则是五局三胜制三局两胜哪个好 用若干块相同的小正方体搭成一个几何体,该几何体的三视图如图所示用若干块相同的小正方体搭成一个几何体,该几何体的三视图如下图所示,则搭成该几何体最少需要的小正方体(我最想知 初一寒假作业P26的25题《苍蝇的路程》?2011. 两个乒乓运动员进行单打比赛,每赛一局甲胜的概率为0.6,乙为0.4.问三局两胜和五局三胜哪种对甲有利要有计算过程 六年级英语课外读物 某校在一次课外活动中把学生编为9个组 若每组比预定人数多1人 则所需学生超过200人 若每组比预订人数少一人 则所需学生总数不到190人 求每组学生预定人数是多少? 一元一次不等式组解 乒乓球比赛七局四胜和五局三胜有什么区别 梦想起航用英语怎么说? 某校在一次春游中把学生编为9个组,若每组比预定的人数多一人,则学生总数超过200人;若每组别预定少一人 八年级上册数学复习提纲(人教版)代数部分最好多弄点 梦想从这里起航用英语怎么说? 生物的生活环境是指什么A.生存地点 B.影响生物生活的非生物因素 C.影响生物生活的因素 求九年级数学上册的复习提纲 由此起航英语怎么说 如果好,我会提高悬赏分数. 就是要第一章:证明(二)第二章:一元二次方程第三章:证明(三)第四章:试图与投影第五章:反比例函数琳子在这里谢谢各位了.我明天要考试. 起步晚用英语怎么说RT 上图反映的是某校六1班学生在课外活动中参加各种兴趣小组的情况,用什么表示全班同学的总人数,用什么表示参加各小组的学生人数占全班总人数的百分比.2.参加舞蹈小组和美术小组的学生 得了把 都开学了 我有一批大树,需要移栽,请问有什么注意事项? 某校参加全市中学生篮球比赛,共参加了16场比赛积28分,规定一场积2分,输一场积1分 该学校对胜,负各多少 人教版九年级上册数学复习提纲 夏季工程移栽树木需要注意些什么? 小学作文写人的(同学)要求400字,半命题,小______如:小淘气,小机灵支持复制.汗- -不是考试,练笔,要我自己写的就别来灌水。 (1)七年级(3)班的队列以每小时6km,李强从队尾以每小时10km的速度赶到队伍的排前后,又以同样的速度返回队尾,一共用了7.5min,求此队伍的长(2)甲、乙两名同学在同一道路上相距5km的A\B 小学四到六年级以上的孩子推荐哪些课外读物比较合适? 篮球赛比赛规则--视频解说 小华与小斌骑自行车从学校出发去博物馆参观,如果每小时骑10千米,上午10时才能到达,如果每小时骑15千米,则上午9时30分便可到达.求学校到博物馆之间的距离.同学们都说是15千米,如果真的是, “起飞”的英语怎么说? 三人制篮球赛竞赛规则 甲乙两人进行乒乓球比赛,比赛规则为“3局2胜”,即以先赢2局者为胜,根据经验,每局比赛中甲获胜的概率为0.6,则本次比赛甲获胜的概率是? 起飞用英语怎么说 6个面积完全相等的正方形围成的立体图形就是正方体 设篮球队甲和乙进行比赛,若有一队胜4场则比赛结束.如果甲和乙在每场比赛中获胜的概率都是1/2,求比赛场数的数学期望. 一:有趣的人体喻词1:骨肉 1:喻指真诚.勇气口齿 2:喻指说话的本领喉舌 3:喻指技艺.本领肝胆 4:对人和事的感情咽喉 5:喻指头绪.条理首脑 6:喻指最亲的人皮毛 7:喻指重要的人物腹背 8:喻指暗 2010年某地区的篮球队共进行了22个场次的比赛,比赛规则:胜一场积2分,输一场积1分.小蜜一直在关注比赛她认为会有一个球队出现胜场积分等于负场积分.你认为可能吗?用一元一次方程) 谁有“广西师范大学出版社8年级寒假篇假期园地“答案本人跪求! 小学四至六年级语文必知的课外知识?急 某市中学生篮球联赛规定:每队胜一场得2分,负一场得1分,实验中学队15场比赛得分24分,问该队负了几场?要过程(方程) 广西师范大学四年级假期园地全部答案广西师范大学后面有出版社 常熟市08年六年级语文课外知识能多则多,要有用的,可能考到的! 镜湖小学六(8)班的同学准备选编一本自己的文集—《让我们荡起双桨》,他们对作文进行编辑、分类,设计了“感受生命”、“体会亲情”、“走进名人”等栏目,请你再设计一个栏目.要求 9月份上初一,我平常读什么课外读物好?我平常读意林少年版,还有什么杂志有少年版,而且对我有益? 比如说什么[猜字谜]、[成语知识]啊.(要在六年级知识水平以上的,我要做幻灯!) 一个立体图形从上面看,形状是3个连着的小正方体(横排),从右面看,是三个连着的小正方体(竖排).问:搭这样一个立体图形至少需多少个小立方体 最多需多少个? 原题是多选题 A:4个 B:5 已知一个棱长为2的正方体,被一个平面截后所得几何体的三视图如图所示,则该几何体的体积为A.8 B.20/3 C.17/3 D.14/3 语文课外知识!小学六年级的!快要升初考了!我急呀!记得加答案!谢谢大师! 用7个同样的小正方体搭成一个立体图形,从正面.后面.左面.上面.右面看都有5个正方形,怎么搭?需要几个? .如图,是一个由若干个相同的小正方体组成的几何体的三视图,则组成这个几何体的小正方体的个数是( ) 还有什么在花园中的生物?有哪些特点? 一立体图像,正上方可看到五个小正方形,右看两个正方形,如果搭这样的立体图形,需多少个小正方体?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘