RubyConf China 2019之媒体采访matz及金数据团队!

 

2019年8月24—25日,rubyconf大会在上海小南国举办,RubyConf China 是由 Ruby China 社区以非盈利形式组织的一年一度的技术交流大会,自 2009 年始至 2017 年已成功举办九届。

RubyConf China 2019之媒体采访matz及金数据团队!

本届ruby大会包括Matz在内的众多国内外技术大咖齐聚一堂,聚焦前沿技术及实践经验,旨在帮助参会者了解 Ruby 相关领域最新的技术趋势与最佳实践。金数据团队研发团队负责人:@冯智超金数据系统架构师:@尉刚强 pqwei 也作为讲师在现场与大家一起探讨对 Ruby 的见解。

RubyConf China 2019之媒体采访matz及金数据团队!RubyConf China 2019之媒体采访matz及金数据团队!RubyConf China 2019之媒体采访matz及金数据团队!RubyConf China 2019之媒体采访matz及金数据团队!RubyConf China 2019之媒体采访matz及金数据团队!RubyConf China 2019之媒体采访matz及金数据团队!

左右滑动查看更多

在会后记者采访时,ruby语言发明者 @matz 给出了ruby的未来方向解答及对初创团队的建议,金数据的研发团队负责人:@冯智超 分享了关于金数据团队在开发初期选择的 Ruby 时原因以及在使用过程中最佳实践

采访Ruby之父:matz

记者:Ruby 目前由于缺少大厂的支持,并且社区也不是足够强大,导致很多公司想使用 Ruby 而找不到方向。您作为创始人,在推广上有什么想法吗?

RubyConf China 2019之媒体采访matz及金数据团队!

matz:Ruby是开源的,不具有商业性质,单纯地让更多人使用Ruby并不是我的终极目标,让更多的开发者觉得Ruby好用,享受编程的过程,提高他们的生产效率,才是我们的终极目标,为了做到这一点,我们努力优化Ruby的性能。另外,Ruby社区的成员也一直致力于Ruby的推广,这样坚持做下去,我想Ruby会为更多人所用。

记者:我们知道目前很多动态类型语言都在试图引进一些静态类型语言的特性,你认为 Ruby 下一步这方面会有什么变化吗?

matz:动态语言和静态语言在发展过程中会互相借鉴,最早期的编程语言Fortran是静态语言 。后来的Lisp又是动态语言,之后出现的编程语言,在发展过程中互相借鉴的现象很常见。比如,Ruby在明年发布的Ruby 3中,计划增加类型判断的功能。为了保持Ruby的优点,我们希望实现不需要类型声明,就能实现类型判断的功能,这个功能可以使Ruby更有利于处理复杂项目。

记者:您之前在演讲中也提到过 Ruby 非常适合小团队初创产品,像金数据在7年前刚开始的时候也是这样子,3、5个人 web 创业。当时使用 ruby 生产力会非常高。但是随着业务的增长,团队人数变多,7 年后,ruby 会变成一个有挑战的庞大复杂的项目。您对这种 legacy ruby 项目,有什么想法和建议吗?

matz:对于Ruby项目的结构,推荐把大项目分成一个个小项目的组合的做法。当项目越来越大的时候,想办法分割成小项目后再把它们整合起来。这种做法不但有利于每个小项目团队保持激情和提高生产效率,由小项目构成的服务整体也能提供强大的功能。

 

在使用Ruby开发的大型服务中,就有团队采取这种形式提供Web服务,他们把Web服务分割为多个小服务——虽然把这种小项目称作是“微服务”有些言过其实,然后分别维护这一个个的小服务。

记者:我们知道您以前也来过中国。今年来到 Rubyconf Shanghai,和以前相比,有什么不同的感受吗?

matz:我来中国参加过几次Ruby Conf,这次因为正值我的新书《编程语言的设计与实现》在中国出版大家非常热情地参加签售,和我一起拍照。和很多热爱Ruby的人交流,我非常开心,唯一遗憾的是我不会说中文。如果听得懂中文的话我可能会有更大的收获,我会努力学习中文。

采访金数据讲师:冯智超

 

记者:我们知道金数据是12年开始开发的,那么当时是基于什么原因选择了 Ruby 作为开发语言?

RubyConf China 2019之媒体采访matz及金数据团队!

冯智超:金数据在2012年选择ruby原因有两个。一是像ruby语言开发者matz说的,ruby是一个非常好玩的语言,是专为人类而写,在开发过程中非常有趣。二是ruby的开发效率高事实证明金数据的选择非常正确。

记者:目前金数据团队在使用 Ruby 时,有哪些最佳实践可以和大家分享?

冯智超:首先,因为 Ruby 是一个动态类型解释型语言,为了保证代码质量和功能质量,我们在研发时,非常强调代码测试覆盖率和 Code Review。

 

其次,随着产品功能愈加复杂,代码复杂度的提升,我们会将一些业务抽象成为组件(比如 gem),来降低核心业务的复杂度。

 

最后,Ruby 也不是适用于解决所有问题的,我们也使用了一些微服务架构,在这些服务中,也使用了一些例如 Python,NodeJs 等其他语言和框架。

点击下方观看现场采访视频

视频较大,请在Wi-Fi情况下观看)