What I like about D...
1) It is a compile-to-machine language, meaning high performance
for general CPU code.
2) It can link to any library offering a C-style API, for
example, OpenGL. It is good that people are providing .d files
with the necessary declarations, but if I can't find one, no big
deal. I can write my own. (But I rarely need more than a
fraction of most specialized libraries, so I have no .d files to
offer for the benefit others. If someone nags me, though, I
would.)
3a) Unicode for identifiers. I saw the discussion recently (May
30th or so) and cast my vote in favor of allowing unicode
characters for identifiers (and of course comments and string
literals.) I never knew any language allowed non-ASCII for
variable or procedure names, until I played with Go about two
years ago. I thought, cool, as a physicist/engineer I can use
lambda for wavelength, capital omega for longitude of the
ascending node, etc.
3b) More Unicode for identifiers: It's important to allow the
Germans, the French, the Japanese who write code for their own
personal research, or in-house code for their own company, to
freely use the language they know best. I can see skipping
Arabic, Hebrew and other right-to-left languages, since I can't
picture how source code would be formatted or written without
some brain-twisting. (I wonder how Arabic programmers deal with
Python?) But then, this is a topic I'm ignorant about. Chinese
and other languages with thousands of complicated-looking
characters, whew, I don't know about those either. But there's
just no reason to force the Germans to give up "ü" to write "ue"
just to please the American-invented ASCII alphabet.
(And maybe we could have string literals surrounded by a
heterogenous pair „...“ or «...» instead of the ambigous
identical twins "" (ascii 0x22) every language uses today?)
4) Ranges instead of iterators. I'm undereducated about computer
science, and have no profound enlightening thoughts about this.
I'm just a practical graphics and physics guy who can only say I
just like it better this way, compared to C++.
5) No more compiler-molassis like #include and bolted-on template
syntax. All languages, and it seems like *all* languages, but
for C and C++, have some kind of module or package or something
for making use of already-written libraries and components.
Well, no, I remember (?) fooling around with Sather (or Sather-K)
in 1998, and it too used textual inclusion of files, not unlike
#include.
6) Fast compiling. Like Ada95, Modula, Java, Go, Fortran, and
any language. No doubt due partly for reasons covered in #5, but
also any language with some kind of sense to its syntax will
compile "fast". I like sensible syntax, especially with
associative arrays, overloaded functions, and... well, everything
beyond the primitive concepts in compile-to-machine languages.
7) Speaking of sensible syntax, C++ is very difficult to write
tools for. Example: Once upon a time, I say a class Alpha that
contained within it curly declaration friend class Beta. I go
look for Beta - in the same header, and it declares friend class
Alpha. Each also had a member pointer to an instance of the
other. Cute. I wonder what it means? Maybe is part of some
"design pattern"? So I slapped together a tool using Python and
Ack (betterthangrep.org) to search for other cases like that. I
was lucky that our source was closely adhering to a standardized
style, but with templates, macros, and all manner of wickedness
allowed by C++ in general, I can see how creating a c++ static
analysis tool could be a rough adventure.
8) Cool, I can write #!/usr/bin/env rdmd and have an executable
script I can start from the command line, but run at
compiled-code speed. (Except for the time rdmd takes to compile
it, but plenty fast for the intended use-case.)
9) Unit tests built into the system. Made easy enough for lazy
programmers like me to actually write them!
10) Andrei Alexandrescu's book TDPL is one of the greatest works
of literature ever conceived by mankind. The Baghavad Gita,
Shakespeare, Hemingway, etc are all going to fall away behind
this marvelous work. Therefore, it makes sense for everyone to
use D for all programming tasks, so that this great book will be
of benefit to all!
- Ten Things I Like about D Daren Scot Wilson
-