On Sunday, 3 July 2016 at 07:21:15 UTC, Charles Hixson wrote:
portable. And I really like having garbage collection, and
especially the syntax that it enables. I was just considering
a hash table (associative array) in C++, and realized that I
had to either allocate on the heap, or I couldn't easily do an
increment of a struct variable. (Well, I'm thinking about
QHash, because walking the files of a directory path in
standard C++ is unpleasant, and Qt makes both that and unicode
tests [the ones I need to do] pretty simple.) But if I
allocate structs on the heap I have to make sure that
everything gets released when I'm through, so I need to use an
enhanced pointer construct, so.... It's a lot simpler in D.
I do wish that phobos included a D wrapper around SQLite,
something object oriented. I'd also like to be able to depend
on class finalizers being called. Sometimes I wrap a class in
a struct just so I can depend on the finalizer.
[...]
Most of my needs are for run time flexibility rather than for
more compile time flexibility. E.g., I'd like to be able to
declare a statically sized array from a parameter. I do
appreciate D's speed, but complex templates aren't something I
ever use. (Truth is, I was pretty well satisfied with D1,
though perhaps I'm forgetting some limitations, but even then
I'm pretty much sure that I felt the main limitation was a lack
of well interfaced libraries.)
Too many of D's libraries seem to try to re-invent the wheel.
When a library is working well and has been debugged, the best
think if to create a wrapper around it. The wrapper *does*
need to adapt the library to the syntax of the language, but
that's not a huge problem. A major part of Python's success is
"batteries included".
Included after 20 years of massive adoption. Something that would
never have happened if it had a more solid competitor than
Perl... Anyway, writing a library for a dynamic scripting
language with no performance requirements is a different
challenge. Python2 has major issues with its "batteries included"
approach, just look at the fragmentation in Python's HTTP support
libraries.
Java, C# and C++ have massive libraries as a result of massive
adoption over a long period of time and massive backing.
If you are looking for GC, more runtime flexibility and libraries
then it sounds like something like the recently released C# Core
(Linux, OS-X, Windows) is going to be the best fit.
https://blogs.msdn.microsoft.com/dotnet/2016/06/27/announcing-net-core-1-0/
There are currently many smaller languages that are very
interesting and increasingly competitive:
golang.org
rust.org
loci-lang.org
ponylang.org
whiley.org
So D better focusing at doing better at what it is already doing
well (compile time) rather than expanding even more. And even
then a language like Whiley is more advanced. Whiley has a
floating type system with static typing where you can write
functions that return either strings or integers and a builtin
prover. But Whiley is currently in phase (1)... so no adoption.
I agree that a production ready D1 in 2010 would have cut into
what is now the market of Go. But that train has passed.