【发布时间】:2015-09-17 16:16:20
【问题描述】:
【问题讨论】:
-
我可以告诉您 Hadley Wickham 对您的问题的看法,请阅读 here。
-
可以将这个问题一分为二,因为 R 和 SAS 完全不同,尤其是在面向对象编程方面。
标签: r functional-programming sas procedural-programming
【问题讨论】:
标签: r functional-programming sas procedural-programming
我会说 R 绝对是程序性的;函数式编程不仅仅是使用函数,例如,使用一些粗略的模块化;确实是f.p。致力于极端模块化,这是其主要优势之一;查看 John Hughes 的经典论文“为什么函数式编程很重要”以了解更多信息。
对我来说,SAS 似乎更有特殊用途,旨在将数据组织成表格并在其上进行统计报告。它似乎与函数式编程没有特别的关系;我仍在调查它的程序能力(或缺乏)
【讨论】:
R 主要是一种函数式编程语言。它确实有一些例外情况是通过副作用完成的,因此它的功能不如 Haskell。尽管如此,如果您不愿意调整您的编程风格以使用函数,那么您将很难编写高效的 R 代码。 (我写这个答案的唯一原因是,将 R 称为面向对象的语言会误导那些希望能够以与 Java 相同的方式向数据对象发送函数消息的人。 R 使用对象的类作为“通用”函数的调度选择机制,但这与完整的 OO 语言不同。)
R 有 3、4 或 5 个主要对象类,具体取决于您如何看待它们和相关的函数类型。仅在其第一个参数的类上分派的原始 S3 函数可能仍然是最常用的,尽管可以在多个参数签名上分派的 S4 类在 BioConductor 世界中被广泛使用。引用类或 R5 或原型类对象最类似于真正的面向对象编程数据类型。我对最后一句话有点含糊,因为我对他们缺乏太多经验。
SAS 主要是一种程序语言。您可以定义函数,但这不是大多数人与 SAS 及其数据集交互的方式,至少一开始是这样。至少 15 年前我使用它时,它并没有真正的对象模型。我认为它的主要优势是对“报告写作”的出色支持。
(数据操作“R 中很难”的评论只是表明缺乏经验。我在 R 中进行数据操作所需的代码量比我的 SAS 同事使用的代码要少得多。如果你开始在SAS,那么转换会很困难,但是我们这些已经改变的人一般都坚持使用R。)
【讨论】: