From murdoch at stats.uwo.ca  Fri Jan 19 14:51:14 2007
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Fri, 19 Jan 2007 08:51:14 -0500
Subject: [Rd] C vs. C++ as learning and development tool for R
In-Reply-To: <836F00680EECD340A96AD34ECFF3B534B4A731@iu-mssg-mbx106.ads.iu.edu>
References: <836F00680EECD340A96AD34ECFF3B534B4A731@iu-mssg-mbx106.ads.iu.edu>
Message-ID: <45B0CCD2.1040607@stats.uwo.ca>

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



[Rd] C vs. C++ as learning and development tool for R
Duncan Murdoch