comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Augusta: An open source Ada 2012 compiler (someday?)
Date: Fri, 28 Mar 2014 12:20:52 -0700 (PDT)
Date: 2014-03-28T12:20:52-07:00	[thread overview]
Message-ID: <330b7d3b-4d12-4482-9ed2-2c82a32a6334@googlegroups.com> (raw)
In-Reply-To: <lh205f$9ou$1@dont-email.me>

On Thursday, March 27, 2014 3:02:56 PM UTC-5, Simon Clubley wrote:
> [*] To bring this back on topic, why does something which looks like
> Ada have to be called Ada ? Call it something else and get people
> using Ada without realising it. :-)

Back in the 1970s & 1980s, Ada standardization had a crystal-clear mission:  be the one true replacement imperative programming language for munitions & support systems of the US DoD and for the NATO allies.  Back in the 1970s & 1980s, C had a crystal-clear mission:  be the implementation language of UNIX and its derivatives.  Over time, C's mission extended to being the embedded real-time programming language (except where Ada was expected instead) and the language for hardware interfacing (except where Ada was expected instead) and eventually the language for non-Unix operating systems from Microsoft.  Nowadays, Ada standardization's mission can be thought of as:
1) cater to Ada's installed base of aerospace & military & vehicular industries, especially as the host language for Ravenscar/SPARK profile; and
2) give AdaCore a credible ambiance of not being the benevolent dictator of Ada (a la Guido van Rossum for Python or Larry Wall for Perl).  Note that #1 is considered the "paying customers" of AdaCore at the heart of #2, which means that #1 & #2 are intertwined as shared fate, not entirely independent.

I would submit that Ada 202X needs to have at least a third (quite independent) mission if not a fourth mission as well.  Once that third mission arises,  then what to add or shape in the Ada standard becomes less befuddling, if not crystal-clear obvious.  I suspect that the third mission could be:

3) Be the best replacement for C++.  Ada is the anti-C++ imperative multiparadigm language.  Ada borrows good ideas from C++, Java, C#, and so forth when Ada is viewed as deficient (e.g., interfaces, finalization).  But Ada leads even C++ on declaring useful restrictions to the compiler for the compiler to enforce in an attempt to marshall human thought to obey the design's rules consistently, although C++2011 is borrowing some of Ada's semantics in this regard and hence C++2011 is starting to catch up to Ada.  One area that is ripe for Ada202X to assert its lead as the wisest imperative programming language is C++'s ever-increasing dependence on meta-template programming (MTP), even in C++2011's & C++2014's standard library.  MTP begets a disgusting depth of cryptic compile-time error messages quite often in real-world app-domain code.  Hence, MTP is C++'s achilles heal for Ada to provide a useful alternative; hence mission #4.

4) Be the least-repulsive compile-time language interpreter/source-code-generator.  Since its inception, Ada has always emphasized overt declaration of the programmer's intent.  Given the way that OCaml and C++ have been trending in the past decade, functional programming at compile-time is a state-of-the-art feature-set of compile-time declaration that Ada lacks (ignoring a.app back in the 1990s, which has fallen into disuse and was imperative instead of functional).  Ada202X could bring back a.app or completely rethink a.app to be functional instead of imperative.  C++1998, C++2003, C++2011, and onward have MTP largely by accident when it was discovered that the C++ template expansion was by happenstance Turing complete when using various arcane syntaxes & conventions & idioms.  Hence, MTP wins the award for being the least thought out massive new feature in a programming language ever, I suspect.  Ada202X's compile-time language could borrow heavily from OCaml (especially MetaOcaml) but rethink OCaml's off-putting syntax.  Ada202X could think through what "extending the compiler" and "compile-time program generator" really means (a step that C++ never accomplished regarding MTP), especially regarding debugability and visibility to the interpreted (meta-)program that is generating the compiled (app-domain-)program.  Perhaps a portion of this rethinking of extending the compiler via compile-time declarations could include aspect-oriented programming, such as borrowing from AspectJ.

Even if you reject the two proposed missions stated above (which are provided merely to stoke fires of the mind), Ada desperately needs additional missions beyond #1 & #2 above.  Having a clear reason to live goes a long way toward continuing to live at all.

  parent reply	other threads:[~2014-03-28 19:20 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-19 13:24 Augusta: An open source Ada 2012 compiler (someday?) Peter Chapin
2014-03-19 18:56 ` Tero Koskinen
2014-03-19 23:02   ` Peter Chapin
2014-03-20 18:13   ` Shark8
2014-03-20 22:41     ` Augusta: An open source Ada 2012 compiler (someday?) (Off topic) erlo
2014-03-20 23:21       ` Randy Brukardt
2014-03-19 23:04 ` Augusta: An open source Ada 2012 compiler (someday?) Brian Drummond
2014-03-19 23:24   ` Peter Chapin
2014-03-20  0:00     ` Brian Drummond
2014-03-20 18:35   ` Shark8
2014-03-22 14:30     ` Brian Drummond
2014-03-20 10:23 ` Lucretia
2014-03-20 10:49   ` J-P. Rosen
2014-03-20 23:15     ` Randy Brukardt
2014-03-24  8:18       ` J Kimball
2014-03-24  9:17         ` Thomas Løcke
2014-03-24 10:00           ` Brian Drummond
2014-03-24 14:16           ` Luke A. Guest
2014-03-24 12:51         ` Peter Chapin
2014-03-24 21:21         ` Randy Brukardt
2014-03-24 23:18           ` Dennis Lee Bieber
2014-03-24 23:50             ` J Kimball
2014-03-25  9:37           ` Stefan.Lucks
2014-03-25 20:47             ` Randy Brukardt
2014-03-25 19:41         ` Michael B.
2014-03-26  1:50           ` Shark8
2014-03-26 20:39             ` Simon Clubley
2014-03-27  9:32               ` Shark8
2014-03-27 20:02                 ` Simon Clubley
2014-03-27 20:38                   ` Lucretia
2014-03-27 21:51                     ` Niklas Holsti
2014-03-27 22:32                       ` Luke A. Guest
2014-03-28  5:12                         ` Shark8
2014-03-28  5:11                           ` J Kimball
2014-03-28  8:06                         ` Georg Bauhaus
2014-03-28 11:31                       ` Peter C. Chapin
2014-03-31 23:43                         ` Randy Brukardt
2014-03-28  8:56                     ` Dmitry A. Kazakov
2014-03-28 19:20                   ` Dan'l Miller [this message]
2014-03-28 20:40                     ` Dmitry A. Kazakov
2014-03-29 12:34                       ` Dan'l Miller
2014-03-29 13:36                         ` Dmitry A. Kazakov
2014-03-29 12:42                       ` Dan'l Miller
2014-03-29  0:15                     ` Peter Chapin
2014-03-29  3:39                       ` Shark8
2014-03-29  8:46                       ` Georg Bauhaus
2014-03-29 16:35                         ` Peter Chapin
2014-03-29  9:51                       ` Georg Bauhaus
2014-03-20 19:03   ` Shark8
2014-03-20 18:10 ` Shark8
2014-03-20 18:20   ` Qun-Ying
replies disabled

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