[Rcpp-commits] r614 - papers/rjournal
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sat Feb 6 22:09:59 CET 2010
Author: edd
Date: 2010-02-06 22:09:59 +0100 (Sat, 06 Feb 2010)
New Revision: 614
Modified:
papers/rjournal/EddelbuettelFrancois.tex
Log:
more ping/pong and some fixes
Modified: papers/rjournal/EddelbuettelFrancois.tex
===================================================================
--- papers/rjournal/EddelbuettelFrancois.tex 2010-02-06 20:57:20 UTC (rev 613)
+++ papers/rjournal/EddelbuettelFrancois.tex 2010-02-06 21:09:59 UTC (rev 614)
@@ -35,6 +35,11 @@
more recently. This article
% mostly concerns the newer API, and %% [Dirk] Really?
% [Romain] based on relative lengths of coverage ...
+% [Dirk] agreed -- I'd be up for shortening to keep this closer to six
+% pages. But that is just an ideal. If we do not get down to six
+% pages so be it. I like the paper as it is. But it may be harder
+% to argue for a new publication in JSS or elsewhere is the only
+% new piece is XPtr. That said by then we may have new toys ...
highlights some of the key design and implementation choices:
lightweight encapsulation of R object in C++ classes, automatic
garbage collection strategy, code inlining, data interchange between
@@ -189,6 +194,10 @@
complete redesign, based on the usage experience of several
years of \pkg{Rcpp} deployment, needs from other projects, knowledge
of the internal R API, as well as current C++ design approaches.
+This redesign of \code{Rcpp} was also motivated by the needs of other
+projects such as \code{RInside} \citep{cran:rinside} for easy embedding
+of R in a C++ application and \code{RProtoBuf} \citep{cran:rprotobuf}
+that interfaces with the protocol buffer library.
\subsection{Rcpp Class hierarchy}
@@ -223,6 +232,8 @@
% [Romain] : maybe we can shorten the next 3 paragraphs
% it does not say much more than if we just spell out the
% names of the methods
+% [Dirk] I was looking at that too this morning. Maybe combine from three
+% short paragraphs into one? Do you want to give it a try?
The \code{RObject} class defines a set of member functions that
can be used on any R object, regardless of its type. The member
functions \code{isNULL}, \code{isObject} and \code{isS4} can be
@@ -376,7 +387,11 @@
% [Dirk] Example for _what_ ?
% [Romain]: RInside fully specializes wrap for these types:
% vector<vector<double>> and vector<vector<int>>
+% [Dirk:] *Plonk* Yes.
\end{itemize}
+An example for the full specialisation of the templated \code{wrap} function
+is provided by \code{vector< vector< double > >} and \code{vector< vector< int
+ > >} which are frequently used for representating numeric matrices.
Whether an object is wrappable is resolved at compile time, and the
dispatch of the appropriate implementation is performed by the compiler
@@ -511,8 +526,8 @@
into R integer vectors. It should be noted that this
version involves a potentially expensive implicit lookup in the search path
to find the \code{rnorm} function.
-% should we quote luke's : http://www.cs.uiowa.edu/~luke/R/bytecode.html
-
+% [Romain] should we quote luke's : http://www.cs.uiowa.edu/~luke/R/bytecode.html
+% [Dirk] space constraints....
For comparison, using the standard R API, the first example using the actual \code{rnorm} function
translates to :
@@ -783,28 +798,22 @@
programmer from book-keeping operations with the protection stack
and enabling him/her to focus on the underlying problem.
-Data interchange between R and C++---performed by the
-\code{wrap} and \code{as} template functions---allow the programmer
-to write logic in terms of C++ data structures, facilitating use
-of modern libraries such as the standard template library and its
-containers and algorithms. The \code{wrap} and \code{as} functions are extensible
-by design and can be used either explicitely or implicitely throughout
-the API.
-
-Only using thin wrappers around \code{SEXP} objects,
+Data interchange between R and C++ code---performed by the \code{wrap} and
+\code{as} template functions---allows the programmer to write logic in terms
+of C++ data structures and facilitates use of modern libraries such as the
+standard template library and its containers and algorithms. The
+\code{wrap()} and \code{as()} template functions are extensible by design and
+can be used either explicitely or implicitely throughout the API.
+By using only thin wrappers around \code{SEXP} objects,
the footprint of the \code{Rcpp} API is very lightweight, and does not
induces a significant performance price.
-Using the \code{Rcpp} API dramatically reduces the complexity
-of the code, which improves code readability and maintainability.
-The redesign of \code{Rcpp} was motivated by the needs of other
-projects such as \code{RInside} \citep{cran:rinside} for easy embedding
-of R in a C++ application and \code{RProtoBuf} \citep{cran:rprotobuf}
-that interfaces with the protocol buffer library.
+The \code{Rcpp} API offers opportunities to dramatically reduce the complexity
+of code, which should improve code readability, maintainability and reuse.
% [Dirk] Do we really need to cite RInside and RProtoBuf?
% [Romain] Not really. I guess I wanted to give a reason why we did it
% and how it pays of, but we don't have to
-
+% [Dirk] How about if we lift that last sentence at place it earlier?
\bibliography{EddelbuettelFrancois}
\address{Dirk Eddelbuettel\\
More information about the Rcpp-commits
mailing list