comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Gnat GPL 2010 available soon (conditional expressions)
Date: Sun, 27 Jun 2010 10:37:53 +0200
Date: 2010-06-27T10:37:52+02:00	[thread overview]
Message-ID: <1wuwvzgwlwgli$.1birkinieia0d$.dlg@40tude.net> (raw)
In-Reply-To: 4c270613$0$6974$9b4e6d93@newsspool4.arcor-online.net

On Sun, 27 Jun 2010 10:04:35 +0200, Georg Bauhaus wrote:

> On 6/26/10 11:42 PM, Dmitry A. Kazakov wrote:
>> On Sat, 26 Jun 2010 05:04:10 -0700 (PDT), lekktu@gmail.com wrote:
>>
>>> Well, it hasn't been hard to find the first bug.
>>>
>>> --------------------------------------------------------------------------------
>>> function Validate (Dir : in String) return String is
>>> begin
>>>     return (if Dir (Dir'Last) = '\' then Dir else Dir&  '\');
>>> end Validate;
>>> --------------------------------------------------------------------------------
>>
>> [...]
>>> I'll submit a bug report.
>>
>> (Yes, to remove that abomination from the language! (:-))
>>
>> I didn't read the AI, but your code looks very strange to me. Isn't its
>> syntax exposed to the infamous Pascal-if flaw? I mean, where is the "end
>> if"? Is this legal:
>>
>>     (if A then X else if B then Y else Z)
> 
> As the AI explains, you will need bracketing.

Once I designed a language like that. It was out of necessity because that
specialized language had only expressions. I also used brackets, but
dropped "if", because you don't need it:

   (A then B [else C])

is syntactically unambiguous and easier to read.

Anyway I do hate the idea, partially because I have been using that
language for a long time.

> Conditional expressions are supposed to remove the need for some single
> purpose functions, see the example in the AI lekktu has mentioned.

Single-purpose functions do not exist, likewise single-purpose types etc.
Thinking of something in this way will give you a design/maintenance
problem later. Ada was never designed to minimize up front thinking and
typing in mind.

>    Unlike the return object of a function, the value of a
> conditional expression cannot be renamed.  A special purpose
> function in place of a conditional expression has to have a
> return object. We can't rely on effective inlining or on
> evaluation at compile time, either.

can you rely on what the compiler does for if-expressions? Come on, that is
a silly argument. If inlining is a problem add pragma Enforced_Inline.

> OTOH, we get the anonymity of conditional expressions, and
> an opportunity to deviate from Ada's principle of linear reading.

towards the principle of no reading? Write and rewrite, but never read what
you wrote...

> Consequently, conditional expressions will make Ada
> more attractive for programmers who still know the joys of
> clever programming constructs like syntactical inversion
> of control structure.

Sorry, if I misunderstood you. Do you seriously mean that the goal of
language design is attracting some people?

> If their modes of expression are not wanted on some project,
> the project can use additional source code analysis tools.
> These will complain when noticing nested conditional expressions,
> for example.

In C projects you can use lint. Does it make the design of C any better?

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2010-06-27  8:37 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-16 20:14 Gnat GPL 2010 available soon Stephen Sangwine
2010-06-16 21:24 ` Martin
2010-06-16 21:35 ` Simon Wright
2010-06-18 19:48 ` Albrecht Käfer
2010-06-26 12:04   ` lekktu
2010-06-26 21:04     ` anon
2010-06-26 21:41       ` lekktu
2010-06-27  3:33         ` anon
2010-06-27 10:49           ` lekktu
2010-06-26 21:42     ` Dmitry A. Kazakov
2010-06-26 22:01       ` lekktu
2010-06-27  8:04       ` Gnat GPL 2010 available soon (conditional expressions) Georg Bauhaus
2010-06-27  8:37         ` Dmitry A. Kazakov [this message]
2010-06-27 10:55           ` lekktu
2010-06-27 12:12             ` Dmitry A. Kazakov
2010-06-27 13:42               ` Georg Bauhaus
2010-06-27 14:35                 ` Peter C. Chapin
2010-06-27 16:53                   ` Dmitry A. Kazakov
2010-06-28 11:24                     ` Peter C. Chapin
     [not found]                       ` <oizwym2afwmx.1jm5tt7wtpm7v.dlg@40tude.net>
2010-06-28 14:47                         ` Georg Bauhaus
2010-06-28 16:36                           ` Dmitry A. Kazakov
2010-06-28 17:04                             ` Georg Bauhaus
2010-06-28 17:37                               ` Dmitry A. Kazakov
2010-06-29 19:28                   ` Randy Brukardt
2010-06-30  1:19                     ` BrianG
2010-06-30  3:21                       ` Britt Snodgrass
2010-07-05  1:27                         ` Phil Clayton
2010-07-05 10:26                           ` Georg Bauhaus
2010-07-05 14:24                             ` Phil Clayton
2010-07-05 13:12                           ` Dmitry A. Kazakov
2010-07-05 22:47                             ` Phil Clayton
2010-07-06  7:36                               ` Dmitry A. Kazakov
2010-07-06  9:13                                 ` Georg Bauhaus
2010-07-06 16:31                                 ` Phil Clayton
2010-07-06 17:18                                   ` Dmitry A. Kazakov
2010-07-07 12:00                                     ` Phil Clayton
2010-07-07 13:39                                       ` Dmitry A. Kazakov
2010-06-30  4:13                       ` Gautier write-only
2010-06-30 16:46                         ` Warren
2010-06-30  4:09                     ` Gautier write-only
2010-06-30 23:20                       ` Peter C. Chapin
2010-06-27 21:40 ` Gnat GPL 2010 available soon mahdert
replies disabled

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