November 16, 2021

On Tuesday, 2 November 2021 at 17:27:25 UTC, Dr Machine Code wrote:

>

But I'd like to know you all opinions

In my opinion, the reason is, that D never had a stable version and never will have. (It's not enough to call something stable: when it changes every 2 or 3 months it is not stable.)

April 27, 2022

On Tuesday, 2 November 2021 at 18:01:37 UTC, Ola Fosheim Grøstad wrote:

>

On Tuesday, 2 November 2021 at 17:27:25 UTC, Dr Machine Code wrote:

>

It got asked on reddit sub but for those that aren't active too, I'd like you opinions. Please don't get me wrong, I also love D, I've used it everywhere I can and I'd say it's my favourite language (yes I have one...) but I'm as as the reddit's OP, trying to understand why it's unpopular.

I don't think it is reasonable to say it is unpopular, Github activity shows that people create new projects with it at roughly the same rate as Nim, Crystal and other smaller languages.

What would be interesting to know is what made people who were very enthusiastic about D in the past (in the forums) switch to another language? Which language was it and why was that a better fit for them?

The reasons I left D was:
o The language is inconsistent and lacks a clear vision.
o Too much BS features but lacking cutting edge syntactic sugar and features such as async/await (state machine, not the fiber joke), nullable types and forced nullability...
o Meta programming is hard to understand and even harder to debug
o Lack of tutorials and frameworks.
o Not so OOP language as I wanted
o Too many features but not every of them was finished and sometimes I didn't get the concept behind it.
o Developers of the language was focused on their vision and totally ignored others. Also I don't know why they didn't take the inspiration from other modern languages.

I had a feeling of an old conservative guy in his sixties every time I have worked in D. I've switched to C# and I'm using it for more than 7 years

April 27, 2022

On Wednesday, 27 April 2022 at 15:59:43 UTC, Satoshi wrote:

>

o The language is inconsistent and lacks a clear vision.

By inconsistent, do you mean the syntax?

>

o Not so OOP language as I wanted

I am a bit surprised by this as D has the classic OOP mechanisms. What OOP features are you missing?

>

I had a feeling of an old conservative guy in his sixties every time I have worked in D. I've switched to C# and I'm using it for more than 7 years

The type system is a bit weak, like C, so I get what you are saying, but then I wonder what C# features you appreciate the most?

April 27, 2022

On Tuesday, 2 November 2021 at 18:01:37 UTC, Ola Fosheim Grøstad wrote:

>

On Tuesday, 2 November 2021 at 17:27:25 UTC, Dr Machine Code wrote:

>

It got asked on reddit sub but for those that aren't active too, I'd like you opinions. Please don't get me wrong, I also love D, I've used it everywhere I can and I'd say it's my favourite language (yes I have one...) but I'm as as the reddit's OP, trying to understand why it's unpopular.

I don't think it is reasonable to say it is unpopular, Github activity shows that people create new projects with it at roughly the same rate as Nim, Crystal and other smaller languages.

What would be interesting to know is what made people who were very enthusiastic about D in the past (in the forums) switch to another language? Which language was it and why was that a better fit for them?

While I haven't been active in D community for something like five years already, it wasn't because I switched to another PL, but mostly due to some disturbances in personal life that made me shift my spare time activities from programming to anything from politics to gardening and woodworking, while still trying to advocate for D or at least write all my single-use tools in it (I learned that woodworkers call such stuff jigs and I sort of like it) at work. I've recently returned to tinkering with electronics and programming at home so let me share my view.

From my not-so-extensive professional experience, large companies usually try to stick to well-established technologies, for two reasons - one is to make a product fast by reusing as much as possible from existing software, and this is mostly written in C and C++ in the area of compilers/drivers/system-level services (at least in Linux world) or Python and C/C++-based proprietary GPU languages in ML, but I'm sure in other businesses there have also been some default language choices. The other one is to sell the product fast by not making it too weird to their customers. Many SW engineers still think of D as a curiosity, and for their managers and salespeople it's surely more exotic than space travel.

So it's mostly about a killer app that makes a language an obvious choice for thing X that one wants to work with, and I think it's been mentioned a thousand times in this forum. You just need to be ready and jump in as first or one of the first into an emerging business to be successful in this race. And it's not only about programming languages, but about any technology or even non-technology related idea too. Python became the default language for ML, because it was easy enough for people whose main focus wasn't programming, and who didn't require system level performance because available bindings to C libraries were good enough. Guido didn't anticipate that, but somehow Python was ready to be picked up when a need for such language emerged. NVidia made a lot of money on ML and cryptocurrency mining not because they entered this market when it was already mature, but because they'd already had a mature technology (originally designed for something completely unrelated, where they didn't have much competition either) someone picked up for their job that was yet to become a big business. ARM CPUs were mostly used in various embedded systems most people don't even realize have a computer inside, until someone picked them up for smartphones - a product everyone on the planet desired in their pocket - and they're still The Default Architecture for most mobile gadgets.

It seems to me that popularity or commercial success do not exactly follow the rules of good engineering process. In my previous job we frequently joked about the upper management that they seemed to drive the company in an upside-down manner, sort of - hey guys, let's make this or that solution, and when you're done, we'll try to look for a problem that it solves. Yet experimenting with stuff that has no immediate application is the core of actual research, and when you try to look for a solution to a long-existing problem, people usually have accustomed themselves to deal with it with half-baked but then available means, and it's extremely hard to change their habits.

What D tried to do was to be "better C++" or "better C", but in 2022 it's about 40 years too late to be successful in that. There're millions of programs in C and C++ that have been good enough to make revenue for many companies and thus convinced others to invest more money, effort and time in more stuff that depends on C and C++.

D has low chance of becoming popular in systems programming or game programming or web programming or mobile programming or machine learning, mostly because there had already been large markets using other technologies in these areas long before D tried to enter them with enthusiasts lacking huge financial backing. It's far easier to be a pioneer in something new than to outrun the tycoons.

Anyway, D is still my favourite language and the default language I choose when coding something from scratch. It does have rough edges, but it's most often less PITA than any other language I've worked with, mostly because it's really flexible in terms of style - it lets me solve common problems with just a bunch of chained range calls, it lets me write clever meta stuff when I don't want to repeat myself, it lets me get down to dirty imperative fors and ifs and pointer hacks when I'm too lazy to find nicer solutions. Just the right balance between typing and thinking. I sometimes miss the rich ecosystem that Python has, where you can find one-liners for many higher level tasks, but quite often they're limited to some basic set of use cases and they're not one-liners anymore when you need them to do something beyond those. I recall I had some good experience with C# in terms of how quickly I was able to reuse existing libraries and implement any new code, especially with pretty convenient tooling from MS, but that was long time ago when it wasn't seriously usable outside Windows and I didn't have much interest in developing for Windows later.
What I've missed the most so far in D was a zero-effort reuse of C libraries, because there's a lot of useful libs in C I already know. Of course it's much less tedious to interface C in D than in Python, but I bet if D had a fully-blown ImportC from the very beginning, it could be where C++ is today.

April 28, 2022

On Wednesday, 27 April 2022 at 22:43:25 UTC, Adrian Matoga wrote:

>

of like it) at work. I've recently returned to tinkering with electronics and programming at home so let me share my view.

Do you use or plan to use microcontrollers? If so, with what language?

>

technology or even non-technology related idea too. Python became the default language for ML, because it was easy enough for people whose main focus wasn't programming, and who didn't require system level performance because available bindings to C libraries were good enough.

Yes, but I think this also has something to do with Python replacing Matlab in academic research institutions. Python is becoming the default platform for analysis and experimentation.

>

What D tried to do was to be "better C++" or "better C", but in 2022 it's about 40 years too late to be successful in that. There're millions of programs in C and C++ that have been good enough to make revenue for many companies and thus convinced others to invest more money, effort and time in more stuff that depends on C and C++.

Yes, and they are ISO standards, so nobody "owns" C or C++. That creates a more "open" evolution that is industry-oriented (the main purpose of ISO is to make industrial tools and interfaces interoperable).

>

do something beyond those. I recall I had some good experience with C# in terms of how quickly I was able to reuse existing libraries and implement any new code, especially with pretty convenient tooling from MS, but that was long time ago when it wasn't seriously usable outside Windows and I didn't have much interest in developing for Windows later.

What made C# easy to use? Was it auto-completions and suggestions in the IDE, or was it something that has to do with the language itself?

>

What I've missed the most so far in D was a zero-effort reuse of C libraries, because there's a lot of useful libs in C I already know.

Yes, has the new import-C feature been helpful for you in that regard?

