comp.lang.ada
 help / color / mirror / Atom feed
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



  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