comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Why no Ada.Wide_Directories?
Date: Thu, 20 Oct 2011 19:35:21 +0200
Date: 2011-10-20T19:35:21+02:00	[thread overview]
Message-ID: <fkhjm8s2pblo$.3jkccwvy3uz7.dlg@40tude.net> (raw)
In-Reply-To: op.v3nqg2eeule2fv@index.ici

On Thu, 20 Oct 2011 17:54:28 +0200, Yannick Duch�ne (Hibou57) wrote:

> Le Thu, 20 Oct 2011 16:31:59 +0200, Dmitry A. Kazakov  
> <mailbox@dmitry-kazakov.de> a �crit:

>> What I know is that the decomposition shall go along the types.
> You use to say you don't feel FP good, but I sware, I am sure you would  
> enjoy some part of it ;)

No, FP is just too low level: procedural decomposition. Type systems
correspond to the categories - a better and more capable mathematics =>
safer design. Another fundamental problem of FP is a wrong premise about
being stateless. Computing is solely about states. You run a program to
have its side effects, there is no other reason for doing that.

>> Implementation must be absolutely free too
>> choose. There shall be no procedures but operations on types. All types
>> shall have classes.

> What's missing from Interface type introduced with Ada 2005 ?

1. Most Ada types do not have interfaces
2. Ada interface cannot be inherited from a concrete type
3. Ada interface cannot have implementation
4. Ada interface does not support ad-hoc supertypes

> Doesn't it  
> fulfill the above expectations ? (also keep in mind sometime efficiency is  
> required, and if you want place formalism over efficiency, then you have  
> to sacrifice efficiency, conscientiously).

Not an issue. Scalar types may have interfaces at zero time/space cost. You
don't need to embed tag into by-value types.

>> Any syntax sugar (prefix notation, infix operations,
>> assignments, indexing, member extraction, aggregates, entries,  
>> attributes) shall be operations.
> Are you sure you are not confused between concrete syntax and abstract  
> syntax ?

I don't understand this. The problem is that, for example, for the record
type T and its member A, the ".A" is not the operation of T, because record
is not an interface. A'First is not an operation of array. ":=" is not an
operation (doubly dispatching) of its left and right sides etc.

>> Construction model must be type safe (in particular,
>> each type must have constructors, including class-wide types). The type
>> system shall support both specialization and generalization.

> Could you provide an example case of generalization you have in mind ?

Examples are:

1. Type extension (e.g. upon derivation, present in Ada)
2. Expansion of enumeration types
3. Cartesian product of types, e.g. Real x Real -> Complex
4. Lifting constraints, e.g. Float -> IEEE Float (number + NaN + +Inf ...)
5. Ad-hoc supertypes, e.g. String U Unbounded_String -> General_String,
creating new classes from existing ones by union.
 
>> The programmer should be able to enforce static type and constraint checks, in  
>> particular, to convert any potentially dynamic checks into compile-time errors. All
>> exceptions must be typed, contracted and statically checked.

> This is not a language topic, instead, a technology level topic. I feel  
> runtime check is a reasonable fall-back for what cannot be statically  
> checked in th actual state of the technology.

No, it is inconsistent and unreasonable. Static checks are meant to detect
bugs. Bug is either there or not, independently on whether the program is
running, not running, will ever run. It is just not a function of the
execution state. Bug is a property of the program and all its possible
sates as a whole. A program cannot be both correct and incorrect. A program
checking itself as wrong is a Cretan Liar.

> If you really require static  
> check, then you must restrict yourself to what can be statically checked.

Yes, and I want a firewall between static and dynamic checks. If some
proposition is declared statically true or false, while the compiler is
unable to prove it, that should make the program illegal. The programmer
must be forced to chose, and if it decides for a static check he must be
sure that the compiler indeed verified his assumption or else have to
change the program.

> If Ada 2012 defines some Design by Contract checks as runtime check, this  
> is not a language flaw, a pragmatic choice.

Yet another generator of arbitrary exceptions. Lessons from accessibility
checks not learned...

> Along with that, if a compiler  
> is able to statically check what Ada 2012 designate as runtime check, then  
> nothing in the language definition disallows the compiler to apply all  
> static checks it is able to.

