DIP 1025--Dynamic Arrays Only Shrink, Never Grow--Community Review Round 1

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Tue Nov 12 11:22:56 UTC 2019


On Tuesday, 12 November 2019 at 10:25:40 UTC, Robert Schadek 
wrote:
> Hm, when I think of go I think of docker/kubernetes.
> For me that is systems programming.
> I see your point, but I think there are other ways to look at 
> it.
> You can actually get Microcontrollers that run python not c.

Yep, that is true.

> I think saying, and I'm not saying you say that, systems 
> programming therefore
> mmm is at least a "Hasty Generalization".

Yes.

I think the long term future even for embedded programming is 
high level languages that allows you to "bind" datastructures to 
low level representations where you need them (but otherwise 
leave it to the compiler).

So yes, how to do systems programming will hopefully evolve over 
time.

But for me there ought to be a separation between high level and 
low level constructs. In C++ all high level types are library 
only, that means the compiler can only do low level optimization. 
D has some room to innovate there, so I certainly am sympathetic 
to the idea that high level features should not be undermined. 
Maybe the question ought to be, can the high level features be 
strenghtened in a way that allows the compiler to be smarter and 
that allows the compiler to "understand" where low level 
assumptions are being made and where it has free hands to be 
smart. So rather than downgrading high level construct, upgrade 
them from runtime-constructs to compiler-constructs.

It is quite intriguing though that something as simple as slices 
can be so complex to figure out. I've written some variations of 
slices for C++ before they added it, and there are so many trade 
offs... Maybe one has to classifiy all the different use 
scenarios for slice-like types and then figure out some solution 
that allows the compiler to be more clever than in other 
languages.



More information about the Digitalmars-d mailing list