This is why I don't use D.
RhyS
sale at rhysoft.com
Wed Sep 5 14:39:39 UTC 2018
On Wednesday, 5 September 2018 at 05:53:46 UTC, Neia Neutuladh
wrote:
> Compare with DMD over the past year. (Just one year!) opDot was
> deprecated, C-style array declarations were removed, opDispatch
> works differently with `with` statements, arithmetic with
> pointers of different types was deprecated, comma expressions
> no longer yield a value, `delete` was deprecated, hex string
> literals were deprecated, class allocators were deprecated,
> certain types of postblit operators were deprecated, some
> operations on `shared` variables were deprecated, declarations
> in switch-case statements can't be used in other case blocks
> anymore, `catch` statements have to declare something they
> catch now, you can't compare values from different enum types
> anymore...
>
> That's not all the breaking language changes in the past year.
> And it's just one year. (I'm cheating a bit by counting both
> deprecations and lapsed deprecation periods, but still.)
>
> D can't use semantic versioning because nearly every release
> has breaking changes. Most of them won't affect your code in
> particular, but once you start using a bunch of libraries, it's
> going to be painful.
This is the same reason why D with Code-D on Windows was a total
disaster. You install VSC+CodeD. It breaks because some
dependency library somewhere was not updated for DMD xx.0,
because D broke/changed something again. Contact the author, ...
wait for a official fix for weeks.
Now install D on my work PC. Guess what, some minor update came
out for D, install ... and it broke some libraries again. Contact
the author again ... wait for a official fix for a few weeks.
Imagine doing this for a year and half with each time you try D
or want to show D to some colleagues, all you had was a broken
mess.
And it did not stop at plugins for IDEs. Code that ran good on a
version of D, refused to work on a later because of deprecated
features. Or sometimes, it simply crashed without a single
warning. I can NOT rely on any external package for my code,
because any new compiler version can break these packages ( and
my code ).
Do people want to see how many times Vibe.D broken? Or the Mysql
plugin. You simply get fed up and give up.
Sure, i can fix my code but the external packages are a different
matter ( not in the mood to learn all the external code and fix
it every time something breaks ).
And sure, people can stick to only one compiler version for X
years but then what? You already know how fragile everything is.
What if you run into a bug in this older package, well, the
author will fix this bug in the latest master ( what may require
a new compiler version ). So you run into the whole chicken or
egg situation!
Then your forced to manually start patching the old code. If you
can! Sometimes code get changes so much over time that
back-patching is hard as hell. Its just insane to work like this.
WebFreak001 resorted to actually pre-compiling all the code and
shipping it like this on the Windows platform because it was the
only was he was able to ensure that VSC Code-D plugin actually
kept working! I have Go plugins for IDEs that also get
git/compiled and they all work out of the box. Each time i
install a IDE with Go at work, laptop, in a VM or anywhere!
At the same time i have PHP code that is 10 years old, that works
with minor updates. No need to worry about mysql and other
extensions because they are pre-compiled and stable. Go code that
is several years old that instantly compiles with the latest
compiler.
Its just amateurish at best. And this issue with the code
deprecation's, bugs, changes is only one off many issues.
Its the same reason whenever i check back on D and see BetterC or
other "improvements", that i simply yell. "FIX YOU SYSTEMS BEFORE
INTRODUCING MORE CRAP". Sorry for the languages but i am sure
that plenty of other people think the same.
I and my company is not motivated to support or help out D when i
have already put in so much wasted time in the past.
And keep those excuses how its open source and the people need to
fix everything themselves. I see several main developers, who are
paid full time more playing around with introducing features only
a handful of people want. Instead of actually making the language
stable and ensuring the entire platform runs. D in my book is NOT
a 2.xx version but feels like a pre-beta. Like 0.xx non-stable
API language.
You can guess what we do NOT develop in D but simply use Go and
PHP for our work. Go for the bits that needs extra speed, PHP for
the easy and fast development. Both are API stable, you do not
worry much about bugs or deprecation. New features can be
experienced without massive code breaking.
I do not worry about Go its build-in HTTP server breaking. It
simply runs on each compile, no matter what Go version we upgrade
to. Vibe.D on the other hand is a mess. And NOT the fault of the
Vibe.D authors but the dependencies they depend upon. I have now
a simple rule. You want us as a company to use your languages for
web development. You do not have a build in and maintained HTTP
server? No thanks. And that attitude is a direct result from the
fun we had with D.
So take my comments however you like, D is not ready for specific
production jobs. If you build all your code yourself, then D is
usable. But the moment you rely on 3th party code in the D
platform, it is unstable at best.
More information about the Digitalmars-d
mailing list