Re: How come Ada isn't more popular?





"Dmitry A. Kazakov" <mailbox@xxxxxxxxxxxxxxxxx> writes:

On Fri, 02 Feb 2007 14:57:17 +0100, Markus E Leypold wrote:

When I talk about all those transitions, I see, that there was no
C->Ada transition, at least no mass movement. So we come back to the
C->initial question: Why not?

How much popular was C that time? I am asking this question because I

Really popular, at least in Europe and the US, I think. Pascal was a
real contender on micros in the eighties but it had practically lost
out in the nineties despite there being still a good number of Delphi
shops/people/developers around.

learned C after Ada. My personal transition was FORTRAN-IV/PL/1 -> Ada 83.

I think so. GNAT was a quite poor compiler for too long. Another important

GNAT is still annoying the hell out of me in fringe areas of the
language. And the errors are so fundamental, that I begin to think
that it will take a long time to smoke them out.

Furthermore I believe there is simply no incentive for AdaCore (who as
I understand maintain most of the GNAT code in the GCC repository) to
establish a good or stable baseline in the publicly accessible
repository.

thing was (is) a lack of good IDE. C++ vendors paid much attention to
design IDE, much more than to compiler quality... This is the first thing a
newcomer sees.

There is something in that. Additionally there is/was a number
additional tools missing like lint/splint/cscope etc.


Why? OO is about encapsulation and polymorphism, these don't need
references everywhere.

Yes, but -- you want to keep, say, a list of Shape(s). Those can be
Triangle(s), Circle(s) etc, which are all derived from class
Shape. How do you store this list? An array of Shape'Class is out of
question because of the different allocation requirements for the
descendants of Shape(s).

Why should this worry you (and me)? It should Randy and Robert! (:-))

The language does not require array implementation to be contiguous. Randy
told once that Janus Ada is practically ready for

type X is array (...) of Y'Ckass;

OK, then But non contigous representation of arrays will really stress
memory management, fragment the heap (we can't do that on the stack
AFAIS). And what about mapping of C arrays to Ada arrays (or is that
not possible anyway -- I admit I'd have to read that up)

What about maintainability and reasoning?

What about it? It's easy with value-oriented languages (i.e. languages
that just produce new values from old ones in a non-destructive
fashion). Functional languages do this therefore reasoning is a well
developed art there. But the representations of all those values
(trees, lists, ...) (a) rely heavily on representation sharing and (b)
use references because of that. They need and use GC.

You are mixing by-value vs. by-reference semantics with no-identity vs.
has-identity.

No. Values have no "identity". "Object identity" smacks heavily of
storage and memory chunks.

I fail to see how "identity" comes into the question of
"value-oriented" languages (your term, BTW) and represenation
sharing. GC is about references (to memory) and representation sharing
works with references to parts of another "value" (see lisp
lists). Represnattion sharing needs either reference counting
(inefficient, is also just some kind of instant GC) or GC.

These are two semantically different things. One is about
implementation another is about properties of the domain. "Premature
optimization" is you know what... If identity is in question, then objects
should be made limited and could then be accessed through referential
objects. But that alone does not require GC. I might also require no
reference object if self-recursive types supported.

I admit I cannot follow you into your rather foreign and, I have to
say, closed and self referential world of programming language
design. But that doesn't matter much: I also have forgotten why we're
discussing this. "Maintainability and reasoning" was somewhere
there. But did you answer my answer (quoted above) or did you just
declare it as invalid, because you have a different terminology?
Seems, we've actually stopped communicating ...

So ... -- I summarize: In your opinion GC is bad, and I don't
aunderstand your reasoning, in mine it's indispensable in a world were
program sizes have grown and we desire to program on different levels
of abstractions than we did 10 or 20 years ago.

We should leave it at that.

Regards -- Markus

.



Relevant Pages

  • Re: How come Ada isnt more popular?
    ... then But non contigous representation of arrays will really stress ... It's easy with value-oriented languages (i.e. languages ... use references because of that. ... The example you mentioned was a tree. ...
    (comp.lang.ada)
  • Re: How come Ada isnt more popular?
    ... You can return a limited object within the same scope. ... But a process of bringing the candidate languages into the ... The language does not require array implementation to be contiguous. ... use references because of that. ...
    (comp.lang.ada)
  • Re: comments on my design of a new language?
    ... This is not applicable to most uses of references, ... "global" array or dictionary, and using indices or unique keys as ... There are languages which don't have references: Tcl, awk, Perl up to ...
    (comp.lang.misc)
  • Re: why cannot assign to function call
    ... hypothetical C-like languages, ... sizeof business would still indicate that a pointer was being passed. ... talk about variables of an array type. ... the earlier version of the standard didn't have numbered ...
    (comp.lang.python)
  • Re: Test if memory pointer is valid?
    ... I can see setting a new pointer initially to the address of the beginning of an array, for example, and then incrementing the pointer to address subsequent elements, but that would usually be done inside a function, where the new pointer would go out of scope at the end of the function and be reinitialized if it is called again. ... I would like to see a specific example where it is necessary to have multiple references such as this where it would be necessary to check for it having been freed. ... copies of all the TLabel references already in the form as individual ...
    (comp.lang.pascal.delphi.misc)