I think the Spin effort is largely to make sure the P2 instruction set will efficiently support HLLs.
I think it is Chip's plan to build a Spin2 virtual machine and a compiler that generates byte codes for that VM. While that will certainly exercise the instruction set, I'm not sure it is a good test of what is needed to implement high level languages many of which will likely compile to native code. However, Eric's fastspin might be a good test.
Indeed. It's why I also pointed out the need to get C/C++ support going. The Spin focus is mostly because it's what Chip knows best.
But, to allay @BrianFairchild
's concerns, maybe there's another way we can approach this without having to actually get languages fully implemented right now. It seems that most of these discussions center around higher-level abstractions that are common in various programming paradigms. We are obviously not worried about simple if/while/for imperative concepts. Instead, we are discussing concepts like function pointers, encapsulation, etc. Even datatyping (e.g. did we have an easy means to deal with 8-bit and 16-bit data, not just 32-bit data?). Given that, is it possible to define a list of the most common higher-level concepts that we think would cover the needs of the most-likely supported programming languages? For example:
* Data types:
- 8-bit, 16-bit, 32-bit, 64-bit(?) numeric values (signed, unsigned, extending, truncating, etc.)
- DateTime (is this just another numeric value, or does it have different semantics?)
- Character (including multi-byte)
* Function pointers
* Ternary operators (just kidding, Heater!)
IMPORTANT NOTE: I am not suggesting that the P2 must have single-instruction support for all of these things. I'm just suggesting that the P2 should be reasonably capable of supporting these concepts without going through contortions. For many/most of those items listed above, that's already the case. Just ignore those items and focus on the ones that we aren't so sure about.