Which language futures make D overcompicated?

Bo bo41 at bo0041.com
Fri Feb 9 18:21:55 UTC 2018


Here are a few more "basics" that are unneeded or confusing. Lets 
not even talk about the more advanced features like inout, ...

/-/

* auto: Static typed language yet we fall back on the compiler to 
figure out what is being assigned. Can just as well have a 
interpreter language. It only encourages lazy writing and has a 
penalty on the compilation.

/-/

* to!string, to!... requires "import std.conv"
* basic string manipulation requires "import std.string"
* join, replace, replaceInPlace, split, empty all require 
std.array
* ...

... these are basic language features, yet its required to 
included each of those libraries to every file you need it. A lot 
of languages have basic functions as standard or dynamically 
include the required code upon compilation ( or error if you have 
a double naming ). The time saved on auto compilation, can be 
reused to do the above mentioned. Two birds with one move.

/-/

* splitLines vs split .. std.array vs std.string

It confuses people because split is part of std.array but 
splitLines is part of std.string. Really! Most languages simply 
have split as a basic language feature and you indicate what you 
want to split.

Its not the only confusing or double function that is present in 
the standard library.

/-/

* scope() .. just call it "defer" just as every other language 
now does. It only confuses people who come from other languages. 
Its now almost a standard. By using scope people have have no 
clue that D has a defer. Took even me a while to know that D had 
a defer system in place.

/-/

If you have a few more weeks, this list is long :)

Unfortunately, because the code base it is impossible to fix 
these issues as too much code depends on it. The libraries, 
packages, ...


More information about the Digitalmars-d mailing list