5 ms·
I wrote a blog post in 2012 [1]. It gives my thoughts on the topic. In brief, D was quite popular around 2008 when no decent C++98 replacements existed. However
by attractivechaos 6y ago
I wrote a blog post in 2012 [1]. It gives my thoughts on the topic. In brief, D was quite popular around 2008 when no decent C++98 replacements existed. However, the D1-to-D2 transition, the Phobos/Tango (two core libraries) drama and the non-open-source components have ruined its reputation. I still love D but with the standardization of C++11 and the rise of Go and Rust, D won't have a chance again.
[1]: https://attractivechaos.wordpress.com/2012/02/28/timeline-of-the-d-programming-language/ https://attractivechaos.wordpress.com/2012/02/28/timeline-of...
- pjmlp 6y agoAdditionally C# and Java have been getting better AOT compilation story, value types support and native memory handling, so metaprogramming is the last big feature standing. Which is quite unfortunate, as the language is quite appealing and the community always has interesting discussions.
- WhoCaresLies 6y agodotnet and Java stand no chance in the modern world They are heavy, bloated, and try to do everything, at the end of the day they pick the lowest common denominator, for everything, and they ship it They want compile to a small executable, they are stuck and ended up just zipping everything and calling it a day They want to interop with native world, but they introduce runtime overhead and their GC/memory model is a barrier They want to AOT compile, but their runtime and libraries rely a lot on runtime reflection They want to be tiny, but they have ton of legacy package that makes them very heavy Just look at the success story of go, it invalidates any attempts to make both dotnet and java attractive, it is too late, even more too late in an ARM world where relying on a JIT is a weakness
- vips7L 6y ago> They are heavy, bloated, and try to do everything, at the end of the day they pick the lowest common denominator, for everything, and they ship it What does this even mean? > They want compile to a small executable, they are stuck and ended up just zipping everything and calling it a day Both can compile executables the same size as go? See core-rt or the graalvm native-image compiler. > They want to interop with native world, but they introduce runtime overhead and their GC/memory model is a barrier Java's GC's are probably better than any on the market, including go's. And I will agree that currently native interop from the JVM is more expensive than it should be, but they're working on it. > They want to AOT compile, but their runtime and libraries rely a lot on runtime reflection. Easily solved by just declaring what you reflect upon or using runtime agents to find it. It's more difficult than a language than was designed to do it from the start, but eventually all of the big libraries will have it declared already. Hibernate already does [0][1] [0] https://github.com/hibernate/hibernate-orm/blob/5eedda9a467fef44d924f64203023b2345b8415f/hibernate-graalvm/src/main/java/org/hibernate/graalvm/internal/GraalVMStaticAutofeature.java https://github.com/hibernate/hibernate-orm/blob/5eedda9a467f... [1] https://github.com/hibernate/hibernate-orm/blob/5eedda9a467fef44d924f64203023b2345b8415f/hibernate-graalvm/src/main/java/org/hibernate/graalvm/internal/StaticClassLists.java https://github.com/hibernate/hibernate-orm/blob/5eedda9a467f...
- pjmlp 6y agoI should resist to answer trolls, but then again, I can offer a presence to the audience. Java has had AOT compilation since around 2000, in fact the free beer AOT compilation and JIT caches now available on OpenJDK originate from BEA J/Rockit. Likewise in what concerns the free beer AOT and JIT cache on J9, it originates from WebSphere Real Time JVM. As most FOSS people weren't willing to pay for them, so urban myths about Java compilation support models get cargo culted, while those of us that don't have any issues working for the man got to enjoy them. Likewise .NET has had support for AOT compilation since the beggining with NGEN, then Windows 8 adopted the Bartok compiler from Singularity and Windows 8 .NET Native steems from Project N based on Midori learnings. And then there are the older ones from CosmOS, Mono, IL2CPP and the upcoming CoreRT. The success stories of Go are called Docker and Kubernetes, it hardly matters for anything else, while Java, .NET, alongside C++ and JavaScript, own the enterprise. Even Google has decided to replace the Go written parts in Fuchsia with either C++ or Rust.
- WhoCaresLies 6y agoI should also resist to answer to delusionists Java AOT story is all over the place, and it's not even good, remember the 300+mb executable from Excelsior? AOT low profile? yeah sure it invalidates the whole language features Dotnet AOT? i don't call experiments, products, and they have the same limitations as Excelsior AOT, they produce insanly large executables, or if you want to target something like GO, you need to give up on the language features, i don't call this a good experience Il2CPP, it's a transpiler; and same story as Excelsior AOT, it produces insanly large executable, the GC, and the code produced is very poor quality due to the nature of the language (lot manipulations at runtime, including reflection) Go success story is that it now go beyong docker and k8s, people write cli tools in GO (github cli one good example), they write all their servers in GO (Riot for example), and some start to do gamedev with GO (ebiten) Google is still using GO, it's not a system language it has a GC And since the Rust guy left, their rust effort vanished, at least publicly https://github.com/google https://github.com/google oh and BTW, we'll see wich one get flagged, the one who call someone a TROLL because he give valid arguments, or someone who call someone a delusionist
- 6y ago
- teleforce 6y agoDon't rush to conclusion mate, it is still early by programming language standard, and jury is still out on Go and Rust. Remember where was Python when 20 years old? It's just another scripting programming language on the block and was playing second fiddle to Perl and TCL. Ruby was hot on its heels due to RoR hipsters [1]. Replace Perl/Rust, TCL/C++, Ruby/Go and RoR/Kubernetes, see the pattern emerging for interpreted/compiled programming languages diaspora. But now look how far Python has come despite the transition from Python 2 to 3 fiasco. At least D has passed the stage of growing pain while transitioning from D1 and D2 with minimum damages. [1]https://insights.dice.com/2018/03/09/hipsters-ruined-ruby-fine-now-tiobe https://insights.dice.com/2018/03/09/hipsters-ruined-ruby-fi...
- deleted 6y ago[deleted]
- crazypython 6y agoNote: D2 is now stable, and also open-source. There are no plans for a D3. Remember when Python went from 2 to 3? It was incredibly painful. But the transition is over now. Depending on who you ask, Python is now the most popular[0], third most popular[1], or second most popular language[2]. When I started learning Python, it was not popular. [0]: https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/ [1]: https://www.northeastern.edu/graduate/blog/most-popular-programming-languages/ https://www.northeastern.edu/graduate/blog/most-popular-prog... [2]: https://insights.stackoverflow.com/survey/2019 https://insights.stackoverflow.com/survey/2019 Python is old.
- cxr 6y ago> There are no plans for a D3. I say this in all seriousness: this is probably a mistake, and the Dlang crew should make plans to exploit the opportunity to do a D3/3D release to the greatest extent possible—if only for marketing purposes and while holding onto the secret that there are no breaking changes involved.
- attractivechaos 6y agoThe Python 2-to-3 transition worked because Python is too big to fail. D has never reached that momentum. Rust is a more modern language in comparison to D and the trend will continue without D3. Also the drama back to ~2009 was pretty bad and the community got hurt. Three of my colleagues wrote long programs in D but have abandoned the ship.