On Monday, 11 October 2021 at 15:59:10 UTC, Atila Neves wrote:
> I'm brainstorming about what I'll talk about at DConf, and during a conversation with Walter I thought it might be cool to talk about:
- Worst features implemented in a non-toy language
- Worst features (in your opinion) in D
- Features you'd like to see in D
Ideas? Examples?
Thanks!
About Wrong D features:
In my opinion, D is afraid of embracing decisions with all it's consequences... it maintains itself in a position where nothing is "the best for niche X"
i.e.: UFCS has not been really embraced with all it's consequences
D doesn't allow this
"hello".(s){
s.writeln;
}
Of course, you can introduce a template like auto doWith(alias f,T)(T v)=>f(v)
or use the "pipe!" template:
"hello".doWith!((s){
s.writeln;
})
But then yo find you can't do this
void x(string s){
s.writeln;
}
"hello".x;
i.e.: The "Nullable" allien!!!
D has a complete functional library based on ranges
But then, you find an alien named "Nullable" that is not the equivalent to Optional/Some/None and has not the range capabilities (map, fold, ...).
How difficult will be to embrace the Optional/Some/None pattern in phobos?
D needs to assume it's responsibility standardizing this kind of decisions giving a solid base to other "high level" libraries like database ones (i.e.: managing nullable fields in a "functional" way using the Optional pattern).
i.e.: GC/Not GC.
I really don't want to enter here, but I'm unhappy with this kind of discussions and I find myself driven to use other languages where they have made that decision clearly: Nim has GC (you can select the GC strategy), Rust has not GC.
i.e.: Official "high level" libraries for common uses (i.e.: Database libraries)
1 week ago I "returned" to D after some months... I need to perform a simple database task (with postgres) and I found that dpq2 was the most "recommended" one (Dlang site itself). It has vibe-d dependency (nice!!! may be it's based on fibers!!!)
The library didn't compile (it references an old vive-d version with deprecated code)... I created an issue on github with the problem and maintainer didn't recognize the problem (initially). Finally I modified manually the library and tried to run the example proposed in "examples" folder but DMD couldn't compile because some strange missing things on system libraries with my Ubuntu...
I have not mentioned that for checking it, I first created an small webserver using the example you can find in D home page... surprise!!! it didn't compile neither because references the same vive-d deprecated version (after updating the version, all worked enought).
It was enough for me. May be next year :-) (and it will be my N-D try).