C or C++?
Kevin D. Clark
clark_k at pannaway.com
Fri May 27 17:49:01 EDT 2005
Jim Kuzdrall writes:
> C++ versus C is my quandary. Can anyone give me good reasons for
> choosing one over the other in this case. Opinions are welcome, but I
> must have a list of reasons ready if my choice is questioned.
Pros for C++:
o easier to work with in a OOD/OOP way
o STL and BOOST and ACE are nice.
o if you're disiplined, you can take advantage of code-reuse.
o objects that wrap around things like locks make for cleaner,
easier to maintain code. I use "goto" a lot in procedural code to
duplicate this same effect.
o If used properly, in general, C++ seems to scale better to larger
projects.
Cons for C++:
o hard to justify if you're just going to write C/procedural code
anyways
o code bloat can be an issue (for example, because of templates).
o you need to be an experienced C++ programmer in order to
understand which features are prudent to use in your environment.
o places more stress on your development tools. For example, what
happens if your debugger doesn't like dealing with two functions
named "foo"?
o You're probably going to want to avoid calling any hard realtime
code from C++. What happens if one of your methods throws an
exception? Etc.
o I find that a lot of low-level code such as sockets stuff, serial
code, realtime code doesn't really lend itself much to OOP
anyways.
Pros for C
o combines the flexibility of assembly language with the power of
assembly language.
Cons for C
o combines the flexibility of assembly language with the power of
assembly language.
Issues that others have raised that I find to be kindof bogus:
o type safety -- prototypes and "const" are available in C; C++
doesn't give you very much more of an advantage here.
o portability -- in my experience, C++ code isn't more portable
than C code.
I wouldn't hesitate to start a project in either C or C++. If the
project was going to be pretty large, with a lot of programmers, and
it seemed to lend itself to an OOP style, I'd go with C++. If I
wanted the program to maximally portable, if the program wasn't going
to be spectacularly huge, and I was going to be doing more low-level
coding, I'd use C.
Just my opinions,
--kevin
--
If you want to program in C, program in C. It's a nice language. I
use it occasionally... :-)
--Larry Wall in <7577 at jpl-devvax.JPL.NASA.GOV>
More information about the gnhlug-discuss
mailing list