See above, it is the difference between an illegal program and a program
raising exceptions, nothing in common.

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



  reply	other threads:[~2011-10-20 17:35 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-14  6:58 Why no Ada.Wide_Directories? Michael Rohan
2011-10-14  7:39 ` Yannick Duchêne (Hibou57)
2011-10-14  9:07   ` Dmitry A. Kazakov
2011-10-14 12:48     ` Yannick Duchêne (Hibou57)
2011-10-14 12:54     ` Yannick Duchêne (Hibou57)
2011-10-15  1:06 ` ytomino
2011-10-15  6:55   ` Vadim Godunko
2011-10-15 12:34     ` ytomino
2011-10-15  8:38   ` Dmitry A. Kazakov
2011-10-15 13:12     ` Peter C. Chapin
2011-10-15 13:22       ` Ludovic Brenta
2011-10-15 14:47       ` Dmitry A. Kazakov
2011-10-16  5:48         ` Yannick Duchêne (Hibou57)
2011-10-17  0:15         ` Peter C. Chapin
2011-10-17  3:23           ` Yannick Duchêne (Hibou57)
2011-10-17  7:12           ` Simon Wright
2011-10-17  7:59           ` Dmitry A. Kazakov
2011-10-18 10:55             ` Peter C. Chapin
2011-10-18 12:27               ` Dmitry A. Kazakov
2011-10-16  5:51       ` Yannick Duchêne (Hibou57)
2011-10-17 21:41         ` Randy Brukardt
2011-10-18  7:29           ` Dmitry A. Kazakov
2011-10-18 14:06           ` Pascal Obry
2011-10-18 14:08             ` Pascal Obry
2011-10-19 21:32             ` Randy Brukardt
2011-10-17 21:33   ` Randy Brukardt
2011-10-17 23:47     ` ytomino
2011-10-18  1:10       ` Adam Beneschan
2011-10-18  2:32         ` ytomino
2011-10-18  4:46           ` ytomino
2011-10-18  9:32             ` Yannick Duchêne (Hibou57)
2011-10-18 10:00               ` Dmitry A. Kazakov
2011-10-18 10:06                 ` Yannick Duchêne (Hibou57)
2011-10-18 12:01                   ` Dmitry A. Kazakov
2011-10-18 15:02           ` Adam Beneschan
2011-10-18 15:16             ` Dmitry A. Kazakov
2011-10-18 23:42               ` Adam Beneschan
2011-10-19  8:12                 ` Dmitry A. Kazakov
2011-10-19 21:43               ` Randy Brukardt
2011-10-20  7:37                 ` Dmitry A. Kazakov
2011-10-20 11:04                   ` Yannick Duchêne (Hibou57)
2011-10-20 12:21                     ` Dmitry A. Kazakov
2011-10-20 12:38                       ` Yannick Duchêne (Hibou57)
2011-10-20 14:31                         ` Dmitry A. Kazakov
2011-10-20 15:54                           ` Yannick Duchêne (Hibou57)
2011-10-20 17:35                             ` Dmitry A. Kazakov [this message]
2011-10-21 12:53                               ` Yannick Duchêne (Hibou57)
2011-10-21 13:41                                 ` Dmitry A. Kazakov
2011-10-25 19:22                                   ` Randy Brukardt
2011-10-25 19:35                                     ` Dmitry A. Kazakov
2011-10-26 22:41                                       ` Randy Brukardt
2011-10-27  7:43                                         ` Dmitry A. Kazakov
2011-10-27 15:13                                           ` Yannick Duchêne (Hibou57)
2011-10-27 19:39                                             ` Robert A Duff
2011-10-27 21:09                                               ` Yannick Duchêne (Hibou57)
2011-10-28  7:50                                                 ` Dmitry A. Kazakov
2011-10-28  8:45                                                   ` Yannick Duchêne (Hibou57)
2011-10-28 14:59                                                     ` Dmitry A. Kazakov
2011-10-20 17:40                   ` J-P. Rosen
2011-10-20 18:43                     ` Dmitry A. Kazakov
2011-10-21 10:07                     ` Vadim Godunko
2011-10-21 11:25                       ` J-P. Rosen
2011-10-21 12:25                         ` Yannick Duchêne (Hibou57)
2011-10-21 13:13                         ` Dmitry A. Kazakov
2011-10-21 16:03                           ` Yannick Duchêne (Hibou57)
2011-10-21 18:34                             ` Dmitry A. Kazakov
2011-10-21 19:30                               ` Yannick Duchêne (Hibou57)
2011-10-21 20:02                                 ` Dmitry A. Kazakov
2011-10-21 20:36                                   ` Yannick Duchêne (Hibou57)
2011-10-22  7:54                                     ` Dmitry A. Kazakov
2011-10-22 20:28                                       ` Yannick Duchêne (Hibou57)
2011-10-22 22:23                                       ` Yannick Duchêne (Hibou57)
2011-10-23  7:53                                         ` Dmitry A. Kazakov
2011-10-25 19:16                                           ` Randy Brukardt
2011-10-21 18:55                         ` Vadim Godunko
2011-10-21 19:18                           ` J-P. Rosen
2011-10-21 19:41                           ` Yannick Duchêne (Hibou57)
2011-10-18 22:54             ` ytomino
2011-10-18  3:15         ` Yannick Duchêne (Hibou57)
2011-10-18  7:55         ` Dmitry A. Kazakov
2011-10-18  9:41           ` Yannick Duchêne (Hibou57)
2011-10-18 10:25           ` J-P. Rosen
2011-10-18 10:56             ` Yannick Duchêne (Hibou57)
2011-10-18 15:34           ` Adam Beneschan
2011-10-18 17:27             ` J-P. Rosen
2011-10-18 18:33               ` Adam Beneschan
2011-10-18 19:54               ` Yannick Duchêne (Hibou57)
2011-10-18  8:01       ` Dmitry A. Kazakov
2011-10-18  2:59     ` Yannick Duchêne (Hibou57)
2011-10-18  4:07       ` Michael Rohan
2011-10-18  4:54       ` ytomino
2011-10-18  9:54         ` Yannick Duchêne (Hibou57)
2011-10-18 10:52           ` ytomino
2011-10-18 11:02             ` Yannick Duchêne (Hibou57)
2011-10-18 21:18               ` ytomino
2011-10-18 10:10       ` J-P. Rosen
2011-10-22  6:32         ` Michael Rohan
2011-10-22  7:25           ` Yannick Duchêne (Hibou57)
2011-10-25 19:26           ` Randy Brukardt
2011-10-27 17:40 ` anon
replies disabled

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