On Thursday, 12 June 2014 at 17:52:59 UTC, Andrei Alexandrescu
wrote:
On 6/12/14, 10:40 AM, Nick Sabalausky wrote:
On 6/10/2014 12:35 PM, justme wrote:
On Wednesday, 4 June 2014 at 06:13:39 UTC, Andrei
Alexandrescu wrote:
Of possible interest.
http://www.reddit.com/r/programming/comments/278twt/panel_systems_programming_in_2014_and_beyond/
Andrei
IMHO, the coolest thing was when Rob Pike told about the tool
they made
for automatically upgrading user source code to their next
language
version.
That should be quite easy to implement now in D, and once
done, would
give much needed room for breaking changes we feel should be
done. Pike
seemed to be extremely satisfied they did it.
Personally, I wouldn't be comfortable trusting such a tool.
Besides, I
find that upgrading a codebase to a newer language version is
one of the
most trivial tasks I ever face in software development - even
in D.
It's a cute trick, but not a worthwhile use of development
resources.
I very much think the opposite, drawing from many years of
hacking into large codebases. I'm completely with Rob here. On
a large codebase, even the slightest manual or semi-manual
change is painstaking to plan and execute, and almost always
suffers of human errors.
I got convinced a dfix tool would be a strategic component of
D's offering going forward.
Andrei
I am strongly in favour of a 'dfix' tool. There exist historical
problems with languages, and you really must break them to make
things better.
Douglas Crockford was pushing for '~' for string concatenation in
ECMAScript 6, making '+' do only additon. This would have been
very similar to how D handles the two, in an arguably correct
manner, but the commity wouldn't agree to it because it would
force everyone to change their code. So in the end ES6 is full of
features, some useful, most seem nonsensical to me, but it
doesn't really fix any of the issues in ES5, because it's almost
totally backwards compatible so old code still works.
So I think having tools like gofix and deprecation warnings
mitigate this issue massively, and it's especially easier when
you're using an ahead-of-time compiled language like D. So we can
make changes which break code, but just get rid of cruft likely
to cause errors. I can't think of nearly as many examples of
error-prone things in D that I can think of in ES6, though.