3 ms·
I agree, programming languages have not caught up yet. The right kind of language looks at serial program formulations and based on flow-analysis automatically
by jonathanstrange 9y ago
I agree, programming languages have not caught up yet.
The right kind of language looks at serial program formulations and based on flow-analysis automatically identifies parallelizable fragments that are large enough to benefit from multicore, then schedules these fragments e.g. by using work-stealing in a system of green threads, i.e., mapping green threads to OS cores as efficiently as possible. Something like that.
In a good parallel language there need to be many immutable constructs by default, exception handling is tricky, and ordinary flow control needs to be compatible by default with parallel evaluation. The languages I've seen such as Parasail are not yet production ready.
Making the programmer control parallelism can be okay, like in Go and Ada, but in the end it should be automatic.
Edit: The problem is also that finding a neat way of solving the problem academically does not readily translate into an efficient implementation, so much that I wonder whether green threads are actually worth it over OS threads. In most languages/VMs they aren't but Go seems to be an exception.