Re: [Rd] C vs. C++ as learning and development tool for R

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Fri 19 Jan 2007 - 13:51:14 GMT

On 1/19/2007 3:55 AM, Kimpel, Mark William wrote:
> I have 3 years of experience with R and have an interest in becoming a
> better programmer so that I might someday be able to contribute
> packages. Other than R, my only experience was taking Lisp from Daniel
> Friedman in the 1970's. I would like to learn either C or C++ for
> several reasons:
>
> To gain a better concept of object oriented programming so that I can
> begin to use S4 methods in R.
>
> To perhaps speed up some things I do repeatedly in R
>
> To be able to contribute a package someday.
>
>
>
> I have been doing some reading and from what I can tell R is more
> compatible with C, but C++ has much greater capabilities for OO
> programming.
>
>
>
> I have just started reading The C++ Programming Language: Special
> Edition by Bjarne Stroustrup
> <http://search.barnesandnoble.com/booksearch/results.asp?ATH=Bjarne+Stro
> ustrup&z=y> , he recommends first learning C++ and then then C if
> necessary, but as a developer of C++, he is probably biased.
>
>
>
> I would greatly appreciate the advice of the R developers and package
> contributors on this subject. "C" or "C++"?

For your purposes, I would recommend C. Most example code you'll find is written in C, so it's easier to learn by looking at simple examples written by others. The R external interface was designed with C in mind, so you need to tell C++ to act like C to use it.

Regarding OOP, I think the C++ style of OOP is so different from S4 that it would not actually be helpful in learning S4. As far as I know, none of the languages that are easy to link to R use the same style of OOP.

On the other hand, taking a disciplined approach to C programming is a good idea (which is I think what Stroustrup had in mind). I'd suggest an object oriented Pascal (e.g. Delphi) or Java if that's what you want,   because they are simpler than C++. C and R are very permissive languages, and if you take advantage of that you can write amazingly sloppy and unmaintainable code.

Duncan Murdoch



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sat Jan 20 01:08:03 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 19 Jan 2007 - 23:31:00 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.