Skip to content

Latest commit

 

History

History
79 lines (42 loc) · 7.81 KB

r-python-human-factor-perspective.md

File metadata and controls

79 lines (42 loc) · 7.81 KB

R 与 Python(再论):一种人为因素的视角

原文:www.kdnuggets.com/2022/01/r-python-human-factor-perspective.html

R 与 Python(再论):一种人为因素的视角

图像由作者根据 OpenClipart-Vectorspixabay 的图像制作

我经常听到或看到类似的说法:“R 适合快速且粗糙的分析,但如果你想做严肃的工作,你应该使用 Python。” 我完全不同意这种说法,因为在 R 中编写高效、可靠、稳健、生产级别的代码是完全可能的——我做到了,所以其他人也可以做到。当比较两种语言时,你可以考虑它们的内在特性,比如语言结构、语法、函数和可用的库。但你也可以采用一种更为经验的方法,快速地在脑中回忆你遇到过的用这两种语言编写的所有代码示例。然后,我愿意承认,如果你将上述说法重新表述为“平均而言,Python 代码的质量高于平均 R 代码”,这可能有一些道理,这可以通过“人为因素”来解释。

免责声明:

这种观点显然不是基于严谨的科学方法,因为它不是基于客观数据的,因为这些数据并不存在(我认为也无法获得)。确实,我们无法获取所有曾经创建的 Python/R 代码(也不能获取去年创建的代码),也无法获取这类代码的代表性样本。我们也没有所有 Python/R 用户的教育背景和职业资料,也没有他们的代表性样本。即使我们拥有这些数据,定义一个平均的 Python/R 代码并评估其质量也将极其困难。所以这仅仅是基于我对情况的主观但诚实的评价。

阅读更多内容。

关于代码质量

虽然没有普遍适用的代码质量定义或测量标准,但普遍承认,好的代码应该是可读的(文档齐全,风格一致等)、模块化、可重用、可靠、可测试,并且能够完成预期的功能。它还应该高效地使用计算资源(内存、CPU)和时间资源,即运行速度要合理。

注意:

代码只是软件的一部分,还有代码实现的算法。无论你使用什么编程语言,即使你遵守上述代码质量要求,算法效率低的软件也不是好的软件。

典型的 R 用户画像

背景

大多数 R 用户来自科学背景。他们通常是自学的 R 程序员(Google 和 YouTube 是最重要的 R 教学资源!),即使他们接受过正式的 R 培训,这种培训也很可能相当有限,并且很可能是在统计学课程中(专业统计学家和数据科学家除外)。此外,他们可能没有接受过一般计算机科学培训和概念,因此不熟悉良好的编码实践。

使用情况

R 通常作为辅助工具来完成他们的主要工作——进行研究。因此,重要的是完成工作——分析数据,为博士论文、期刊或会议论文,或资助机构的项目报告制作表格和图表。因此,开发的代码是一次性的、临时的软件。文档或编码风格不是问题,频繁出现的是意大利面条风格的单一脚本而非模块化代码,更不用说硬编码的文件路径和其他参数,这破坏了代码复用的任何希望。代码通常由作者交互式运行,如果发生错误,会立即修复,因此当然没有适当的错误处理。如果代码今天在我的计算机和数据集上运行,那我就满意了,我完成了我的工作!但我们不应过于责怪他们——他们的工作是产生科学结果,而不是高效和高质量的计算机代码。可以肯定的是,一旦习惯了,编写高质量代码并不难,即使代码本意是一次性的,但其中的一些部分可能在其他场合被重复使用,但低质量的代码使得这个任务几乎不可能完成。考虑到所有这些,我们可以说,“普通” R 代码大多不符合高质量编码标准。

显著的例外再次是专业统计学家和数据科学家,对于他们来说,编写代码可以被视为他们主要任务的一部分——开发统计学和机器学习方法及工具,因此他们常常生产高质量的代码,并在 CRAN 和其他仓库中提供 R 包。

典型的 Python 用户画像

背景

大多数 Python 用户来自计算背景。Python 通常被用作大学介绍计算机科学概念的工具 (www.edx.org/learn/python)。即使他们没有计算机科学的学位,Python 用户可能也接受过一些正式的 Python 编程培训,因为这是一项工作要求。此外,即使他们最初没有学习计算机科学,他们也很可能接受过一般计算机科学的正式培训,除了 Python 编程之外,并且熟悉良好的编码实践。

使用情况

Python 通常由软件开发人员使用——这些人的主要任务是编写代码。代码的目的是多次运行,在不同的计算机(甚至可能是不同的操作系统)上运行,并处理许多不同的数据集。代码通常是稳健和可靠的,能够处理异常情况,并优雅地处理错误。还期望代码需要维护,可能由其他人进行(修复错误、适应、演变),因此文档、风格、可读性、重用等概念自然成为开发过程的一部分。考虑到这一点,我们可以认为“普通”Python 代码往往会符合高质量的编码标准。

结论

在这篇文章中,我尝试探讨有关 Python 是否比 R 更适合编写生产级代码的信念来源的假设。我认为这种信念并不来自于两种语言及其生态系统的固有特性。我猜这更可能来自于普通 R 用户可能对代码质量的关注程度低于 Python 用户,这可以通过他们的背景和编程在各自工作中的地位来解释。

当然,最终的结论是,认为 Python 在编写高质量代码方面优于 R 的信念是错误的!

Zivan Karaman 是一位自由的数据科学与软件工程顾问,热衷于利用数学、统计学和计算来将数据转化为可操作的见解,以帮助解决实际问题。特别钟爱 R 生态系统,早在 R 创建之前就已经使用(自 90 年代初期开始使用 R 的前身 S/S+)。 在 LinkedIn 上与他联系.


我们的三大课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业生涯

2. 谷歌数据分析专业证书 - 提升你的数据分析技能

3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT


更多相关话题