From Roger.Bivand at nhh.no  Sat Jan 20 00:56:43 2007
From: Roger.Bivand at nhh.no (Roger Bivand)
Date: Sat, 20 Jan 2007 00:56:43 +0100 (CET)
Subject: [Rd] C vs. C++ as learning and development tool for R
In-Reply-To: <836F00680EECD340A96AD34ECFF3B534B4A74F@iu-mssg-mbx106.ads.iu.edu>
Message-ID: <Pine.LNX.4.44.0701200029330.1902-100000@reclus.nhh.no>

On Fri, 19 Jan 2007, Kimpel, Mark William wrote:

> Thanks to all for your excellent suggestions. I think will I proceed
> working through the Stroustrup book. He has a section on comparing C
> with C++ and one on working with legacy C code that may prove helpful. I
> also have a "C for Dummies" (something like that, I don't have it right
> next to me) that I have also been reading. A couple of follow-up
> questions:

C with data abstraction (C with Classes) is where C++ came from (that is a 
hybrid of Simula and C). Clean C is very portable, whereas C++ can get 
caught by name mangling between compiler versions. Arguably (certainly in 
cost and probably in elegance) a good deal can still be harvested from 
another young adult (20+ might be seen as IT archeology by some?) - SICP 
is online at:

http://mitpress.mit.edu/sicp/full-text/book/book.html

and is excellent on programming in general, just Chapter 1 is refreshing
to (re)read every now and then. Kernighan and Pike's "The Practice of
Programming" - simplicity, clarity, generality - is also good for one's
common sense. 


> 
> 1. As I understand it, if I just wanted to distribute compiled code, I
> could use whatever extended C or C++ libraries that I wanted to use,
> however, since R is open source and people need to be able to compile
> things themselves, I imagine I would get into trouble (figuratively)
> using, say, the C++ STL. Would I need to distribute these files as well?
> For example, iostream instead of stdio.h. Or, should I just not use
> those?

Very few things are as standardised as they claim. I/O should not be done 
other than through R (like memory management where possible), so reducing 
the number of things that can go wrong (on some platform).

> 
> 2. For those of you who develop C on Windows (probably a small bunch!),
> what is your preferred development environment? I have the free Borland
> Turbo C++ and Visual C++ 6.0 (I knew enough to stay away from .NET). I
> tried to install the C++ module for Eclipse and, for me at least, it was
> a nightmare. I am not UNIX or DOS savvy and setting path variables and
> the like just made things too complicated.

Just MinGW like R, following the guides to the letter gets you there like
marked stones across a marsh. Leaving the path usually gets you at best
neck deep in the mire, alternatively just bubbles. The existing code in
both base R and the contributed packages is a good guide, but prototyping
in R alone, and profiling to see where things take time before
implementing in a compiled language, is often prudent.

> 
> 3. Lastly, is there a C or C++ community similar to R that I could
> address questions relating to those languages to? I don't want to abuse
> the R list as I learn.
> 
> Thanks,
> Mark
> 
> Mark W. Kimpel MD 
> 
>  
> 
> (317) 490-5129 Work, & Mobile
> 
>  
> 
> (317) 663-0513 Home (no voice mail please)
> 
> 1-(317)-536-2730 FAX
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



[Rd] C vs. C++ as learning and development tool for R
Roger Bivand