comp.lang.ada
 help / color / mirror / Atom feed
From: "Chad R. Meiners" <crmeiners@hotmail.com>
Subject: Re: Get_Line
Date: Fri, 1 Nov 2002 16:04:50 -0500
Date: 2002-11-01T16:04:50-05:00	[thread overview]
Message-ID: <apuqd0$103i$1@msunews.cl.msu.edu> (raw)
In-Reply-To: wccy98d2plj.fsf@shell01.TheWorld.com


"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message
news:wccy98d2plj.fsf@shell01.TheWorld.com...
> Well, maybe your students didn't have trouble.  Maybe that means you're
> a good teacher.  But I know I've seen *many* questions about
> Text_IO.Get_Line and related stuff on c.l.a. over the years.
> And this stuff *ought* to be simple -- I'm not surprised when
> a beginner is confused about discriminated tasks or something,
> but when folks are confused about how to read in a line of text,
> I think that indicates something wrong with the language.

I see.  I think the problem is that (simple) problems rarely actually call
for a programs to just get a line of text.  Often people think they need to
get a line of text and parse it, but they could just parse the line directly
with Ada.Text_IO's generic data type facilities.  I agree though that
reading an arbitrarily size string takes some work in Ada, but I would
expect this since Ada doesn't natively support resizable arrays.  This
doesn't mean we should sit back and be content with Ada.Text_IO when we
could extend it to make reading in a line a little more friendly, but we
should leave the side-effects out of the functions within Ada.Text_IO.
Would you be happy with the following instead?

type Line is private;

procedure Get_Line (File : File_Type; Item : out Line);

function  To_String (Item : Line) return String;


> Sorry, I didn't mean to defame your character.  I was just making an
> analogy between side-effects in character-stream-reading functions,
> and allocators, where for the latter we happily use function-call-like
> notation.

Okay, I didn't think you meant to defame; I was just making sure of your
intent.


> OK, that convinces me that my analogy was poor.
>
> Still, the reason "Do_Something (Get_Line, Get_Line, Get_Line);" is
> wrong is that Ada does not define evaluation order.  The mere
> *existence* of a Get_Line function should not cause people to write
> that.

My concern is that when students are learning a new language they sometimes
adopt a favorite part of the language and then proceed to try to use that
part whenever possible.  A Get_Line function has that certain appeal to it
that would make it a good candidate for such abuse especially if the student
knows c++.

> I actually think that Ada *should* define the evaluation order,
> precisely because the above example can cause bugs.  Alternatively,
> the language should forbid such examples at compile time, rather
> than just giving wrong answers.  I realize that Ada has no mechanism for
> having such compile-time checking, because the compiler doesn't know
> which global variables a given function reads and writes.

I would definitively like to see warnings generated when possible! ;-)

-CRM





  reply	other threads:[~2002-11-01 21:04 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-29 20:24 Get_Line Justin Birtwell
2002-10-29 20:55 ` Get_Line David C. Hoos
2002-10-30  1:30 ` Get_Line Jeffrey Carter
2002-10-30 13:33   ` Get_Line Justin Birtwell
2002-10-30 14:40     ` Get_Line Preben Randhol
2002-10-30 17:09     ` Get_Line Jean-Pierre Rosen
2002-10-30 18:08     ` Get_Line Jeffrey Carter
2002-10-30 22:42       ` Get_Line Robert A Duff
2002-10-31  0:26         ` Get_Line Chad R. Meiners
2002-10-31  0:44           ` Get_Line Robert A Duff
2002-10-31 10:32             ` Get_Line John English
2002-10-31 11:30               ` Get_Line Preben Randhol
2002-10-31 13:10                 ` Get_Line John English
2002-10-31 17:39             ` Get_Line Warren W. Gay VE3WWG
2002-10-31 21:46             ` Get_Line Chad R. Meiners
2002-11-01 16:59               ` Get_Line Robert A Duff
2002-11-01 21:04                 ` Chad R. Meiners [this message]
2002-11-01 23:32                   ` Get_Line Matthew Heaney
2002-11-02  0:28                     ` Get_Line Chad R. Meiners
2002-10-31  8:53       ` Get_Line Preben Randhol
2002-10-31 18:04         ` Get_Line Jeffrey Carter
2002-11-01 11:18           ` Get_Line Preben Randhol
2002-10-30 14:44 ` Get_Line Preben Randhol
2002-10-31 21:55 ` Get_Line Matthew Heaney
  -- strict thread matches above, loose matches on Subject: below --
1999-07-02  0:00 GET LINE babefan
1999-07-02  0:00 ` czgrr
1998-06-05  0:00 get_line Steve Dyrdahl
1998-06-05  0:00 ` get_line Samuel Mize
1998-06-17  0:00   ` get_line Hans Marqvardsen
1998-06-18  0:00     ` get_line John McCabe
1998-06-21  0:00       ` get_line Robert Dewar
1998-06-06  0:00 ` get_line Dale Stanbrough
1998-06-06  0:00   ` get_line Matthew Heaney
1998-06-07  0:00     ` get_line Dale Stanbrough
1998-06-06  0:00       ` get_line Matthew Heaney
1998-06-18  0:00     ` get_line Robert I. Eachus
1998-06-06  0:00   ` get_line Robert Dewar
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox