6 ms·
Programming in D: Tutorial and Reference
- jpecar 2y agoIs D runtime still crashing when host has more than 128 cpu cores? I learned this the hard way ...
- deleted 2y ago[deleted]
- alphaglosined 2y agoAre you talking about "Issue 24254 - LDC crash on Epyc Bergamo"? That was fixed within the week, with a notification given that it had been sent to the reporter.
- Daunk 2y agoI feel like D is such an underrated language.
- WalterBright 2y agoWe're not good at marketing! But we're very good at language ergonomics.
- jadbox 2y agoJust to add, I learned D in a day and finished most of project euler without needing to look up the manual. D is more "python" than python in that it makes coding very. IMHO, Zig is the closest thing to being D-esk (like with comptime), but it's still not a mainstream option yet.
- jadbox 2y ago* makes coding very straight forward. Most of the time I find what I needed in the language just using intuition.
- kingbob000 2y agoLove D! I used it a bit in college when it was required for a programming language class. It's hard to justify using it nowadays though.
- bsdooby 2y agoUtah Valley University? Or Romania, or Turkey? And why is D's usage hard to justify (because of Rust and/or contemporary C++)?
- acehreli 2y agoMike Shah has been using D for teaching software engineering at Northeastern University and Yale. Here is his DLang playlist: https://www.youtube.com/playlist?list=PLvv0ScY6vfd9Fso-3cB4CGnSlW0E4btJV https://www.youtube.com/playlist?list=PLvv0ScY6vfd9Fso-3cB4C...
- bsdooby 2y agoOne of the best language reference manuals out there...
- bsdooby 2y ago...could need an update, though.
- acehreli 2y agoAuthor here... AMA.
- bsdooby 2y agoPlanning on an update? Some new features made it into the language (I think).
- usrbinenv 2y agoI recently read almost the whole book in a week or so. It's excellent and I feel like I can write in D pretty well after reading it. Too bad that I most likely won't be writing in D, but, at least, I'm confident I can come back to it anytime and be up to speed if I ever need to. This book should be the goto for anyone who wishes to quickly learn the language.
- bachmeier 2y agoBeen a heavy user of the language since 2013. This book was very helpful at the time. I don't think it was a book at that time, though, more a lengthy collection of notes as I recall.
- acehreli 2y agoExactly. It really was a happy accident. I talked about it here: https://dlang.org/blog/2016/06/29/programming-in-d-a-happy-accident/ https://dlang.org/blog/2016/06/29/programming-in-d-a-happy-a...
- WalterBright 2y agoCurrently I'm working on adding an AArch64 code generator to the venerable dmd D compiler. It's fun as it's completely differernt from the X86_64. In some ways very clever and in some ways completely wacky.
- nerdralph 2y agoI tried D several years ago, and liked the language. I didn't stick with it because of the lack of libraries compared to perl, python, C++, etc.
- croemer 2y agoAnything compiled with LDC2 >=1.29 (3y old) will immediately crash/segfault on macOS >=15.4 A fix is on master/beta but will still take some time to be released. https://github.com/dlang/dmd/issues/21126 https://github.com/dlang/dmd/issues/21126
- shoozza 2y agoSlightly off topic: Is D a good language for creating tiny windows or Linux executables? There is an upcoming game jam (4mb jam 2025) which gives extra points for game submissions <= 8KB. With c you can fit a window with graphics update in an executable of less than 900 bytes[0]. Granted it's using crinkler for linking which does some compression. 0: https://gist.github.com/ske2004/336d8cce8cd9db59d61ceb13c1ed500a https://gist.github.com/ske2004/336d8cce8cd9db59d61ceb13c1ed...
- monkeyelite 2y agoYes. Just use the “better C” mode
- mariusor 2y ago... which is not D any more though.
- WhereIsTheTruth 2y agoIt's like saying "C is no longer C if you don't link with libc", it just is not true at all, and honestly, a pretty stupid thing to say
- mariusor 2y agoInstead of being an ass, maybe you can take the time to educate me why you think I'm wrong? I think that at least the garbage collection not being available qualifies my statement as somewhat being true. For game development, as it's closer to what grand-parent asked, classes not being usable would also be an issue...
- monkeyelite 2y agoWhat essential features are missing for you?
- mariusor 2y ago
- zascrash 2y agoD deserves more recognition. It's a cool language under the radar for too long. I wish a major corporation backed it. I had a great time learning D. Also I admire Walter Bright If I could achieve even a fraction of his productivity, that would be awesome.
- creata 2y agoSincere question, not meant to be a shallow dismissal: Where is D a better choice than C++? In what aspects is it enough of an improvement over C++ to justify using a niche language?
- acehreli 2y agoD is technically better than C++ in most features. (It has always lead C++. For example, among about 100 new feauters that C++11 brought, only 2 were not already in D. No C++ designer will ever admit this fact.) D is safer and more productive. It's a joy to write in D because most of the time it feels like whatever you think, you code. This is unlike C++ where you fight the language all the time. C++ is not a productive programming language. I say this with experience: I coded in C++ as an "expert" for many many years, including these last couple of years. It's not fun to write in C++, which translates to another kind of loss of productivity. C++ is a burden and liability for companies but no CTO will be blamed for chosing it because it's popular. I can list so many popular things and persons that worth nothing but I will refrain from getting political. Yes, on paper, there are way more C++ programmers out there than D programmers. But I interview these C++ programmers occasionally. Most of them don't even have an inkling that they don't know C++ at all. How about engineering with C++? That is such a difficult task. I went over header file hygiene with a colleague a couple of months ago. The number of points that you should pay attention to is mind boggling: Don't #include unnecessarily, do forward declare as much as possible (but what can be forward declared is hard to understand even for experienced programmers), #include your own API header first to prove that it's complete (and good luck!), don't forget header guards, don't reuse header guards, etc. etc. This is just efficient header file usage! We haven't started coding yet! My friends, the emperor doesn't have clothes. C++ simply is not a tool that is designed well. People who choose it do so because they have to or they are masochists. (True story: I asked a relatively young Google meetup presenter once why he was using C++ instead of a modern language and he said "because it is hard".) C++ separates the elite from the masses; I used to strive to be a C++ elite; I am not interested a bit anymore; I want to write useful programs with D; and I do. D is niche only because humans are populists. We are not encouraged to use tools (or products) that are designed better. We follow popular leaders. It takes one some time to find his or her own voice to reject bad products and use only good ones. I am extremely lucky to work for a company that allows me to use D to write useful products. I still take the same joy from programming that I did when I first learned it. Then there is the human aspect of it: I want to be associated with real people isntead of snobby elites. (Remember how C++ was marketed at around 2000? "Yes, C++ is hard but it was never meant to be for normal programmers anyway." Ha ha ha! I am old enough now to reject that mentality. Bad design is bad design my friends; you can't defend it by blaming the user for not being elite.) I can go on and on... Now it's my turn to ask: Why would anyone choose C++ for their projects despite the production costs that it brings? None of your programmers really know it; they introduce hidden liabilities in the projects, their source code become non-refactorable monsters. Why waste that money on C++ when you can produce products easily. Products that just work...
- usrbinenv 2y agoI constantly feel like inferior languages are picked up, while superior languages are discarded. It's almost as if the universe had a law: "inferior technology is always preferred no matter how hard you seethe". Examples: * Python preferred over Ruby * TypeScript preferred over Dart or even JavaScript (which is fine and, as a bonus, doesn't require compilation step like TS) * Go is preferred over Crystal and D. While Python, TypeScript and Go are quite alright, there is no doubt in my mind that their alternatives are absolutely superior as languages. Yes, in case of Dart, Crystal and D the ecosystem doesn't have the abundance of well-tested libraries, but as languages they are simply better. The Go argument that it's popular because it's simpler is absurd in the sense that no one really forces you to write complex code and use classes or other advanced OOP features in D.
- esafak 2y agohttps://en.wikipedia.org/wiki/Worse_is_better https://en.wikipedia.org/wiki/Worse_is_better
- old-gregg 2y agoLanguages do not matter as much as you think. Ecosystems are everything. Twice in my life I started companies (the first one took all my life savings) and in both cases the right call was what you called an "inferior language". I actually liked D very much, and WB had been a personal hero of mine when I was in college. But I am not betting my career on an ecosystem built around by a single brilliant guy. For high-stakes projects, a wise decision is building on a platform with several deep-pocketed backers. And for toy/personal projects... do you even need a language anymore? Just ask your favorite LLM to generate you an executable which does what you want (partially joking here).
- WalterBright 2y agoD's ImportC feature makes it super easy to access C libraries from D code. That means D fits right in with a C ecosystem, as it's no longer necessary to attempt to translate the .h files into D. It's not perfect, as some people cannot resist using the C preprocessor for some bizarre constructions. I used to write those bizarre things myself in C, and was proud of my work. But one day I decided to remove them all, and the code was better.
- Defletter 2y agoReally wanted to like Dlang but I just did not have a good time with it. One of my projects has a really simple server written in nodejs that's basically (in terms of complexity) just an auth'd chatroom, and I wanted to switch it from using raw tcp sockets to websockets. And since the server is so simple, why not refactor it to another language and see if there's no some performance gains from that? I ended up doing something pretty similar to that "Comparing 10 programming languages. I built the same app in all of them." video from Tom Delalande (https://www.youtube.com/watch?v=-MbTj8DGOP0 https://www.youtube.com/watch?v=-MbTj8DGOP0). I had several working versions of the server in: - Bun, using Bun APIs (https://bun.sh/docs/api/websockets https://bun.sh/docs/api/websockets) - Dart, using Dart APIs (https://api.dart.dev/stable/latest/dart-io/WebSocket-class.html https://api.dart.dev/stable/latest/dart-io/WebSocket-class.h...) - Java, using Java-WebSocket (https://github.com/TooTallNate/Java-WebSocket https://github.com/TooTallNate/Java-WebSocket) - Kotlin, using Ktor (https://start.ktor.io/p/ktor-websockets https://start.ktor.io/p/ktor-websockets) - Rust, using tokio-tungstenite (https://docs.rs/tokio-tungstenite/latest/tokio_tungstenite/index.html https://docs.rs/tokio-tungstenite/latest/tokio_tungstenite/i...) - Zig, using websocket.zig (https://zigistry.dev/packages/karlseguin/websocket.zig/ https://zigistry.dev/packages/karlseguin/websocket.zig/) - D, using serverino (https://code.dlang.org/packages/serverino https://code.dlang.org/packages/serverino) And Dlang was, by far, the worst experience out of the lot. Firstly is the lack of adequate, comprehensive, and centralised tooling. I almost gave up when dmd could not even compile a freshly init'd project. The impression I got is that you're not really meant to use dmd directly, you're meant to use dub, like how you compile Java projects with Maven/Gradle, not javac. Except that there's also apparently three competing compilers (https://wiki.dlang.org/Compilers https://wiki.dlang.org/Compilers)? And good luck remembering the names of the tooling because they're all some random three-letter combination. Serverino makes heavy use of mixins and attributes (think Java annotations), which is not ideal. But what really killed the deal was (despite using the recommended intellij plugin (https://wiki.dlang.org/IDEs https://wiki.dlang.org/IDEs) with the recommended tools installed and setup) not being able to inspect[1] serverino's mixin or its attributes. So I look at serverino's source code, except its source also has mixins... which I can't inspect. I'm not going to use something when I cannot easily ascertain its control flow. And while, yes, I probably should have gone with vibe-d (https://code.dlang.org/packages/vibe-d%3Ahttp https://code.dlang.org/packages/vibe-d%3Ahttp) in the first place, mixins and attributes are nonetheless part of the language and the tooling should be able to tell me about them. - [1] When I say "inspect" I mean requesting the IDE to show me the source/definition so I can see what it is, what it does, and where it's known to be used.
- pmags 2y agoIt's been about 10 years since I last dipped my toes in the D waters. At the time (v 2.067) I stumbled across some surprisingly bad warts in the standard library that prevented me from using it for my intended purposes which writing software tools for bioinformatics. As other posters have noted, language elegance is secondary to the ecosystem when you want to get things done. For anyone who has been using D for an extended period, has the D ecosystem improved / expanded considerably in the last 5-10 years?
- Alifatisk 2y agoThe Youtube channel Tsoding did a great overview of the D language, overall, he liked it!