One of the features of The Machine is that it will have many special purpose CPU cores instead of a few general purpose cores like modern computers.
This provides a challenge for software developers, to make efficient software for such an architecture.
And a base for such solution exists! It is Ada programming language.
First there are some myths about Ada:
- Ada is too old. In reality it applies only to the first version of Ada, Ada83 (83th year). Since 95 year Ada supports object oriented programming and all features of a modern programming languages. And the latest version of Ada is 2012 (quite a modern).
- Ada is for big projects only. In reality despite of the fact that Ada was developed for big projects and has a good support for development of such projects, nothing prevents using Ada in smaller projects. Moreover features designed for very big projects are indeed useful for moderately complex projects.
The reason why I propose Ada for The Machine development is that Ada has well developed concept of tasks. A task is basically a thread of control running on a single CPU core.
It is possible to add a new pragma for tasks (and task types) which would control on which of the several kinds of cores this task should run.
That simple? No. There is a difficulty: Tasks for different kinds of cores may use the same library units. This requires to compile some library units more than once (for every core type which are they used for).
But in most other programming languages (including C and C++) there is no concept of task. This would force to recompile the entire program for each core kind used. This would be very bad. It is one of the reasons I propose to use Ada. Well, even in such dumb languages as C it is possible to analyze the code and decide which parts of the code should be compiled for which core. But I suspect, it would require complex code analysis.
Finally, my recommendation for Hewlett Packard company: Acquire AdaCore company and stress on using Ada for development. That will profit you in a long run.