<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: acehreli</title><link>https://news.ycombinator.com/user?id=acehreli</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 12:10:12 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=acehreli" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by acehreli in "Programming in D: Tutorial and Reference"]]></title><description><![CDATA[
<p>D 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.)<p>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.<p>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.<p>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.<p>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!<p>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.<p>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.<p>I still take the same joy from programming that I did when I first learned it.<p>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.)<p>I can go on and on...<p>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...</p>
]]></description><pubDate>Sat, 26 Apr 2025 02:52:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=43800484</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=43800484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43800484</guid></item><item><title><![CDATA[New comment by acehreli in "Programming in D: Tutorial and Reference"]]></title><description><![CDATA[
<p>Exactly. It really was a happy accident. I talked about it here: <a href="https://dlang.org/blog/2016/06/29/programming-in-d-a-happy-accident/" rel="nofollow">https://dlang.org/blog/2016/06/29/programming-in-d-a-happy-a...</a></p>
]]></description><pubDate>Fri, 25 Apr 2025 22:50:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43799222</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=43799222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43799222</guid></item><item><title><![CDATA[New comment by acehreli in "Programming in D: Tutorial and Reference"]]></title><description><![CDATA[
<p>Mike Shah has been using D for teaching software engineering at Northeastern University and Yale. Here is his DLang playlist: <a href="https://www.youtube.com/playlist?list=PLvv0ScY6vfd9Fso-3cB4CGnSlW0E4btJV" rel="nofollow">https://www.youtube.com/playlist?list=PLvv0ScY6vfd9Fso-3cB4C...</a></p>
]]></description><pubDate>Fri, 25 Apr 2025 22:40:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=43799152</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=43799152</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43799152</guid></item><item><title><![CDATA[New comment by acehreli in "Programming in D: Tutorial and Reference"]]></title><description><![CDATA[
<p>All I need is another wave of motivation. I'm searching. :)</p>
]]></description><pubDate>Fri, 25 Apr 2025 22:33:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=43799107</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=43799107</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43799107</guid></item><item><title><![CDATA[New comment by acehreli in "Programming in D: Tutorial and Reference"]]></title><description><![CDATA[
<p>Author here... AMA.</p>
]]></description><pubDate>Fri, 25 Apr 2025 22:28:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=43799072</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=43799072</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43799072</guid></item><item><title><![CDATA[New comment by acehreli in "Checked C"]]></title><description><![CDATA[
<p>Because Google saves us all.</p>
]]></description><pubDate>Fri, 23 Dec 2022 05:05:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=34102507</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=34102507</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34102507</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>It may not be a step function improvement but the difference is still night and day: Dreading one more line of C++ versus looking forward to many fun lines of D.<p>I mean... Modules versus header files, 13 times faster compilation, introspection, unittest, etc. etc. etc. Okay, it's more like death by a thousand cuts but once you produce with D, you can't even touch C++ anymore. I am in that state...</p>
]]></description><pubDate>Wed, 12 Oct 2022 23:53:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=33185372</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33185372</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33185372</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>That historically backwards: C++ has been catching up to D since C++11.</p>
]]></description><pubDate>Wed, 12 Oct 2022 02:20:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=33171974</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33171974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33171974</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>I see what you mean but array of bytes is something else in D: byte[].</p>
]]></description><pubDate>Wed, 12 Oct 2022 01:19:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=33171529</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33171529</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33171529</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>D's string is not text by itself because it is an array of UTF-8 code units. However, we have this infamous feature called auto-decoding in the standard library that presents strings as unicode code points.<p>On the other hand, D's dstrings are more like text because they are not only UTF-32 but also random-accessible code points. (D does not address multiple representations of graphemes at language level. For example, at language level, ğ is different from "g and combining breve" but there are std.uni and std.utf modules that help.)</p>
]]></description><pubDate>Tue, 11 Oct 2022 23:54:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=33170840</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33170840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33170840</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>> unit tests printed some weird error<p>I am not aware of a common issue like that but D has bugs.<p>> Also importC isn't what you think it is<p>That's contrary to my tests: I installed libplot on my system, 'import'ed its .h file to my D source code, called C functions from D, linked with -L-lplot and it worked.<p>> not importing foreign C libs you've installed on your system<p>Maybe you mean something else with "importing" but I installed a foreign C library on my system and it just worked without any hand-written D bindings for it.</p>
]]></description><pubDate>Tue, 11 Oct 2022 23:45:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=33170762</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33170762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33170762</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>No. We had a very long discussion about safe-by-default on the forums but failed to reach a consensus.<p>As I understand it, for safe-by-default to work, either all C libraries would have @trusted D bindings written, or all of them would have to be assumed to be @trusted. Most of the community wanted explicit @trusted annotations, Walter and others favored assuming them to be @trusted (or was it assumed @safe?) was the way to go. So, no safe-by-default at this time. :/</p>
]]></description><pubDate>Tue, 11 Oct 2022 21:53:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=33169712</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33169712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33169712</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>> memory usage and binary size<p>Don't forget the -betterC compiler switch please. ;)</p>
]]></description><pubDate>Tue, 11 Oct 2022 21:02:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=33169212</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33169212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33169212</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>I heard Discord may have negative posts as well but I find the official D newsgroups (with a forum interface) very friendly and clean. Minimal moderation seems to help there.</p>
]]></description><pubDate>Tue, 11 Oct 2022 20:58:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=33169165</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33169165</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33169165</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>> how is D different<p>I don't know Zig yet.<p>I had an opinion long time ago that nobody should use C anymore; I would suggest C++ at least because it has constructors and templates. D's [Better C](<a href="https://dlang.org/spec/betterc.html" rel="nofollow">https://dlang.org/spec/betterc.html</a>) would be my go-to at this time.<p>C++ is getting better but it's still very difficult to get right: It depends mainly on programmer attention e.g. to follow 400+ [guidelines](<a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines" rel="nofollow">https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines</a>).<p>Rust is "different" but it has the borrow checker as a safety tool. D's [live functions](<a href="https://dlang.org/spec/ob.html" rel="nofollow">https://dlang.org/spec/ob.html</a>) and other [memory safety](<a href="https://dlang.org/blog/2022/10/08/dip1000-memory-safety-in-a-modern-systems-programming-language-part-2/" rel="nofollow">https://dlang.org/blog/2022/10/08/dip1000-memory-safety-in-a...</a>) features are closing the gap there.<p>> major selling point<p>I am copying slide 59 here: D provides competitive advantage by helping happy programmers produce correct programs pragmatically.<p>Slide 8 lists what D does <i>not</i> have, which can explain why D has not gained popularity that it deserves. For example, nobody can sell D as "Google's language" or "Apple's language".</p>
]]></description><pubDate>Tue, 11 Oct 2022 19:33:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=33168147</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33168147</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33168147</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>It is definitely chewing on it. :)<p>D's advantage over Rust is its familiar syntax and semantics. C, C++, Java, C#, Python, etc. programmers feel at home once they learn some differences. I heard others say "D is what C++ should have been" and "Compiled Python".<p>I did use Rust for a brief period in a project where the experienced Rust programmer among us was throwing '&' characters here and there to make the code compile, seemingly randomly in many cases. Personally, I remember fighting with impedance issues with the many different string types of Rust. All of this spells a steeper learning curve to me.<p>I think D is familiar to programmers of many other languages.</p>
]]></description><pubDate>Tue, 11 Oct 2022 19:18:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=33167913</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33167913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33167913</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>AMA I am the speaker.</p>
]]></description><pubDate>Tue, 11 Oct 2022 18:42:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=33167358</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33167358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33167358</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p><a href="http://ddili.org/ders/d.en/index.html" rel="nofollow">http://ddili.org/ders/d.en/index.html</a></p>
]]></description><pubDate>Tue, 11 Oct 2022 17:59:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=33166624</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33166624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33166624</guid></item><item><title><![CDATA[New comment by acehreli in "Introduction to Dlang [video]"]]></title><description><![CDATA[
<p>Wonderful to see you here as well! :)</p>
]]></description><pubDate>Tue, 11 Oct 2022 17:58:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=33166608</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=33166608</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33166608</guid></item><item><title><![CDATA[New comment by acehreli in "Memory Safety in a Modern System Programming Language Pt. 1"]]></title><description><![CDATA[
<p>D is not popular but has a strong long-time following.</p>
]]></description><pubDate>Thu, 23 Jun 2022 20:43:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=31854901</link><dc:creator>acehreli</dc:creator><comments>https://news.ycombinator.com/item?id=31854901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31854901</guid></item></channel></rss>