Iterators and Ranges: Comparing C++ to D to Rust

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Wed Jun 16 10:49:58 UTC 2021


On Wednesday, 16 June 2021 at 10:20:05 UTC, Dukc wrote:
> That would explain it if the programs were as slow as before, 
> but Petar also complained about programs that are even slower. 
> There has to me more.
>
> It could be survivourmanship bias. Perhaps we just don't 
> remember the slower programs from the old days.

Yes, maybe. There might be other factors too:

1. Business people are more present as leaders now (whereas it 
used to be engineers advancing to leadership positions). As a 
result engineering quality is not appreciated to the same level. 
My opinion. You see this with Apple products too, the surface 
stuff is being focused on in their presentations. Fancy surface, 
boring interior.

2. People have become used to using web applications, so they 
have become used to latency (lag) when interacting with a system. 
Thus, the end users may not think about why an application is 
sluggish (as they don't understand the difference between slow 
code and network lag). So users expect less? This is especially 
true when you go to the 90s where Amiga users were predominantly 
geeks, and thus more demanding.

3. Programmers have become less proficient and fail to think of 
how the code they write  maps down through layers of libraries 
all the way down to CPU/GPU. Of course, more layers also makes 
this more difficult. I think many programmers now have the 
framework they use as their mental model, and not really the 
actual computer hardware.


> I think that computers (and internet connections) differ in 
> power more than they used to. The alternative explanation might 
> be that developers with powerful computers don't notice as 
> easily how slow stuff they are making.

Yep, developers should use the low end computers the application 
targets for executing their code.


> Then again, it also might be more competition as industry gets 
> bigger => tighter deadlines and less slack => software getting 
> done worse and worse.

But more competition should lead to better quality... The problem 
with this (also for other sectors) is that for capitalism to work 
well for engineered products the consumer has to be knowledgable, 
demanding and be willing to shop around. But human beings tend to 
go with the flow (fashion, marketing, social peers) when they are 
making choices on things they have limited knowledge and interest 
in. Audio software is still pretty good, for instance. I assume 
this is because consumers in that market have a fairly good 
understanding of what to expect.


> Not everything. You're certainly familiar with the D principle 
> for being BOTH a systems programming and application 
> programming language. It follows that the standard library 
> should cater for both cases, so large parts of the standard 
> library should be handy for systems programming but not 
> everything, because that would drive application programmers 
> away.
>
> And Phobos is on the right track. There are shortcomings, but 
> nothing is fundamentally wrong from systems programming 
> perspective. D ranges are totally usable at system level. I've 
> used them myself when compiling to WebAssembly, where the D 
> ecosystem is (currently) just as primitive as on some 
> microcontroller.


I understand where you are coming from,  and I agree that D/C++ 
ranges can be used for system level programming (at least as a 
starting point).

I still think everything in the standard lib should be useful for 
system level programming, so you don't have to reconsider your 
options because of standard lib deficiencies half way through.

What is needed in addition to that is a standardized application 
level library built on top of the standard library. This could 
ship with the compiler and be defined in terms of APIs (so 
different compilers can optimize the implementation for their 
backend).

Or maybe even an application framework (with keyboard, mouse, 
graphics apis).

I think it is better with a more layered eco-system of 
standardized library APIs than one big monolithic standard 
library.



More information about the Digitalmars-d mailing list