I basically did that with an older project - used Python for higher level customizations and to allow run time loadable modules. This made it very easy to handle customer requests for, example, the data to go different places.

The lower levels were in VB (GUI) and C++, and for our custom board (which has hard real time requirements) C (for the DSP) and Verilog (for the FPGA).

Overall, the idea has worked extremely well, and allowed the system to handle new requirements pretty well.

It gets even more interesting for embedded systems. I think there is a lot of room for improved developer productivity in embedded systems (including factory automation). But limited resources and real time requirements make it much more difficult than for a PC.

One possiblity is the combination of a compact dynamic language (such as Lua) with a compiled language such as C. Since gcc is widely available, two other compiled alternatives are Java and Objective-C (much more interesting to me).

An example is the [link|http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF52234&nodeId=0162468rH3YTLC00M98090|Freescale MCF52234 Microcontroller] which is basically a complete network engine on a chip - 60MHz CPU, 32K SRAM, 256K flash, Ethernet MAC and PHY (first for a 32-bit chip) for something like $15. But there's no expansion bus, all of your code has to fit in 256K (the only expansion possibilities are serial, which would be exteremely slow).

--Tony