From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Seeking for papers about tagged types vs access to subprograms
Date: Thu, 9 May 2013 17:19:14 -0500
Date: 2013-05-09T17:19:14-05:00 [thread overview]
Message-ID: <kmh7d4$up3$1@loke.gir.dk> (raw)
In-Reply-To: 12gn9wvv1gwfk.10ikfju4rzmnj.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:12gn9wvv1gwfk.10ikfju4rzmnj.dlg@40tude.net...
> On Wed, 8 May 2013 15:27:50 -0500, Randy Brukardt wrote:
>
>> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
>> news:nd22gfeezrwf$.tlj4yyygrwq3$.dlg@40tude.net...
>> ...
>>> Each time you do something with a type you get another one. Otherwise it
>>> becomes untyped.
>>
>> That way leads to madness, I think. It's better for "types" to be fairly
>> weak and interoperable.
>
> Weak typing is better?
Yes, because we need to move beyond typing to other forms of static error
detection. Typing is too rigid to do a good job -- you need to include
statically known information about the contents of variables and parameters,
which can change from line-to-line in a program.
I want checking that is *stronger* than what can be provided by statically
applied types. Trying to get it by extending the type model directly is
madness, especially as it makes sharing much less possible.
>> In this model, "types" are the low-level view of
>> entities (with things like representation, "kind" [integer, float, array,
>> etc.]).
>
> Structured type equivalence, DDL, the third manifesto etc.
>
>> On top of that, you have some thing else, let's call them "profiles"
>> (as "interfaces" imply dynamic behavior, which is not what we're talking
>> about here). In my language, "profiles" are statically checked and apply
>> to
>> objects as well as subprograms (objecting being overloadable). "Profiles"
>> provide the high-level view of entities, and would be where properties
>> like
>> "apples" and "oranges" would be dealt with. There'd be a shorthand for
>> adding a profile to all uses of a type (just as subtypes provide that for
>> constraints in Ada). If the profiles "match", then the items are
>> compatible,
>> and if they don't, then they're not.
>>
>> If done right, this would provide a lot more static checking
>> opportunities
>> than Ada could ever have, and it would get away from the stale notion of
>> "type", which is just not powerful enough by itself.
>
> This, I am afraid, is how many people view strong typing and how this
> leads
> them away from typing. It takes certain courage to admit that you hate
> strong typing, because it became a sort of PC-doctrine, which everybody
> feels obliged to commit publicly to, while cursing it privately. Still the
> alternative to strong typing is the horrific mess you just have described.
> Of course I completely disagree with your view.
Yes, of course. You have completely bought the OOP bill of goods that claims
there is something magical about types.
> Strong typing is madness only without type hierarchies.
Who said anything about getting rid of hierarchies? I think they're greatly
overused (the number of abstractions that benefit from a hierarchy is quite
low), but there certainly are cases where they help.
> Types are not isolated.
Again, no one said anything about them being isolated. Although I do think
that vast majority of types ought to be separate from other types -- the
interactions being handled in the operations, not in the types themselves.
> In certain contexts values of different types are
> interchangeable. E.g. Positive can be used as Integer in some contexts. In
> other contexts it cannot.
Great, context-dependent types. There are only two good descriptions for
that: "madness", or better, "weak typing". :-) (And of course, there are no
contexts where Integer and Positive are "different". You are already far out
of the mainstream when you say that. And of course, to allow such a
difference, you have to go beyond typing, to say "profiles".)
Types form the bedrock of a programming language design, and as such they
should be unchanging. There should be no difference in typing between
contexts -- it has to be the same everywhere. To get further checks, you
have to add on another layer on top.
> This difference makes them distinct types,
> nothing else. Where is a difference there is a new type.
I strongly disagree with this. The only way this could work is for *every*
use of *every* entity of a program to be a separate type. And then have lots
of interconvertability rules. I think you'd quickly reach a level of
insanity.
> Substitutability
> (= implicit type conversion) is the glue to bring a structure into the
> universe of atomized types. You use Positive as if it were Integer because
> they participate in a structure of a super-subtype relationship. That does
> not make them same type. You cannot force software design into a framework
> when types were completely isolated from each other. Types participate in
> rich relationships. The language should support declaration and design
> such
> structures of types with static checks. Inventing "profiles", "aspects"
> etc
> gains nothing.
Seems to me that you are drunk on the OOP-koolaid. What you can usefully do
with type algebra is very limited, and I think we need to go beyond that.
In particular, I think the Ada model of few types (essentially, initial
declaration equivalent) is the way to go; all of the action should be on
enhancing subtypes and subprograms such that static checks are possible (by
combining constraints, null exclusions, predicates, parameter/result
profiles, and possibly other things into an integrated concept).
> Strong typing is an ability to distinguish types. Not mixing types means
> that you could not have subprograms with more than one argument. It is
> just
> crazy.
Certainly when you invent ideas like this, which have nothing to do with
anything that I said or was thinking about. Obviously, operations of one
type need parameters of another type. But your OOP-fever means that you
think that this somehow implies the types are related. And that way can only
lead to madness.
> Types are mixed all the time. In a statically typed language all
> cases when types get mixed are statically checked. You cannot do that
> without taking types apart first.
I have no idea what the heck you are talking about now. In any case, it
makes no sense for me to respond to someone that has an advanced case of
OOP-fever. Certainly, *one* of us is insane -- time will prove which. No
point in my spending any more time on this topic unless someone else wants
to discuss it.
Randy.
next prev parent reply other threads:[~2013-05-09 22:19 UTC|newest]
Thread overview: 202+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-28 5:14 Seeking for papers about tagged types vs access to subprograms Yannick Duchêne (Hibou57)
2013-04-30 0:31 ` Yannick Duchêne (Hibou57)
2013-04-30 0:41 ` Shark8
2013-04-30 1:00 ` Yannick Duchêne (Hibou57)
2013-05-02 1:18 ` Randy Brukardt
2013-05-02 2:29 ` Jeffrey Carter
2013-05-06 10:00 ` Yannick Duchêne (Hibou57)
2013-05-06 10:18 ` Dmitry A. Kazakov
2013-05-06 10:55 ` Yannick Duchêne (Hibou57)
2013-05-06 12:11 ` Dmitry A. Kazakov
2013-05-06 13:16 ` Yannick Duchêne (Hibou57)
2013-05-06 14:16 ` Dmitry A. Kazakov
2013-05-06 15:15 ` Yannick Duchêne (Hibou57)
2013-05-06 18:55 ` Dmitry A. Kazakov
2013-05-06 20:05 ` Adam Beneschan
2013-05-07 7:30 ` Dmitry A. Kazakov
2013-05-10 4:33 ` Yannick Duchêne (Hibou57)
2013-05-07 20:35 ` Jacob Sparre Andersen news
2013-05-07 20:44 ` Yannick Duchêne (Hibou57)
2013-05-07 22:32 ` Dennis Lee Bieber
2013-05-07 23:10 ` Adam Beneschan
2013-05-08 0:18 ` Shark8
2013-05-10 4:34 ` Yannick Duchêne (Hibou57)
2013-05-10 8:27 ` Simon Wright
2013-05-10 18:08 ` Niklas Holsti
2013-05-08 7:38 ` Dmitry A. Kazakov
2013-05-08 7:59 ` Yannick Duchêne (Hibou57)
2013-05-08 8:23 ` Dmitry A. Kazakov
2013-05-08 9:39 ` Yannick Duchêne (Hibou57)
2013-05-08 9:51 ` Yannick Duchêne (Hibou57)
2013-05-08 10:23 ` Dmitry A. Kazakov
2013-05-08 11:08 ` Yannick Duchêne (Hibou57)
2013-05-08 15:29 ` Dmitry A. Kazakov
2013-05-08 16:13 ` Yannick Duchêne (Hibou57)
2013-05-08 18:17 ` Dmitry A. Kazakov
2013-05-10 4:35 ` Yannick Duchêne (Hibou57)
2013-05-08 20:27 ` Randy Brukardt
2013-05-09 7:33 ` Dmitry A. Kazakov
2013-05-09 22:19 ` Randy Brukardt [this message]
2013-05-10 3:29 ` Yannick Duchêne (Hibou57)
2013-05-10 4:16 ` Yannick Duchêne (Hibou57)
2013-05-10 8:42 ` Dmitry A. Kazakov
2013-05-10 11:18 ` Yannick Duchêne (Hibou57)
2013-05-10 12:15 ` Dmitry A. Kazakov
2013-05-10 12:40 ` Yannick Duchêne (Hibou57)
2013-05-10 12:59 ` Yannick Duchêne (Hibou57)
2013-05-10 13:54 ` Dmitry A. Kazakov
2013-05-10 14:01 ` Yannick Duchêne (Hibou57)
2013-05-10 14:27 ` Dmitry A. Kazakov
2013-05-10 15:20 ` Yannick Duchêne (Hibou57)
2013-05-11 7:22 ` Georg Bauhaus
2013-05-10 18:04 ` Niklas Holsti
2013-05-10 19:33 ` Yannick Duchêne (Hibou57)
2013-05-11 0:18 ` Randy Brukardt
2013-05-11 7:14 ` Yannick Duchêne (Hibou57)
2013-05-11 21:06 ` Niklas Holsti
2013-05-11 23:19 ` Shark8
2013-05-12 6:09 ` Niklas Holsti
2013-05-14 2:02 ` Randy Brukardt
2013-05-12 6:44 ` Yannick Duchêne (Hibou57)
2013-05-12 8:10 ` Niklas Holsti
2013-05-12 8:49 ` Yannick Duchêne (Hibou57)
2013-05-12 18:56 ` Jeffrey Carter
2013-05-12 22:15 ` Robert A Duff
2013-05-13 0:26 ` Jeffrey Carter
2013-05-13 7:03 ` Yannick Duchêne (Hibou57)
2013-05-13 13:15 ` Robert A Duff
2013-05-13 17:30 ` Jeffrey Carter
2013-05-13 18:01 ` J-P. Rosen
2013-05-13 18:39 ` Bill Findlay
2013-05-13 18:57 ` Jeffrey Carter
2013-05-13 19:13 ` Robert A Duff
2013-05-13 20:38 ` J-P. Rosen
2013-05-14 7:26 ` Dmitry A. Kazakov
2013-05-14 20:00 ` Robert A Duff
2013-05-15 10:10 ` Dmitry A. Kazakov
2013-05-14 19:56 ` Robert A Duff
2013-05-15 4:24 ` Yannick Duchêne (Hibou57)
2013-05-15 9:28 ` Dmitry A. Kazakov
2013-05-15 11:31 ` Peter C. Chapin
2013-05-15 12:32 ` Yannick Duchêne (Hibou57)
2013-05-15 19:59 ` Peter C. Chapin
2013-05-15 20:56 ` Dmitry A. Kazakov
2013-05-15 12:46 ` Dmitry A. Kazakov
2013-05-15 18:15 ` Jeffrey Carter
2013-05-15 19:18 ` Eryndlia Mavourneen
2013-05-15 19:57 ` Dmitry A. Kazakov
2013-05-15 20:37 ` Yannick Duchêne (Hibou57)
2013-05-15 20:48 ` Dmitry A. Kazakov
2013-05-16 12:45 ` Eryndlia Mavourneen
2013-05-16 17:16 ` Jeffrey Carter
2013-05-16 9:41 ` G.B.
2013-05-16 12:35 ` J-P. Rosen
2013-05-15 14:21 ` J-P. Rosen
2013-05-14 2:14 ` Randy Brukardt
2013-05-14 19:35 ` Robert A Duff
2013-05-15 4:11 ` Yannick Duchêne (Hibou57)
2013-05-16 23:36 ` Randy Brukardt
2013-05-13 5:21 ` Niklas Holsti
2013-05-13 7:22 ` Dmitry A. Kazakov
2013-05-13 8:23 ` Yannick Duchêne (Hibou57)
2013-05-13 19:20 ` Niklas Holsti
2013-05-14 8:14 ` Dmitry A. Kazakov
2013-05-10 3:47 ` Yannick Duchêne (Hibou57)
2013-05-11 0:22 ` Randy Brukardt
2013-05-11 7:22 ` Yannick Duchêne (Hibou57)
2013-05-10 3:59 ` Yannick Duchêne (Hibou57)
2013-05-10 4:03 ` Yannick Duchêne (Hibou57)
2013-05-10 7:48 ` Dmitry A. Kazakov
2013-05-10 8:12 ` Yannick Duchêne (Hibou57)
2013-05-10 15:11 ` Yannick Duchêne (Hibou57)
2013-05-11 0:42 ` Randy Brukardt
2013-05-11 6:37 ` Dmitry A. Kazakov
2013-05-11 7:06 ` Georg Bauhaus
2013-05-11 7:42 ` Dmitry A. Kazakov
2013-05-11 8:14 ` Yannick Duchêne (Hibou57)
2013-05-14 2:29 ` Randy Brukardt
2013-05-14 7:44 ` Dmitry A. Kazakov
2013-05-14 11:34 ` Yannick Duchêne (Hibou57)
2013-05-14 12:16 ` Dmitry A. Kazakov
2013-05-14 13:13 ` Yannick Duchêne (Hibou57)
2013-05-14 18:41 ` Randy Brukardt
2013-05-15 11:20 ` Peter C. Chapin
2013-05-15 13:00 ` Dmitry A. Kazakov
2013-05-15 21:12 ` Peter C. Chapin
2013-05-15 22:08 ` Dmitry A. Kazakov
2013-05-16 11:31 ` Peter C. Chapin
2013-05-16 11:56 ` Yannick Duchêne (Hibou57)
2013-05-16 12:20 ` Dmitry A. Kazakov
2013-05-16 13:10 ` Peter C. Chapin
2013-05-16 13:54 ` Dmitry A. Kazakov
2013-05-16 17:15 ` G.B.
2013-05-16 18:09 ` Peter C. Chapin
2013-05-16 19:16 ` Dmitry A. Kazakov
2013-05-16 21:59 ` Georg Bauhaus
2013-05-17 19:57 ` Dmitry A. Kazakov
2013-05-16 21:20 ` Niklas Holsti
2013-05-16 23:20 ` Peter C. Chapin
2013-05-17 5:25 ` Niklas Holsti
2013-05-17 7:53 ` Georg Bauhaus
2013-05-16 13:09 ` Eryndlia Mavourneen
2013-05-11 7:58 ` Yannick Duchêne (Hibou57)
2013-05-11 9:08 ` Dmitry A. Kazakov
2013-05-11 18:14 ` Niklas Holsti
2013-05-11 8:03 ` Yannick Duchêne (Hibou57)
2013-05-11 9:16 ` Dmitry A. Kazakov
2013-05-11 11:49 ` Georg Bauhaus
2013-05-11 12:25 ` Dmitry A. Kazakov
2013-05-11 22:51 ` Robert A Duff
2013-05-12 6:02 ` Dmitry A. Kazakov
2013-05-12 6:25 ` Yannick Duchêne (Hibou57)
2013-05-12 7:14 ` Dmitry A. Kazakov
2013-05-12 7:37 ` Simon Wright
2013-05-12 7:59 ` Dmitry A. Kazakov
2013-05-12 8:21 ` Yannick Duchêne (Hibou57)
2013-05-12 9:25 ` Dmitry A. Kazakov
2013-05-12 9:32 ` Yannick Duchêne (Hibou57)
2013-05-12 10:07 ` Dmitry A. Kazakov
2013-05-11 7:32 ` Yannick Duchêne (Hibou57)
2013-05-11 7:46 ` Yannick Duchêne (Hibou57)
2013-05-14 12:46 ` Weaker typing as a part of the way to stronger typing? (Was: Seeking for papers about tagged types vs access to subprograms) Jacob Sparre Andersen
2013-05-14 19:08 ` Randy Brukardt
2013-05-10 16:02 ` Seeking for papers about tagged types vs access to subprograms Yannick Duchêne (Hibou57)
2013-05-08 20:12 ` Randy Brukardt
2013-05-09 7:50 ` Dmitry A. Kazakov
2013-05-09 21:43 ` Randy Brukardt
2013-05-10 4:39 ` Yannick Duchêne (Hibou57)
2013-05-10 7:49 ` Dmitry A. Kazakov
2013-05-11 0:09 ` Randy Brukardt
2013-05-11 6:40 ` Dmitry A. Kazakov
2013-05-14 3:01 ` Randy Brukardt
2013-05-14 8:32 ` Dmitry A. Kazakov
2013-05-14 19:02 ` Randy Brukardt
2013-05-15 4:43 ` Yannick Duchêne (Hibou57)
2013-05-16 23:27 ` Randy Brukardt
2013-05-15 9:14 ` G.B.
2013-05-15 12:08 ` Dmitry A. Kazakov
2013-05-15 14:43 ` G.B.
2013-05-15 15:02 ` Dmitry A. Kazakov
2013-05-14 19:21 ` Robert A Duff
2013-05-10 4:29 ` Yannick Duchêne (Hibou57)
2013-05-07 1:14 ` Randy Brukardt
2013-05-07 2:42 ` Yannick Duchêne (Hibou57)
2013-05-07 1:09 ` Randy Brukardt
2013-05-07 7:41 ` Dmitry A. Kazakov
2013-05-07 20:27 ` Jacob Sparre Andersen news
2013-05-07 20:40 ` Yannick Duchêne (Hibou57)
2013-05-08 7:57 ` Dmitry A. Kazakov
2013-05-08 20:37 ` Randy Brukardt
2013-05-09 8:04 ` Dmitry A. Kazakov
2013-05-09 21:33 ` Randy Brukardt
2013-05-10 7:15 ` Dmitry A. Kazakov
2013-05-11 1:00 ` Randy Brukardt
2013-05-11 7:08 ` Yannick Duchêne (Hibou57)
2013-05-11 7:12 ` Dmitry A. Kazakov
2013-05-14 2:52 ` Randy Brukardt
2013-05-11 5:31 ` Simon Wright
2013-05-11 7:22 ` Dmitry A. Kazakov
2013-05-02 1:09 ` Randy Brukardt
2013-05-02 6:56 ` Dmitry A. Kazakov
2013-05-02 21:49 ` Randy Brukardt
2013-05-03 6:49 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox