Steve Klabnik 采访

“只要我们能够提供有用的东西,就不怕 Rust 不完美”

简介

Steve Klabnik 是 Rust 核心团队的成员,活跃的开源贡献者,也是“Rust Programming Language”、“Rails 4 in Action”和“Designing Hypermedia APIs”等书的作者。 2012 年和 2016 年,我们曾邀请 Steve 在 RailsClub(如今的 RubyRussia)会议上发言。 从那以后,Steve 一直致力于 Rust 的工作,做了许多有趣的事情,我们意识到应该再一次对他进行采访!

我们与 Steve 进行了座谈,听他亲自讲述自己的经历,包括他目前的职业活动、Rust 设计的成功之处、关于“全栈”开发的炒作,以及如何克服倦怠。

Steve Klabnik at RubyRussiaSteve Klabnik at RubyRussia by Evrone

采访

Evrone: 除了对开源的贡献外,你目前有哪些专业活动?

Steve: 我在 Oxide, 计算机公司工作,编写了许多 Rust 代码!

 

Evrone:  除了 Ruby 和 Rust 之外,你还对哪些技术感兴趣?

Steve:  目前,Rust 是我的主要关注点,但我对“无头 CMS”和“JAMStack”的兴起也非常感兴趣。

 

Evrone:  你花了很多时间寻找理论挖掘方面的大牛来为 Rust 开发人员创建一流的文档。 回顾这门语言的发展历程,你认为哪些主要的设计成功之处为这门语言的流行作出了最大贡献?

Steve:  最重要的就是想要成为一门有用的语言。 我们尽量让开发人员感到熟悉,这样就能使新的想法受到关注。 只要我们提供有用的东西,就不怕 Rust 不完美。

 

Evrone:  日常工作中你最喜欢的软件工具集是什么?

Steve:  我使用的是带 vim 插件的 Visual Studio Code。

 

Evrone:  你认为良好的教育对于软件开发人员有什么意义? 是否如 David Heinemeier Hansson 所说,我们需要学习“计算机科学”理论才能成为程序员,或者需要学习如何成为“软件作者”?

Steve:  我有学位,但更多东西是在课堂之外学到的。 这对我来说很有用,但我认识很多没有经过正规培训的优秀程序员。

 

Evrone:  松本行弘曾经说过,“选择了语言,也就选择了你日常工作的项目,以及完成这些项目的方式”。 Rust 开发人员主要期望什么样的项目和工作文化?

Steve:  许多 Rust 工作都涉及基础架构,例如操作系统、Web 服务器、DevOps 工具、数据库、嵌入式设备等。 也涉及一些 Web 应用,而且最近增长很快。

 

Evrone:  Rust 和其他语言最近引入了新的“异步/等待”语法和概念。 作为一个编写语言文档并实际教人使用语言文档的人,你能跟我们说说关于这些新功能的学习曲线和开发人员的反馈吗?

Steve:  Rust 以难学著称,部分原因是它借鉴了许多其他语言。 所以,如果你没有用过它所借鉴的语言,那么它对你来说可能会很难。 但是和你用过的语言类似的内容可能会比较容易。 也就是说,对于每个人来说,难易程度是不一样的! JavaScript 程序员可能会说“这是异步/等待,没什么大不了的,没问题”,而一个 C 语言程序员可能会说“那是什么?” 但当涉及到指针时,C 语言程序员会说“这个我懂”,而 JavaScript 程序员会觉得这有些困难!

Evrone: 你觉得软件开发有“天生的吸引力”吗,就像玩乐器或画画一样?

Steve:  可能有。 即使有,我也不认为必须擅长编程。 擅长编程可能会使事情变得更加容易,但不是必需的。

 

Evrone:  你认为 Rust 编程语言现在面临什么竞争,在哪些领域?

Steve:  现在真正的挑战是就业。 Rust 相关的工作比你想象的要多,但是要想得到一份工作并不是特别容易,因为工作机会并没有那么多。 这种情况一直在改变,但我们还没有达到目标。

 

Evrone:  现代语言的类型系统涵盖了从“动态类型”到“静态类型”的很多种类,还有许多变种,例如新的“渐进类型”方式。 你认为关于类型的主要挑战是什么,为什么我们没有一个可以被大多数编程语言使用的“最佳”策略?

Steve:  不是所有的类型系统都是一样的。 类型系统有很多不同的种类,某些系统会比其他系统更适合处理某些问题。 然后还有个人偏好。 我知道有些人永远不会使用动态类型的语言,但是尽管我更喜欢静态类型的语言,但我可能会选择动态类型的语言,而不是静态类型系统较弱的语言。

 

Evrone:  许多开源开发人员会产生“倦怠感”,更不用说类似最近 actix-web 冲突的事件了。 是什么帮助你保持工作和生活的平衡,而不会产生倦怠?

Steve: 我觉得我不擅长保持平衡,这并不容易。 我有的时候会很忙而有的时候会很闲。

 

Evrone:  新出现的“全栈”炒作要求开发人员学习多种不同的语言和栈。 由于你精通 Ruby 和 Rust 之类不同的生态系统,你觉得对于广大开发人员来说,把许多不同内容纳入日常工作是否明智?

Steve:  学习新技术总是好的,我觉得如果你有时间和能力去学习更多新技术,你应该持续学习新事物。

 

Evrone:  我们是否可以根据软件开发人员从事编程工作的年限来合理地评估他们的专业知识?

Steve:  我不这么认为。 有时候,经验是有帮助的,但也容易固步自封。

 

Evrone:  你认为 WebAssembly 未来能否取代 JavaScript 成为前端平台的首选,还是说“沙盒”架构将永远把它限制在“高性能插件”的小众领域?

Steve:  我不认为它真的要取代 JavaScript,而是要增强它。 我觉得 Wasm 的使用会越来越广泛,但 JS 的地位不会改变。

 

Evrone:  网上关于“单体应用与微服务”架构的讨论非常火热,有的大公司把单体应用拆分成了微服务,而有的公司则把微服务重新粘合成了美妙的单体应用。 现在就更复杂了,各大云平台都推出了全新的“功能即服务”。 你能不能给开发人员一些建议,告诉他们如何为项目作出合理的选择?

Steve:  我觉得这取决于团队的技能。 有的团队喜欢单个大型代码库,有的团队则喜欢多个小型代码库。 我认为它们都可能很好地发挥作用,也都可能失败。

 

Evrone:  对于普通开发人员,如何在“ SemVer”和“ CalVer”之间进行选择?

Steve:  我个人更喜欢 SemVer,但我有很大的偏见 :)

 

Evrone:  如果公司聘请全职软件作者,那么开源是否合理? 还是应该选择 GitHub 赞助、Patreon 等服务,来为开源维护者和贡献者提供资金支持?

Steve:  我觉得公司雇佣全职人员很好。 每个人都要交房租,要吃饭。 如果这些钱是来自于赚钱的组织,那通常比来自其他开发人员的捐款要好得多。

 

观看 Steve Klabnik 在 2016 年 RailsClub (RubyRussia) 上的报告,“通过 Rust 探索 Ruby”:

我们很高兴与 Steve 成为朋友,他鼓励我们在很多项目中使用 Ruby 和 Rust。 如果您需要帮忙开发出色的解决方案,请与我们联系,我们将竭诚为您服务!

 

联系我们
已有项目构想?
我们一起来实现它吧
添加附件
文件必须小于 8 MB
允许的文件类型:jpg jpeg png txt rtf pdf doc docx ppt pptx
本网站受 reCAPTCHA 保护,并适用 Google 隐私政策服务条款