Problem: The world of programming is increasingly multi-platform, multi-paradigm, multi-this, and multi-that. The environments do not reflect this reality.
Solution: I am still appreciating the scope of the problem.
So last night, I went the the Home Brew Robotics Club to listen to three presentations:
* Some CMU students presenting their Master’s project of getting a CMUCam working by putting a Lua interpreter on it, building a custom Eclipse plug-in, and getting rudimentary interactivity over a serial line. The CMUCam has many nifty features and programming characteristics, and some horrid serial line command protocol. This was a rough attempt at providing reasonable access to the nifty features.
* A hobbyist got up to show the tricks he had done with the Propeller chip. He played with it for some time until he learned to hack just the right instructions into the middle of included servo control software. He managed to track all the minutia of the quadrature encoder signals, measured and desired motor speed, voltages, corrections, etc. The magic four line code hack included a deft understanding of the architecure, built-in SPIN high level language, and the on chip assembly code. This then integrated with free ossiliscope simulation softare.
* A third hobbyist showed off the Propeller chip, with its various form factors, interface options, cool architecture points, and the like. Coding could be done on the free-of-cost, proprietary Windows only IDE and compiler. A little hacking of various types let various interfaces work.
All of these showed how hard it is to make a good, general environment. The chips are all messy constructs with levels of architecture details and layers of languages. Each language has a different IDE, loading system, and required support. The IDEs don’t usually understand the limits of the chip. There are minimal standards. There is no closed loop between the three pillars of mathematical analysis, simulation against a model, and working with a physical reality. Moving code onto and off the device is always a custom, tricky thing. And, finally, there is no thought as to how to capture progress and testing.
Outside of robotics, one is still making systems to sweet-talk graphics cards, special authentication hardware, bridge languages, operating systems, and cooperating program stacks. It’s a mess. It’s a puzzle.