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