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>