R语言源码解析

421 篇文章 14 订阅

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值