>

Of course it's much less tedious to interface C in D than in Python, but I bet if D had a fully-blown ImportC from the very beginning, it could be where C++ is today.

When compared to C++, I'd say that D still needs to get its memory management story right and fix some language short-coming (incomplete features), but memory management is at least being looked at actively now. (People expect something more than malloc/free and roll-your-own ref-counting.)

Thanks for sharing your thoughts, it was an interesting read!

April 28, 2022

On Thursday, 28 April 2022 at 07:54:44 UTC, Ola Fosheim Grøstad wrote:

>

What made C# easy to use? Was it auto-completions and suggestions in the IDE, or was it something that has to do with the language itself?

Several reasons.

It is a simplified language compared to C++. You can easily learn coming from C++ or D. While being more limited than C++ without real meta programming, you rarely need it.

The libraries that come with C#/.Net are great. They are easy to use and they are plenty.

C# has various good IDEs to choose from, Visual Studio being the gold standard.

April 28, 2022

On Thursday, 28 April 2022 at 09:02:09 UTC, IGotD- wrote:

>

It is a simplified language compared to C++. You can easily learn coming from C++ or D. While being more limited than C++ without real meta programming, you rarely need it.

True, metaprogramming is mostly useful for writing flexible libraries, but you can usually do the same things without, but with more lines of library code.

>

The libraries that come with C#/.Net are great. They are easy to use and they are plenty.

C# has various good IDEs to choose from, Visual Studio being the gold standard.

So it is all about the eco system and no advantages tied to the language itself (except avoiding memory pointers and such)?

April 28, 2022

On Thursday, 28 April 2022 at 09:12:07 UTC, Ola Fosheim Grøstad wrote:

>

So it is all about the eco system and no advantages tied to the language itself (except avoiding memory pointers and such)?

If C# would be too ugly and inefficient, few would use it. Visual Basic also supports .Net to some extent but is rarely used compared to C# so language do matter.

However, eco system is of course one of the major reasons of the success of C#. This was also accelerated as C#/.Net now supports all major operating systems Like Windows, Linux, iOS etc. This means that C# will be the default language for many systems in the future and will eat up C++ market share significantly.

One funny side note is that C# is garbage collected using tracing GC as default just like D but there nobody complains about it. The designers were smart though and totally removed raw pointers (there are raw pointers but you need to step outside the safe box) so C# can improve the GC while keeping language intact.

April 28, 2022

On Thursday, 28 April 2022 at 09:27:54 UTC, IGotD- wrote:

>

If C# would be too ugly and inefficient, few would use it. Visual Basic also supports .Net to some extent but is rarely used compared to C# so language do matter.

Right, but C# started out as a Java clone (basically) and I wonder if some of the language features they added over time are "significant" for why people rate C# favourably. I see more people complaining about Java than C# in online discussions. Why is that?

>

etc. This means that C# will be the default language for many systems in the future and will eat up C++ market share significantly.

Maybe. But, both Google and Microsoft tried to distance themselves from C++ for a while, yet they are fully backing it now.

You also have things like Intel ISPC that tries to make parallell programming easy, and I think that one is sending signals of where performance programming is heading.

The future of "low level programming" is difficult to predict, but maybe the nature of "low level programming" is changing? I.e. less about pointers and instructions and more about utilizing the hardware?

April 28, 2022

On Thursday, 28 April 2022 at 09:39:57 UTC, Ola Fosheim Grøstad wrote:

>

On Thursday, 28 April 2022 at 09:27:54 UTC, IGotD- wrote:

>

If C# would be too ugly and inefficient, few would use it. Visual Basic also supports .Net to some extent but is rarely used compared to C# so language do matter.

Right, but C# started out as a Java clone (basically) and I wonder if some of the language features they added over time are "significant" for why people rate C# favourably. I see more people complaining about Java than C# in online discussions. Why is that?

I'll say how I feel about it after having used both languages extensively. For a long time, Java has been a very basic language in some respect, which forces a lot of boilerplate code and convoluted solutions onto the user. This flaw is really on a language level, not an ecosystem level. C# took Java and evolved it much faster with a lot of quality of life features. Generics are a bit more powerful. Properties have nicer syntax. Delegates, lambdas, structs, pattern matching etc. make it feel more refined and more expressive. At the same time, the whole thing isn't too complex (yet?).