Can D used for BIG-HUGE projects?

9il ilyayaroshenko at gmail.com
Sat Dec 19 11:44:16 UTC 2020


On Saturday, 19 December 2020 at 10:29:11 UTC, Marlon wrote:
> On Saturday, 19 December 2020 at 10:01:46 UTC, 9il wrote:
>> On Saturday, 19 December 2020 at 09:53:47 UTC, 9il wrote:
>>> On Saturday, 19 December 2020 at 09:13:00 UTC, Godnyx wrote:
>>>> I've find a comment in a post comparing C++ with D and 
>>>> someone said that D can't be used for big projects cause you 
>>>> will face problems with it and the community nobody will 
>>>> help you other than "just don't use const", "we
>>>> haven't developed a concensus yet", "we can't convince 
>>>> Walter",
>>>> etc.
>>>>
>>
>> This is true. You can't count on the community. It is a kind 
>> of luck to get help for really complex issues. I just trying 
>> to do not rely on Phobos and if I am facing with compiler 
>> issue the first thing I am thinking is can I work around it 
>> somehow and without waiting that it would be fixed one day.
>
> It's so embarrassing ... tons of argument against the 
> balkanization of the language, and every MAJOR adopter just 
> build everything from scratch: Weka, Sociomantic ...

I didn't fork the language. I am backing libraries. It is a 
different things.

> We have three different Variant and Algebraic implementation, 
> with different interface, why? Why different interface? Why not 
> trying to play with the others?

There are four implementations I know. Phobos, Vibe.d, Sumtype 
and mir.algebraic from mir-core. I have reviewed the first three 
before I decided it would be faster to write mir.algebraic. 
Nothing personal, just time & money. I am writing code faster 
than explaining to people why this and that should be changed 
that way and not another.

> We have two CPUID implementation, why?

core.cpuid is buggy and has an unmaintainable complex and verbose 
implementation. And API isn't well as it can be. So, we have 
mir-cpuid. Why? because I needed a good cpuid library to finish 
my job.

> I/O? Dozen

Hmm, for example, `io` is @nogc. It is a huge benefit.

> Why core building blocks are duplicated?

For example, Phobos number parsing isn't precise. Phobos lacks 
the Ryu algorithm for number printing. Phobos uses the C library 
for more than half of the printing cases. Phobos big integer 
arithmetic is monstrous and too high level (that means very slow 
in practice) to the real-world tasks I am working on.

> The fear was the balkanization of the language, and we have the 
> balkanization of everything else.

Code means nothing. People are everything. Code reflects people's 
relationships and expertise.

> And 9il and Symmetry were really a whide delusion in having 
> contributed to that: everyone alone! For what? Be free, as iLya 
> wrote one time? To not wait, as wrote here above?

Yes, that is the problem. And don't need to blame people and 
companies that they don't want to spend their time and money 
investing in Phobos. BTW, Symmetry supports works on the 
compiler, DRuntime, and Mir. That is the Dlang Foundation problem 
that people and companies invest in their solutions instead of 
work together under DLF umbrella. Have you thought of why? Do you 
really think, for example, I want to create these libraries? No, 
I wanted to get my job done and go walk with my dog.

The fact is that I did a lot of contributions to Phobos and then 
I created std.experimental.ndslice, which was accepted. Quite 
sad. But I don't want to put my efforts into Phobos anymore. I 
can code because companies pay money, and moving code to Phobos 
means work more, get less, and play in the sandbox I don't want 
and don't need to play. If the sandbox needs me to play in, it 
can change the rules. My experience with current rules was 
negative but informative.

Ilya


More information about the Digitalmars-d mailing list