From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Build language with weak typing, then add scaffolding later to strengthen it?
Date: Thu, 28 May 2015 18:39:20 -0500
Date: 2015-05-28T18:39:20-05:00 [thread overview]
Message-ID: <mk88v9$im6$1@loke.gir.dk> (raw)
In-Reply-To: 20c56bea-2803-4aa9-a626-2d25e480df20@googlegroups.com
<jan.de.kruyf@gmail.com> wrote in message
news:20c56bea-2803-4aa9-a626-2d25e480df20@googlegroups.com...
...
>Now Ada has grown with the crowd.
>Ada95's syntax volume stands at roughly 3000 lexemes on par with C#.
>C++ is slightly less at 2500 or so.
>
>The old man (working in Georg's garage :) found scientific reason to follow
>the 'reduced
>instruction set' trend, that was and still is, popular in hardware CPU
>design. And came
>up with Oberon, with stands at 700 lexemes.
Other people mentioned it, but the number of pages is a horrible measure.
Ada's standard was designed to be readable by actual programmers, thus it
uses lots of extra descriptive text, shows lots of examples, and has lots of
space-wasting internal headers. And, the Oberon standards contain no runtime
library, that's a huge part of the Ada Standard. We've also got lots of
reference indexes which are intended to make it easier to find things. So
looking at the current Ada 2012+TC1 document:
Total: 951 pages (PDF).
Non-normative indexes, summarys, and tables: (Annex K-Q [106 pages], Table
of Contents [10 pages], Index [53 pages]) [169 pages]
ISO mandated boilerplate, acknowledgements, other useless cruft: 16 pages.
Description of how the standard is organized (Chapter 1): 8 pages.
Clauses totally devoted to examples: 9.11 (3 pages); 12.8 (2 pages); 11.4.3
(1 page); 13.11.6 (3 pages). [9 pages]
Libraries included in the core description (half of 3.9 - 2 pages; most of
9.6, 9.6.1 - 8 pages; most of 13.11, 13.11.4, 13.11.5 - 5 pages).
The core library (Annex A): 227 pages.
Interfacing to foreign languages (mostly libraries): 28 pages.
Specialized needs annexes (these are optional - Annex C-H): 138 pages.
Obsolete stuff (Annex J): 14 pages.
That leaves the actual language definition at 337 pages. To be fair, one
could eliminate stuff not even contemplated by Oberon - tasks (Chapter 9, 40
pages), generics (Chapter 12, 18 pages not including the example removed
earlier), and low-level programming (Chapter 13, 51 pages excluding the
example removed earlier).
So now we're at 228 pages. With some reformatting, and removing all of the
introductory text, notes, and examples, we'd save at least 20% of that
(probably more). So that means that an equivalently formatted Ada standard
would probably be roughly 180 pages (or maybe 270 if we left everything in).
Surely I could get the core of the Standard into 17 pages if I reformatted
it enough (you'd probably need a magnifying glass to read it, though).
Meaning that the number of pages doesn't mean much.
Is that bloat? Dunno. It's certainly a lot of extra precision in describing
things, making code following the standard more likely to be portable.
Hardly any programming languages describe the process of elaboration, or
carefully define how finalization happens, including in weird corner cases
that aren't likely to actually happen. And so on.
Assuming that your description of the syntax is accurate, the Oberon manual
is clearly leaving out vast amounts of needed detail. (And no, you can't
look at source of a compiler to "augment" a language standard!). The Ada
syntax alone takes up 21 pages in the Ada standard. That means that the
Oberon syntax should take up 21/3000*700 = 4.9 pages of text. That leaves
precious little space to describe the visibility rules for packages (to take
one nasty example).
And, of course, Wirth himself has a long history of writing sloppy language
standards and leaving when other people try to clean them up (Algol-W,
Pascal, Modula, Modula 2, ...). He's a brilliant language designer, but he
always has underdescribed standards. (That surely includes building
standards without any library description, which is nonsense for any
purpose.)
Summary: standard page counts are meaningless. One can change them wildly by
removing non-normative stuff, by reformatting, by leaving out the libraries
that every programmer will need, and other stuff that has nothing whatsoever
to do with content.
Randy Brukardt, ARG Editor.
next prev parent reply other threads:[~2015-05-28 23:39 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-21 19:11 Build language with weak typing, then add scaffolding later to strengthen it? Nasser M. Abbasi
2015-05-21 19:29 ` AdaMagica
2015-05-22 7:27 ` Dmitry A. Kazakov
2015-05-22 7:42 ` Georg Bauhaus
2015-05-22 8:54 ` Nasser M. Abbasi
2015-05-22 11:29 ` kalvin.news
2015-05-22 12:57 ` J-P. Rosen
2015-05-22 14:01 ` kalvin.news
2015-05-22 14:34 ` kalvin.news
2015-05-23 11:09 ` Peter Chapin
2015-05-22 15:37 ` J-P. Rosen
2015-05-22 16:29 ` kalvin.news
2015-05-22 17:39 ` Simon Clubley
2015-05-22 17:51 ` kalvin.news
2015-05-22 19:41 ` J-P. Rosen
2015-05-22 20:04 ` kalvin.news
2015-05-22 20:32 ` Jeffrey R. Carter
2015-05-22 21:22 ` kalvin.news
2015-05-23 11:14 ` Peter Chapin
2015-05-23 12:42 ` Jeffrey R. Carter
2015-05-23 17:48 ` Simon Wright
2015-05-25 8:34 ` Pascal Obry
2015-05-25 10:22 ` Simon Wright
2015-05-25 18:12 ` Georg Bauhaus
2015-05-22 20:39 ` jan.de.kruyf
2015-05-28 22:33 ` Randy Brukardt
2015-05-29 6:56 ` jan.de.kruyf
2015-05-23 12:40 ` Georg Bauhaus
2015-05-25 7:14 ` jan.de.kruyf
2015-05-25 12:26 ` Georg Bauhaus
2015-05-25 18:44 ` Shark8
2015-05-25 19:54 ` jan.de.kruyf
2015-05-25 21:25 ` Shark8
2015-05-26 7:46 ` Georg Bauhaus
2015-05-26 8:12 ` Georg Bauhaus
2015-05-25 20:01 ` Nasser M. Abbasi
2015-05-25 20:04 ` Nasser M. Abbasi
2015-05-25 20:37 ` jan.de.kruyf
2015-05-26 7:52 ` Jacob Sparre Andersen
2015-05-26 11:43 ` jan.de.kruyf
2015-05-26 15:38 ` jan.de.kruyf
2015-05-28 23:39 ` Randy Brukardt [this message]
2015-05-29 8:51 ` Stefan.Lucks
2015-05-29 18:04 ` Jeffrey R. Carter
2015-05-29 21:51 ` Randy Brukardt
2015-05-30 10:28 ` jan.de.kruyf
2015-05-30 11:12 ` Dmitry A. Kazakov
2015-05-30 13:21 ` jan.de.kruyf
2015-05-30 15:00 ` Simon Clubley
2015-05-30 18:40 ` jan.de.kruyf
2015-05-30 16:40 ` Dmitry A. Kazakov
2015-05-30 20:52 ` jan.de.kruyf
2015-05-31 8:31 ` Nasser M. Abbasi
2015-05-31 8:52 ` Dmitry A. Kazakov
2015-06-04 15:31 ` jan.de.kruyf
2015-06-04 17:23 ` Dmitry A. Kazakov
2015-06-04 20:14 ` Shark8
2015-06-04 23:12 ` Nasser M. Abbasi
2015-06-01 21:36 ` Randy Brukardt
2015-06-04 15:22 ` jan.de.kruyf
2015-05-27 13:41 ` jan.de.kruyf
2015-05-25 23:05 ` Peter Chapin
2015-05-26 8:01 ` Sylvain Laperche
2015-05-26 8:20 ` Georg Bauhaus
2015-05-26 8:49 ` J-P. Rosen
2015-05-26 12:36 ` Simon Clubley
2015-05-26 13:39 ` J-P. Rosen
2015-05-26 14:21 ` Dmitry A. Kazakov
2015-05-26 16:19 ` Shark8
2015-05-26 20:51 ` J-P. Rosen
2015-05-26 17:11 ` Jeffrey R. Carter
2015-05-28 23:49 ` Randy Brukardt
2015-05-29 21:54 ` Randy Brukardt
2015-05-29 22:32 ` Jeffrey R. Carter
2015-05-26 8:17 ` Georg Bauhaus
2015-05-28 22:46 ` Randy Brukardt
2015-05-28 23:18 ` Nasser M. Abbasi
2015-05-29 21:27 ` Randy Brukardt
2015-05-29 7:55 ` jan.de.kruyf
2015-05-29 9:27 ` Simon Wright
2015-05-29 10:23 ` jan.de.kruyf
2015-05-29 12:01 ` G.B.
2015-05-29 13:43 ` jan.de.kruyf
2015-05-29 15:32 ` Simon Wright
2015-05-29 15:57 ` jan.de.kruyf
2015-05-29 9:31 ` Jacob Sparre Andersen
2015-05-29 10:37 ` jan.de.kruyf
2015-05-29 10:56 ` Björn Lundin
2015-05-29 12:03 ` Peter Chapin
2015-05-29 21:00 ` Shark8
2015-05-29 20:57 ` Shark8
2015-05-29 21:36 ` Randy Brukardt
2015-06-01 22:20 ` Shark8
2015-05-29 21:45 ` Randy Brukardt
2015-05-29 23:12 ` Peter Chapin
2015-05-30 9:10 ` Georg Bauhaus
2015-05-23 13:01 ` Luke A. Guest
2015-05-22 17:57 ` Simon Wright
2015-05-22 18:31 ` jan.de.kruyf
2015-05-22 14:03 ` jan.de.kruyf
2015-05-22 15:21 ` David Botton
2015-05-22 15:23 ` jan.de.kruyf
2015-05-22 15:31 ` Bob Duff
2015-05-22 15:48 ` jan.de.kruyf
2015-05-22 14:25 ` G.B.
2015-05-22 15:04 ` Bill White
2015-05-22 15:28 ` Bob Duff
2015-05-22 17:46 ` Simon Clubley
2015-05-22 18:16 ` jan.de.kruyf
2015-05-22 19:01 ` Simon Wright
2015-05-22 19:41 ` jan.de.kruyf
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox