从实践者的角度看 Rust

百家 作者:InfoQ 2017-10-12 07:51:28

编程语言相关的讨论,几乎是技术社区永恒的热点话题。在即将于 10 月 17~19 日召开的 QCon 上海 2017 上,我们也专门设置了《编程语言》专题。届时,PingCAP 首席架构师唐刘将分享《Futures and gRPC in Rust》。

我们先来了解下他。

唐刘,PingCAP 首席架构师,典型技术极客一枚,在分布式,高性能,高可用上面有丰富的开发经验,现正从事下一代分布式数据库 TiDB 以及分布式存储 TiKV 的开发,致力于在基础架构数据库领域,提供一套完备的 HTAP 解决方案,解放生产力。开源爱好者,知名开源软件 LedisDB,go-mysql 等系统的作者。工作之余,喜欢阅读和写作,希望自己不断精进。

QCon 在会前采访了唐刘老师,交流了编程语言方面的一些问题。

在谈到对编程语言的态度时,他说:

我个人并不是一个语言爱好者,也不会刻意的去研究不同的编程语言,但我会的语言倒是蛮多的。我自认为应该是一个工程实践派,也就是要解决这个问题,哪种语言好,就用哪种。

我个人最喜欢的还是 Go 语言,无论从开发效率还是运行性能上考虑,Go 都是非常不错的选择。当然,如果现在要过于关注性能以及跟操作系统打交道,我会使用 Rust。

在工作中,我们主要使用 Rust 和 Go,毕竟整个 TiDB 都是基于这两门语言打造的。

QCon:TiKV 选择用 Rust 实现,具体应用中感觉 Rust 有哪些地方体验比较好?

使用 Rust 的好处在于只要你挨过了最初学习的阵痛期,写代码会非常的高效,写完只要通过编译了,几乎不用担心 data race,dead lock,dangling pointer 等问题。

另外,Rust 的包管理也做得很不错,在 crate 上面可以找到非常多的高质量第三方组件,我们团队也贡献了几个。

如果使用了 clippy,在编译的时候,Rust 还会告诉你这样写代码虽然是正确的,但最好改成这个样子,所以你看大家的 Rust 代码整体风格会非常的一致,简洁美观。

QCon:是不是遇到过什么坑呢?

相比 Go,Rust 在 profile 上面的工具其实比较缺,虽然有 perf,systemtap 这些外部工具可以用,但也会给使用者带来新的学习负担。

Rust 对于网络程序的编写并不友好,之前就只有一个可怜的 mio,要实现个高效 RPC,几乎自己要做非常多的工作。譬如我们就自己基于 C gRPC 做了一个 Rust 版本的。

不过后面 tokio 这套生态起来了,情况可能会好一点。

QCon:Rust 也在不断发展,你们会一直跟进新的版本吗?

是的,我们在 TiKV 里面一直用的是 Rust 的 nightly 版本,然后会定期升级到最新的 nightly,我们在这个上面的策略还是比较激进的。QCon:团队是不是也对 Rust 的发展贡献了自己的想法?对 Rust 的未来发展有什么期待?

之前跟 Rust 团队提到过让 Rust 能跟 C++ 很好的整合,但现在看起来难度还是很大,我们还是只能通过 C。

对于 Rust 的未来,我们希望能提供更加完善的 profile 工具,譬如 memory profile 这些。

再就是希望在网络编程方面能够更方便些,这样大家就能更好的用 Rust 进行高性能服务器开发了。

另外,希望能有更多的人参与到 Rust 社区里面,一起把这门语言发展壮大起来。

QCon:Rust 学习曲线比较陡峭,可以分享下学习 Rust 的经验吗?

对于 Rust 学习,我觉得还是要动手实践。就看看语法,看看书啥的不管用,实际中一写代码就编译报错了。大家可以参与一些知名的开源 Rust 项目,譬如我们的 TiKV,rust gRPC 这些,也可以自己写一些小的 library 放到 crate 上面供大家使用。

在我们团队里面,大家也并不是立刻能快速上手 Rust 的,毕竟这门语言学习曲线太陡峭,大家也都是一边开发,一边学习,通常都经过了 1 个月的磨合期,才慢慢熟练的。

期待唐刘老师在 QCon 上海 2017 分享的《Futures and gRPC in Rust》。


写《程序员修炼之路》的 Andy Hunt 和 David Thomas 大师曾说,要在软件开发这个行当立于不败之地,应该“每年学一种新的语言”。点击【阅读原文】立即传送唐刘老师分享内容,还有 Java、.Net 、Kotlin 等编程语言的发展和业界实践。此外,C++ 之父 Bjarne Stroustrup 将带来主题演讲《编程的未来及 C++ 在其中的作用》。

目前 QCon 上海 2017 门票即将售罄,来现场与技术大咖零距离,获得技术点拨。如果在报名过程中有任何问题,欢迎联系购票经理 Hanna ,电话:15110019061,微信:qcon-0410。


关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接