Many years ago I read the D book and really liked many aspects of the language. What kept me from using it was the ecosystem. They had three compilers and two different standard libraries, none of which were fully compatible with each other which led to a whole bunch of weird problems. These days it’s probably better. Maybe I should give it another chance.
If nothing else, there’s also OpenD, which might be better for you based on your requirements.
3 Ds? That’s too many! Let’s make a new D that encompasses them all!
/j
D+++
EEE
Oh no that’s a Microsoft strategy
There’s now 4 competing standards.
TBH, the compiler issue mostly resolved, only thing that is still problematic is module constructor order between DMD and LDC.
D is more than 20 years old (from 2001), so it’s due for a renaissance, Python was also in its 20s before it became fashionable.
D seems unlikely to get a renaissance. These days languages are facing much stiffer competition, and D has never solved its fundamental problems:
It is a rudderless language, that struggles with fragmentation due to the hype-driven addition of half-baked and mutually incompatible paradigms, with a leadership that keeps driving away contributors.
I can’t see how any of this could change while Walter Bright is still in charge, but I also don’t see how the language could survive him stepping down as BDFL
Was there drama with D? I’m out of the loop…
Multiple in fact. D1 vs D2, Tango vs Phobos, mutable by default vs const by default (was minor, but allegedly lead to the existence of Rust), Adam D Ruppe leaving and forking the compiler (OpenD - might be useful to you depending on things), “let nazis code” (though DLF have not only backtracked on it but also set up some basic safety measures), etc. Can still recommend the language if you want a more C-style language and not OCaml with curly brackets, or if borrow checker is a dealbreaker for you in Rust.
“let nazis code”
What do you mean by that?
(Also, if possible, please do more of this meme with other languages)
We really all need to get along and accept each others’ opinions. Even if some people are completely wrong and think mutable by default it OK. Hehe.
The Wikipedia article for D links to this blog post which seems pretty damning.
It really does mystify me what anyone thinks they’re accomplishing by creating a brand new programming language these days. Other than a purely academic exercise, of course.
Whatever features you want your language to have, there’s probably already a language out there that’s damn close to it. And if your ideal language is just like some existing language except for a few niggling details … then there’s no need to start from scratch – just make a modified version of that language with a few little changes to make it act the way you want.
Programming languages are just about a solved problem now, IMO. I can’t imagine any scenario where creating a new language from scratch would be better than tweaking an existing language … or just using an existing language as-is.
I think there are programming paradigms that haven’t even been discovered yet. Rock music was “discovered” centuries after baroque music, and composers back then would have thought baroque music is the ultimate musical genre, which could not have been improved upon.
I’ve been working on a programming language recently that sort of programs itself. It’s hard to explain how it works, since I approached it from a mathematical direction, but for a domain and range defined with a set of correct input-output pairs, there are an infinite number of functions which correctly maps one input to its corresponding output. If we define f_1 as all functions which correctly map the first IO pair, f_2 as functions which correctly map the second IO pair… Etc etc until we reach f_N, then the set intersection of all f_1…f_N is the set off all functions which satisfy our requirements. From this set of known correct functions, we can sort them by speed or some other trait.
But the devil’s in the details there. I won’t go into how I get f_1…f_N, but I’m having fun thinking about it & designing it. It may even be useful some day.
Yeah, GRTT wasn’t really invented until 2021. Of course it borrows from many other theories, but it is not easy to fit under existing calculi (tho it can be “lowered” to MLTT).
I want a language with an internal/core calculus of GRTT with a specific grading that I believe will provide both optimal evaluation and prompt resource release. You aren’t going to get that by building on top of another language.
Of course you could do it as a library for another language, but the few values you could lift/lower and the necessary analysis do to bidirectional type inference/checking mean that you are writing a compile phase whether you call it that or not. In theory, you might save on the tokenizer/parser, but those are trivial to write. You might be able to reuse parts of the API/ABI, which could be an advantage if the underlying language has a good, stable one that can reflect your linking/calling/passing restrictions; but that’s not likely.





