关闭

R语言源码解析

391人阅读 评论(0) 收藏 举报
分类:

http://qiangkou.me/2015/10/01/r-src/

R语言是一门专门用于数据分析的领域特定语言(DSL),多数R语言用户并不了解R解释器的内部。这和使用者的背景直接相关。对R底层有一定了解之后,对R可能会有完全不同的评价,是好是坏,就因人而异了。

这里我把以前读R源代码的笔记整理出来,希望对想了解R底层机制的朋友有所帮助。主要涵盖以下内容:(1)R解释器的初始化和R语句求值;(2)R底层的SEXP结构以及相关的API;(3)environment究竟是什么;(4)basemethod包;(5)compiler包,也就是JIT编译的原理;(6)R里一些缺乏注释的黑暗角落,这些会穿插在各个章节之间。

这本书不是一本R语言教程,市面上的R语言图书已经足够多了。这里不会涉及任何直接的R语言使用的问题,对于R语言使用基本上没有任何帮助。

有两点需要说明:首先,这份源码解析基于3.2.2,源代码可以从这里下载;其次,我个人对图形设备和Windows系统的了解很有限,这里就不涉及这两方面的内容了。

作为一个学生物出身的野生码农,我的主要自学资料就是各种开源项目的源代码。一个人的命运,当然要靠自我奋斗,但是也要考虑到历史的行程,我绝对不知道我作为一个生狗怎么去做码农了。

R社区里的很多人都教了我很多东西,在这里特别感谢我在社区里的导师Dirk。另外这里单独感谢我至今没有露面的女朋友,所以我才有足够的时间读代码和写代码。

我们先从R源代码的组成开始,方便大家对照书中的内容查询源代码。R解压缩之后的结构如下所示。我们的主要关注点自然在src上,其它部分主要用于环境配置,其中po用于多语言支持。

.
├── COPYING
├── ChangeLog
├── INSTALL
├── Makeconf.in
├── Makefile.fw
├── Makefile.in
├── README
├── SVN-REVISION
├── VERSION
├── VERSION-NICK
├── config.site
├── configure
├── configure.ac
├── doc
├── etc
├── m4
├── po
├── share
├── src
├── tests
└── tools

src的内容如下,其中gnuwin32用于支持Windows上编译和使用R。除了gnuwin32,多数部分在书后续内容都会提到。

.
├── Makefile.in
├── appl
├── extra
├── gnuwin32
├── include
├── library
├── main
├── modules
├── nmath
├── scripts
└── unix

关于源代码阅读工具,我这里推荐的是htags,在源代码目录里使用htags --suggest就可以生成一个网页版的源代码,查询和跳转支持都不错。

center

Windows下的Source Insight是最强大的源代码阅读工具之一,但因为是收费软件,我也就不着重推荐了。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:368967次
    • 积分:5022
    • 等级:
    • 排名:第5779名
    • 原创:37篇
    • 转载:614篇
    • 译文:1篇
    • 评论:12条
    最新评论