From: James Kanze <kanze@gabi-soft.fr>
Subject: Re: "Must instantiate controlled types at library level." Why?
Date: 17 May 2004 21:48:29 +0200
Date: 2004-05-17T21:46:03+02:00 [thread overview]
Message-ID: <86d652ygvm.fsf@lns-th2-14-82-64-63-6.adsl.proxad.net> (raw)
In-Reply-To: 21700814.aMYQM4SCxr@linux1.krischik.com
Martin Krischik <krischik@users.sourceforge.net> writes:
|> Hyman Rosen wrote:
|> > Ludovic Brenta wrote:
|> >> You are not being helpful to anyone with this comment. If you
|> >> think I am ignorant, please explain why, or otherwise give me one
|> >> good reason not to put your name in my kill file.
|> > Oh, by all means put my name in your kill file!
|> > But OK. You state that "The std::vector template class is not a
|> > first-class citizen". I haven't a clue as to what that might mean
|> Ruffly: First class is everything you can use without (in C/C++)
|> "#include" or (in Ada) "with" or (in Java) "import".
So bool and complex are not first class in C, because you need to "turn
them on"? I'm afraid I don't really understand this distinction. (The
way most C++ intantiations implement this is extremely primitive. But
there's nothing second class about it, in the context of the language.)
|> vector <> is not a first class citizen because you need "#include
|> <vector>"
And on many of the early C implementations I'used, float wasn't first
class, because you needed to link in a special library to get it?
|> And, of corse, to copy the hole content of an other file into your
|> own file is cheating.
It's certainly not the most robust or the most elegant way of getting
the job done, but I don't quite understand why "cheating"? What makes
it less honest than anything else (as opposed to simply being a less
efficient way of getting the job done)?
|> More precisely: First class are only keywords, predefined operators,
|> predefined types, (in Ada ) attribute and perhaps pragmas.
More precisely: First class is what you like, and second class is
everything else.
Not much of an argument, really.
|> Actually: Even "#include" isn't first class since it is part of a
|> preprocessor.
|> I am unsure if, in Ada, Integer is first class since there is an
|> implicit "with Standart; use Standart;".
|> The argument is that everything inside a language need to be
|> implemented with first class citizen - they are the fondatation of
|> everything else and design errors in this area have profound
|> consequences.
And one of the basic premises of Stroustrup is that there should be as
little in the language as possible. I don't necessarily agree with this
attitude; some things, like closure, can really only be done effectively
from within the language. But just saying it is bad, or second class,
doesn't prove anything.
|> Out of my 10 years+ experience with C/C++ I say that the following
|> are my personal top 3 C/C++ design mistakes which lead to most of
|> bugs I had to hunt down insted the compiler just finding them for
|> me.
|> 1) #include instead of an proper import/with.
|> 2) implicit type convertion.
|> 3) arrays are pointers.
Arrays aren't pointers. There's just another implicit type conversion.
And you don't mention the declaration syntax, which is enough to drive
any sane man up the wall.
--
James Kanze
Conseils en informatique orient�e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S�mard, 78210 St.-Cyr-l'�cole, France +33 (0)1 30 23 00 34
next prev parent reply other threads:[~2004-05-17 19:48 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-11 23:04 "Must instantiate controlled types at library level." Why? Peter C. Chapin
2004-05-12 1:03 ` Jeffrey Carter
2004-05-12 10:47 ` Peter C. Chapin
2004-05-12 11:25 ` Ludovic Brenta
2004-05-12 14:41 ` Martin Krischik
2004-05-13 2:20 ` Peter C. Chapin
2004-05-12 11:55 ` Martin Krischik
2004-05-13 2:59 ` Peter C. Chapin
2004-05-13 7:10 ` Martin Krischik
2004-05-13 10:36 ` Peter C. Chapin
2004-05-13 11:18 ` Martin Krischik
2004-05-13 22:27 ` Peter C. Chapin
2004-05-13 22:54 ` Freejack
2004-05-14 7:13 ` Martin Krischik
2004-05-14 13:50 ` Xenos
2004-05-14 17:27 ` Georg Bauhaus
2004-05-14 17:58 ` Xenos
2004-05-14 18:49 ` Martin Krischik
2004-05-14 19:40 ` Xenos
2004-05-14 22:47 ` Ludovic Brenta
2004-05-15 8:34 ` Martin Krischik
2004-05-16 2:55 ` Hyman Rosen
2004-05-16 13:48 ` Ludovic Brenta
2004-05-17 2:30 ` Hyman Rosen
2004-05-17 5:39 ` Martin Dowie
2004-05-17 7:48 ` Ludovic Brenta
2004-05-17 15:01 ` Hyman Rosen
2004-05-17 16:31 ` Georg Bauhaus
2004-05-17 17:40 ` Hyman Rosen
2004-05-17 19:17 ` Georg Bauhaus
2004-05-17 6:24 ` Martin Krischik
2004-05-17 19:48 ` James Kanze [this message]
2004-05-18 6:27 ` Martin Krischik
2004-05-17 12:33 ` Dmitry A. Kazakov
2004-05-17 13:46 ` Martin Krischik
2004-05-17 15:03 ` Dmitry A. Kazakov
2004-05-17 16:02 ` Alexander E. Kopilovich
2004-05-18 7:48 ` Dmitry A. Kazakov
2004-05-19 1:20 ` Alexander E. Kopilovich
2004-05-19 9:59 ` Dmitry A. Kazakov
2004-05-19 12:38 ` Hyman Rosen
2004-05-19 13:28 ` Dmitry A. Kazakov
2004-05-19 13:09 ` Georg Bauhaus
2004-05-19 13:44 ` Hyman Rosen
2004-05-19 14:17 ` Dmitry A. Kazakov
2004-05-19 14:15 ` Dmitry A. Kazakov
2004-05-21 11:39 ` Georg Bauhaus
2004-05-21 20:33 ` Dmitry A. Kazakov
[not found] ` <c8mkor$rlq$1@a1-hrz.uni-duisburg.de>
2004-05-23 1:28 ` Hyman Rosen
2004-05-23 8:55 ` Dmitry A. Kazakov
2004-05-24 11:38 ` Georg Bauhaus
2004-05-24 13:57 ` Dmitry A. Kazakov
2004-05-24 14:40 ` Georg Bauhaus
2004-05-25 8:32 ` Dmitry A. Kazakov
2004-05-25 15:47 ` Georg Bauhaus
[not found] ` <URJ8Eg0vzF@VB1162.spb.edu>
2004-05-17 16:50 ` Marius Amado Alves
2004-05-18 8:27 ` Dmitry A. Kazakov
2004-05-15 17:20 ` Pascal Obry
2004-05-13 19:33 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox