www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - On * Language Design

reply Justin Johansson <no spam.com> writes:
I just happened across an essay by Tim Bray
(http://www.tbray.org/ongoing/misc/Tim)
that he wrote back in 2006 about XML Language Design (I guess he means schema
design though).

Now why should D people care about this guy's rant about (XML) Language Design?

As I read the essay, the insight that I took away was that you can take out all 
references to XML and replace them with PL (as in programming language) without
loss of generality and most of what he says, imho, is applicable to, and there
are lessons to be learned (or should have been learned in 20/20 hindsight) for
the development of D (and for any aspiring PL for that matter).

Up front he strikes a chord that will be familiar to D people quoting another
author:

“There are only two hard things in Computer Science: cache invalidation and
naming things”

And this snippet is a goodie too:

"Each and every language-design effort has the potential to blow through its
deadlines and trail along forever, and offers many chances to fall into the
bikeshed trap."

The main headings in his essay are:

Expect Semantic Gaps
Manage the Process
The Syntax-vs-Model Wars
Minimalism vs. Completeness
Evolution vs. Stability
Extensibility

If you have the time, this essay by Tim Bray is well-worth a read.  Here's the
link:

http://www.tbray.org/ongoing/When/200x/2006/01/09/On-XML-Language-Design

Enjoy,

Justin Johansson
Mar 13 2010
next sibling parent bearophile <bearophileHUGS lycos.com> writes:
Justin Johansson:
 “There are only two hard things in Computer Science: cache invalidation and
naming things”

Wonderful ^_^ Finding good names for things is both hard and important. Python development process, and the language they have produced, show that trying to invent good names is not wasted time. Every single person has quirks. So no single person is enough to invent good names. A community of people is able to smooth out such quirks and invent names that are good for the higher percentage of people. But Python again shows that sometimes in the end the final decision of a dictator is necessary (see the "x if foo else y" syntax), both to stop endless discussions, and to keep an uniform design style in the language. Most times a dictator is not necessary, and consensus emerges from the crowd itself. Bye, bearophile
Mar 13 2010
prev sibling parent reply Bane <branimir.milosavljevic gmail.com> writes:
 If you have the time, this essay by Tim Bray is well-worth a read.  Here's the
link:
 
 http://www.tbray.org/ongoing/When/200x/2006/01/09/On-XML-Language-Design
 

Interesting point in chapter Evolution vs. Stability. Maybe v2 came to fast, before v1 became popular?
Mar 13 2010
parent reply Don <nospam nospam.com> writes:
Bane wrote:
 If you have the time, this essay by Tim Bray is well-worth a read.  Here's the
link:

 http://www.tbray.org/ongoing/When/200x/2006/01/09/On-XML-Language-Design

Interesting point in chapter Evolution vs. Stability. Maybe v2 came to fast, before v1 became popular?

The naming of D1 vs D2 is a bit misleading. v1 was actually a fairly arbitrary snapshot of the development of D, to create a stable branch. There was absolutely no pause in language developement. D2 is completely different. It's a fully planned release.
Mar 13 2010
parent reply Bane <branimir.milosavljevic gmail.com> writes:
 Interesting point in chapter Evolution vs. Stability. Maybe v2 came to fast,
before v1 became popular?

The naming of D1 vs D2 is a bit misleading. v1 was actually a fairly arbitrary snapshot of the development of D, to create a stable branch. There was absolutely no pause in language developement. D2 is completely different. It's a fully planned release.

From the article: "...Having said that, the advantages to stopping with 1.0 are huge. Here’s why: one of the main success factors for a new XML language is how much software there is out there that does useful things with it. (See my proposed restatement of Metcalfe’s law over in the companion piece.) And software developers love a stable target above all things. If you publish 1.0 of your language and are fortunate enough to get some uptake in the developer community so some useful tools are shipping, bear in mind that if you then release 2.0, you’ve quite likely broken all those tools. You can maybe do this once before the developers are going to start seeing you as part of the problem rather than as part of the solution. They might just give up on you, or they might decide to go on maintaining their 1.0-compatible releases and simply ignore your 2.0, which will then likely go un-used. This is more or less exactly what happened to XML 1.1 which, despite having my name on the cover, I thought was a bad idea and fought every step of the way..." Just found some truth in all said above. Luckuly, difference between D1 and D2 isn't that great (I hope)....
Mar 13 2010
parent bearophile <bearophileHUGS lycos.com> writes:
Bane:
 Just found some truth in all said above. Luckuly, difference between D1 and D2
isn't that great (I hope)....

I think Walter & Co. have taken the right decisions about versions and releases, so I am happy about how he has managed the versions. The only thing that I don't fully like is the release date for the D2, I think it's a little too much early, because I think few more tiny breaking changes can be useful for D2. (But I know Andrei's situation). Thankfully Andrei has probably avoided to put part of the dark corner cases of D2 in his book, so they can be fixed still :-) Bye, bearophile
Mar 13 2010