本文是一篇 Joseph B. Rickert(简称 JBR)对 J.J. Allaire(RStudio 的创始人和首席执行官)的采访稿,原文在此。统计之都与作者沟通后得到授权将其翻译为中文,希望可以让广大读者能够更多了解在 R 的世界中这个叫 RStudio 的地方。在这次采访中讨论了 RStudio 的历史、使命和 J.J. 的未来愿景。 短暂的交谈中讨论了各种各样的主题,包括 RStudio 的业务、R 语言的发展、R 联盟对 R 社群的重要性以及 J.J. 对 R 新手们的建议。

J.J. Allaire

JBR :问您最早是如何接触到 R 的?R 最开始引起您的关注时,您在做什么?为什么是 R?

J.J. :我本科的时候主修经济学和政治科学,这两门学科让我对量化研究产生了兴趣。当我还是学生的时候,我用过 SAS、SPSS 和 EXCEL。这是我首次接触软件和计算,它们深深吸引了我,而后来我的职业生涯最终更多围绕软件开发而不是量化分析。大概 8 年前,我在工作的同时在寻找其它值得从事的事。我很清楚自己心里想要的是希望自己开发的软件是开源的,因为我想开发出一种能长期对所有人都是免费且容易获得的软件。

也就是在那个时候我接触到了 R,当了解了这个稳健并被广泛应用的开源统计计算环境时,我觉得它棒棒哒。我想它将是我倾其精力的一个伟大领域。我在学校的时候,最早对量化分析很感兴趣,同时,我掌握了重要的编程能力。我正好可以把这些能力应用到 R 上,做出有意义的贡献。

JBR:是否有什么特别的事件激励您创立 RStudio?当您成立它时,您设想它会是一家什么样的公司?

J.J . :RStudio 一开始并不是作为一家公司而成立的。它最开始仅仅是一个我自己从事的开源项目。最初,我开始研究一个基于 R 的 IDE(集成开发环境)的 Web 概念。大约过了九个月,我意识到凭我一己之力搭建这个 IDE 实在是太艰难了,所以我找来了 Joe Cheng 跟我一起干。Joe 和我在过去的几家公司共事过。当时我跟他说:“Joe,我无法保证这将成为一家公司。它可能只是一个开源项目,这对你来说可以吗?”他说 “当然可以。” 最初这真的只是我们两个人一起从事的一个开源项目,而且也没有打算将它必须做成一家公司。我当时想的是,如果这个项目可以演变成一个公司,那将是极好的,但这并不是必须的。

JBR:那您对 RStudio 现在这个结果感到惊讶吗?

J.J . :我当初其实并不知道会发展成什么样,但可以肯定的一点是开源软件有可能被广泛使用。说实话我并不惊讶 R 会大放异彩,但我真的没想到自己会创立一个跟 R 相关的公司。说实话,我惊讶于现在的任何结果。真是万万没想到。

JBR:请问您在 RStudio 扮演什么样的角色?您主要负责公司运营还是负责产品开发呢?是什么在每天早上唤醒您呢?

J.J . :我主要做的是编写软件。这是我最喜欢做的事。虽然我是 RStudio 的首席执行官,但事实上我并不经营公司,而是与其他从事公司运营的人员合作,特别是 Tareef Kawaf——RStudio 的总裁,目前 Tareef 主要负责公司运营。

我将自己的绝大部分时间,超过百分之八十的时间都用于编写软件。一开始我担任 RStudio IDE 的主要开发人员,之后 Joe 和我一起工作了几年。现在我一方面继续负责 IDE,另一方面也是很多 R 包的主要开发者,包括 R Markdown 包。同时我也是其他一些包的维护者,如 htmlwidgets 和 dygraphs 包,此外也协助了 shiny 和 Rcpp 等。

JBR:请问您的一个典型的工作日是什么样子的?

J.J . :一个典型的工作日,我从查看电子邮件开始,看看有没有什么紧急事件,对一些请求进行反馈或看看一些错误。我可能花大约一个小时来查看我的收件箱,然后花五六个小时为各种产品和包编写代码。之后,当 RStudio 的西雅图办公室的员工在我的中午时间上网的时候,我可能在网上和他们交流一下(译者注:J.J. 在美国东部波士顿办公室上班,与西海岸时差三小时)。然后,也许我继续码些代码直到一天结束。各种各样的事情都会发生,但我常规需要参加的会议很少。我努力保持各项事务条理清晰以便于产品开发工作。

JBR:从外部看来,RStudio 用大量的资源来开发开源包和免费产品。许多人都想知道 RStudio 如何能成为一个企业。您能简单谈一谈 RStudio 的商业计划吗?RStudio 究竟如何营利呢?

J.J. :好的,首先,RStudio 公司的使命是开发用于数据分析和统计计算的开源软件。所以,如果你看到我们正在开发大量的开源软件,你不必吃惊,因为这正是我们最主要的使命。与此同时,为了完成我们的使命,我们需要引进尽可能多的人才。显然我们还需要发展和壮大一个围绕 R 的业务。

我想说,商业业务有两个主要方面,第一个是关心想要大规模部署 R 的组织,这里的规模是指计算规模或者是在更大的组织内使用 R。为了满足这些要求,我们增强了一些服务器产品的商业版本,例如 RStudio Server Pro 和 Shiny Server Pro,它们具有大规模部署 R 的功能。虽然我们的开源产品是可以免费获取的,可能许多人不会购买我们的专业产品,但当客户对 R 更加认真时,或者需要在更大的环境中部署 R 时,他们就会倾向于购买我们的专业产品。所以,这就是我们营利的主要方式——靠那些专业的服务器产品营利。

此外我们还有一个云业务,通过网络提供我们的产品服务。例如,我们有 shinyapps.io 用来部署 Shiny 应用程序。目前它并不是我们业务的一大部分,但我们预计它将变得越来越重要,同时我们也期待在未来有其它云服务的出现。

JBR:请问 RStudio 的长期目标是什么?

J.J. :RStudio 的核心目标是集中为用户创造一个优雅并高效的使用 R 的环境。这里我主要指的是 RStudio IDE。一个良好的使用 R 的工作环境,不仅需要为用户提供工具以确保高效工作,还需要将 R 内的所有丰富的内容展示出来,让人们清楚 R 可以胜任的工作,之后可以随心所欲地使用 R。

其它目标集中在创建 R 的 API(应用程序接口),它们是直观的并且相互关联的。这就是 tidyverse 包,如果你愿意,你可以使用 Hadley 和其他人开发的 R 包大家庭像 ggplot2,dplyr,tidyr,lubridate,stringr 等。(译者注:因为 Hadley Wickham 和他的合作者们这些年创建了一系列数据整理和可视化的 R 包,这些包被坊间称为 Hadley 次元,即 Hadleyverse,为避免个人崇拜嫌疑,后来被 Hadley 改为 tidyverse,极乐净土,意思是让一团浆糊的数据变得干净整洁,方便探索、可视化和统计建模,关于什么是 “干净的数据”,可参考他的论文 “Tidy Data”)

此外我们还专注于帮助人们交流他们在 R 中做什么。比如 R Markdown 主要用来从 R 中创建文档和网页内容,Shiny 则是使用 R 创建交互式应用程序。

未来我们将继续沿着这三个方向迈进,致力于让我们所有的开源产品和 R 包精益求精。我们也将继续深入了解大规模部署 R 的公司的需求,无论是尝试实现高性能,确保稳健安全性,还是与其它企业软件系统无缝集成。随着我们继续深入学习,我们将继续沿着这个方向开发产品。虽然我们已经解决了一些问题,但还有很多问题亟待解决,我们能做的还有很多。构建我们的专业服务器产品线也是一个重点,构建托管产品,让人们在云中访问和使用 R。

另外,我们想把我们已有的知识教给更多的人。因此,我们正在努力创建一个全面的课程,人们可以通过不同的媒体,包括书籍、视频、网站和交互式定制进度教程来学习。以后我们会在教育方面投入更多的精力。

JBR:到目前为止,从您所说的,RStudio 项目似乎都与生产工具有关,以帮助他人开发 R 软件和进行分析工作,但一个完整的 R 基础工具链是什么样的呢?

