title: Alternatives to C and asm on microcontrollers
body: <p>My background is like this: embedded/C, then C++, then higher level OO languages (Java, Scala, Ruby, Groovy, etc.), and now I am doing a small project involving MSP430 microcontroller. Meanwhile, inspired by that, I am contemplating a number of potential pet embedded system projects (meshes and/or RTLS look appealing). So my question is focused primarily on MSP430 for now, though, as an aside, I'd love to have a broader picture, too, involving other microcontrollers.</p>
  
  <p>I was a bit surprised finding out that, after so many years, I might need to go back to C, with its macros, naming conventions, and all. My brain used to be wired for C, but that was many, many years ago. </p>
  
  <p>So what alternatives are available?</p>
  
  <ol>
  <li><p>C++ feels much more agreeable to me, and, fortunately, seems doable: <a href="http://stonepile.fi/object-oriented-approach-to-embedded-programming-with-c/" rel="nofollow">http://stonepile.fi/object-oriented-approach-to-embedded-programming-with-c/</a></p>
  
  <p>So if I am to program C++, I just need to inline a lot, avoid virtual functions when possible, and I should be good, right? (at least, memory-wise; they did not benchmark for performance at the above link).</p>
  
  <p>However, if it's so easy, why do people program C? I must be missing something.</p></li>
  <li><p>The above link also seems to provide a wrapper library for pico]OS. Has anyone used picoOS on MSP430, how reliable is it, and how much resources does it take?</p></li>
  <li><p>What are the pros and cons of Energia for a simple MS430 project? I tried it, it seems very intuitive and self-documenting, but does it result in as neat a code under the hood? For instance, does Energia initialize unused GPIO to the off state to save energy? Does it initialize unused interrupts? What is the overhead in terms of memory and speed? Etc.</p>
  
  <p>Edit: As a long-time Eclipse person, I'd love to use CCS. I saw that Energia sketches can be imported to CCS. Does  it mean that CCS have full support for Energia and can be used as an Energia IDE? </p></li>
  <li><p>Has anyone used Java Grinder <a href="http://hackaday.com/2014/02/10/java-grinder-spits-out-dspic-and-msp430-assembly-code/" rel="nofollow">http://hackaday.com/2014/02/10/java-grinder-spits-out-dspic-and-msp430-assembly-code/</a> ? It seems appealing, but because it spits out an Assembly and not C/C++ code, it's a bit scary to commit to it: what if I am locked into it and it's not ready for the prime time? If it generated C code, I could have easily dropped it if it did not work.</p></li>
  <li><p>I mentioned Java and my question was deleted, as it's self-evident that other than grinder-like syntactic sugar (not that I mind syntactic sugar!), Java can't run on MSP430. I guess I'll ask another question re WHERE Java can run. This has already grown too long.</p></li>
  <li><p>What other languages/environments are out there, that fill the niche between low- and hig-level languages?</p></li>
  </ol>