I strongly disagree: Having two versions of the language can only lead to confusion.

If there is a need for a "simplified" D, this should be achieved by defining D in several levels, not just by branching off the project. The simplified D should still evolve alongside with full D and kept in sync.




bearophile wrote:
I think this comment contains a grain of truth: languages that start simple can 
gain an user base, and then they can slowly grow more complex:

http://www.reddit.com/r/programming/comments/b74jv/scala_books_in_general_are_just_not_selling_well/

The const/nothrow/pure system of D2 is useful, but in practice it's restrictive 
and a bit fussy too: there are legal and useful D1 programs that just can't be 
compiled by D2. I have shown a small example problem here (I think this problem 
can be fixed):
http://d.puremagic.com/issues/show_bug.cgi?id=3833

So the D1 language can be useful as ladder to climb to the complexity heights 
of D2 language. People can learn D1, that's simpler and less fussy. Once they 
know D1, if they like it and they need it they can learn D2 too. Sometimes you 
want to use D2 just because you want to create larger programs (while D1 can be 
fitter for smaller ones).

If this usage of D1 is more than an illusion of mine, then the future evolution 
of D1 language can be shaped to help in such didactic/introduction purposes. To 
do this the D1 can be changed a little, removing some of its features that are 
absent in D2 (but not all of them, some of them were removed in D2 because of 
other improvements that are missing in D1), and adding few useful features that 
are very simple to use and understand, (like struct constructors, that I think 
(despite increasing the compiler complexity a little) can decrease a little the 
complexity of the language because they remove a special case, you don't need 
to remember that structs don't have those constructors).

Bye,
bearophile

Reply via email to