J.J :我认为我们一直在谈论的,比如帮助大规模部署 R 这些我们传统上关注的事情是宏观工具。他们是非常非常有用的。但实际上还有另一层我们并没有谈到的工具。在任何给定的应用程序领域中,我们都会希望有一套特定于该领域的微观工具。这虽然是极其重要的,但我们的角色多是这些工具的协助者,而不是创作者,因为我们并不是领域专家。

随着时间的推移,我认为整个 R 社区正在从事一个非常大的集体项目,以建立所有必要的工具,让人们分析不同领域的数据。我们正在做的一些工作就侧重于实现这一点。例如,Hadley 正试图创建工具,并教人们如何为 R 构建自己的优秀工具,结果已经有很多人开发了一些精彩的软件包,让特定类型的数据分析变得更便捷。我在 Rcpp 上所做的工作就是让人们能够在自己领域内获得最高的性能,无论是快速读取数据还是快速分析,还是优化某些算法。此外,我们在数据可视化方面开发的许多工具都是提供可扩展平台,让人们为不同的域实现自定义的静态和交互式可视化。那么一个完整的工具链是什么样子的呢?我认为它的一部分是由我们构建的工具组成,其余的是由其他人在我们的基础上构建的工具组成。

JBR:sparklyr 是 RStudio 的一个新方向,还是只是您描述的工具链的一部分?

J.J . :我认为这并不是一个新的方向。在 2014 年 UCLA 的 UseR 会议的特邀主题演讲中,John Chambers 谈到了 R 的原始概念是创建一个接口语言。其中一个动机是,人们想使用强大并且高性能的 FORTRAN 库进行已有的统计分析,但他们希望用更灵活和交互的方式来使用它们。所以这个想法是创建一门擅长提供接口到其它计算系统的语言。刚开始时它是对接现有的 FORTRAN 代码,但随着时间的推移,它已经扩展到运行所有的东西。R 是一个非常好的接口语言。

John 在他的演讲中提到了几个例子,一个是我已经谈到的 Rcpp,另一个是 H2O,它是一个用于进行机器学习的分布式计算系统。 H2O 是用 Java 编写的,而不是 R,但是开发人员提供了一个非常好的 R 接口。我认为几乎所有与统计学家或数据分析师相关的应用程序都可以用这个接口概念去做。如果它还没有在 R 中,你可以使用 R 创建一个流畅的和直观的接口。

这就是我们对 sparklyr 的看法。Spark 提供了一系列人们想用的大数据功能,我们在 R 中创建了一个丰富的接口,所以当你使用 Spark 时,R 中所有的工具和技术、工作环境和交流能力如 R Markdown 和 Shiny 都可以为你所用。John 提到 H2O,而 R 在很长时间里一直在做分布式处理的事情,所以我认为我们只是以最新和最大的分布式计算平台实现 R 的愿景和使命。

JBR:您怎么看待 R 和大数据?您认为 RStudio 做了什么有助于改进已发现的 R 的局限性?

J.J. :同样,你应该把 R 理解成一个用户接口,或者一种提供了很好的用户接口的语言。开发者并不在 R 中实现核心算法和核心分布式计算原语。他们把 R 作为与这些东西交互的接口。一旦人们理解了这一点,并且他们看到 R 有多棒,他们可以如何使用 dplyr 包和 Spark 集群交互,我认为他们就会灵光一现然后说:“好啦,我知道 R 适合哪些方面了。它是世界上用于数据分析的最佳交互式环境,现在我可以直接将 R 用于 Spark。”

JBR:RStudio 是语言联盟(R consortium)的白金创始会员,外界看来像是一个小公司的大担当?

J.J. :是的。

JBR:为什么 R 语言联盟很重要呢?您对它未来的希望是什么?您认为 R 语言联盟能实现些什么?

J.J. :R 语言联盟有趣的地方在于它代表了 R 的所有利益相关者。最初的利益相关者是 R Foundation 和 R 的创始团队 R core。那里有一整个使用和开发 R 包的社区,有好多围绕 R 开展各种业务的供应商。R 语言联盟把所有的这些人联合在一起,说:“R 变得越来越好与我们有很大关系。我们与这个系统的完善息息相关,所以让我们聚集在一起,可以商讨一些事情,资助对 R 社区有益的一些项目。”

R 语言联盟是一个真正的意义深远且重要的群体。它有潜力成为 R 社区中每个人的连接点。这就是为什么我们对 R 语言联盟有如此大的热情,并且让 RStudio 的开发者花费大量的时间在上面。如果它运作良好,R 语言联盟将作为 R 的中流砥柱,提供一个用于交流 R 的平台,让 R 变得更值得信赖。我们希望尽最大的可能来支持它。

JBR:除了支持 R 社区,似乎 RStudio 包是面向可重复的研究和改进一般的科学研究。请问您对科学本身有具体的目标或愿望吗?

J.J. :科学中关于可再现研究我们可以做的还有很多。可重复的研究关乎你所做的工作的真实性。事实上,人们依赖科学软件做一些非常重要的决定,以究天人之际、通古今之变。软件产生结果的过程的真实性和可信度是至关重要的。

我们的目标是确保在 R 生态系统内可重复工作的工具的可靠性。在过去,人们可能觉得重复性工作需要更多的工作、付出更多的努力,并认为 “我没有时间这样做”。我们正在努力使可重现的工作变得比传统工作方式更简单。基于这个想法,我们提供了一个完整的工具链让人们撰写优雅而可靠的数据分析文档,而且无需作者投入额外的精力,这些文档自然而然就是可重复的。

此外,可重复性是我们专注于教人们如何编写和使用代码进行数据分析的原因之一。我们没有投入精力开发数据分析的图形界面工具,因为基于图形界面的操作不可重现,不容易检查,不容易共享,也不容易自动化。我们专注于代码。这是一个核心原则,无论如何,我们宁愿让代码更容易运行,而不是试图消除它。

JBR:对于初次接触 R 的人,您有什么建议吗?无论是学生、经验丰富的统计学家还是研究人员?

J.J. :我会建议他们练习一下 Hadley Wickham 和 Garrett Grolemund 在 “R for Data Science” 这本书中的写的 R 代码。这本书详细说明了在 R 中处理数据的 tidyverse 和基本原则。R 中有很多很好的工具,但并不是每个用 R 的人都能立马找到这些工具。这正是我们试图改变的。我还建议 R 的新手仔细看看我们在 RStudio 开发的所有工具和包。

此外,当你有问题或遇到问题千万不要放弃。在 StackOverflow 和其它地方有很多很有用的关于 R 的信息,如果你仔细看它们的话,你有机会找到你的问题的答案。

JBR:您认为统计学家和数据科学家大体上应该知道哪些关于计算机科学的知识呢?

J.J. :这是个有趣的问题。许多关于 R 的最普遍的看法和思考都围绕着 Bo Cowgill 那著名的言论:“R 最好的地方在于它是由统计学家编写的,R 最糟的地方也在于它是由统计学家编写的。” 然而事实上,R 的开发者们对编程和计算机科学相当了解。他们的目标一直都是提供一个让掌握很少的计算机科学知识的人能实现她想法的表达式语言。R 努力提供一种接口和语法,使得不懂计算机科学的人也可以使用 R 做一些复杂的数据分析。

我认为总会存在一些不能用高级的指令解决的问题。所以学习基本的编程原则,做一些简单的计算或者文本分析和语法分析这之类的事是有用的,但是 R 的重点还是不强迫每个人都成为计算机科学家。

JBR:最后一个问题:您认为 R 和 RStudio 十年后将会应用在哪里呢?

J.J. :目前,R 在大学中已经很受重视。它被教授给学生和研究人员,越来越成为核心课程的一部分,然而在业界仍有很多人在使用不如 R 性能好、灵活且效率高的专业软件。

我希望在接下里的十年中,我们能看到 R 现今在大学中占有的优势能真正地占领专业统计学家的世界。我对此充满了希望,而且我希望 RStudio 能在促进 R 积极转型中起到重要的作用。我们继续致力于使 R 构建得更容易学习和使用。这样,当一些机构决定长期使用 R 代替他们现在的专业统计软件时,他们会进入一个非常完善、非常强大、很容易学习的环境。所以他们可以成功地采取行动大规模应用 R。我希望接下来的十年中 RStudio 可以促进完成所有的这些事情。

JBR :谢谢你,J.J.!

发表 / 查看评论