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