Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Mar 2002 10:23:35 -0700
From:      Nate Williams <nate@yogotech.com>
To:        Raymond Wiker <Raymond.Wiker@fast.no>
Cc:        Giorgos Keramidas <keramida@ceid.upatras.gr>, Terry Lambert <tlambert2@mindspring.com>, "Steve B." <steveb99@earthlink.net>, freebsd-chat@FreeBSD.ORG
Subject:   Re: C vs C++
Message-ID:  <15494.20631.682803.383406@caddis.yogotech.com>
In-Reply-To: <15494.13878.219807.949085@raw.grenland.fast.no>
References:  <20020305132457.A4700-100000@alpha.yumyumyum.org> <001701c1c481$d0d5eab0$f642d9cf@DROID> <20020305231252.GC5328@hades.hell.gr> <3C8568E0.76415D99@mindspring.com> <20020306032029.GA7926@hades.hell.gr> <15494.13878.219807.949085@raw.grenland.fast.no>

next in thread | previous in thread | raw e-mail | index | archive | help
[ Moving this thread over to -chat as well.  We'll get them all over in time ]

Raymond Wiker writes:
> Giorgos Keramidas writes:
>  > Well, to be frank, I've seen a few C++ coding style documents, that suggest
>  > avoiding <stdout.h> altogether when writing in C++.
>
>         I assume you mean <stdio.h>?

>         Anyway, I *really* can't see any reason not to use <iostream>,
> <fstream>, <sstream> and friends. 

The fact that the programmer has no control over *how* the data is
displayed, and relies on the person who wrote the class to display the
data is one good reason.

iostreams gives all the control the the person who writes the class, so
in order to print things out, you have to extend the class (which often
means peeking into it's private data, a violation of layering), or doing
all sort of kludges/hacks to get things working.

> I also cannot see any reason not to use exceptions, the standard
> containers, the string classes etc.

Because exceptions are *still* not portable across multiple platforms.
There are N different implementations of exceptions, 'standard
containers', and all behave slightly different. 

IMO, this is probably the biggest single stumbling block for using C++
extended features.  Very few people know how to use these features
correctly, and since they were so unportable, they are essentially
unused except by those folks who worked very hard at using them, and as
such have a higher clue-factor than most.

>         Used properly, these make it possible to write code that is
> inherently safer than anything built around printf/scanf, char *,
> longjump, etc. Without these (and a few others) you may just as well
> stay with standard C.

Safer?  The intracacies of printf/scanf are *well* known, so I wouldn't
say that it's any more/less safe.  At least with the above functions,
you *know* ahead of time the issues, vs. some random implementation of a
class you don't want to look at.

Exceptions are great, but there are too many gotchas because the
behavior is not standardizes well enough to depend on them.  (And, if
you're not careful, you can cause yourself *all* sorts of problems using
them.)

>         Then again, if you want to do object-oriented programming, C++
> is probably not the right choice. If you want to use several different
> paradigms simulataneously in one language, C++ may be a better fit -
> although Common Lisp is a much better choice :-)

Except that it's *obnoxiously* hard to deploy it.


Nate

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15494.20631.682803.383406>