After several years using Python as my favourite scripting language I have developed a great appreciation for its conciseness and clarity. This experience though is so different and dissonant with my daily work in embedded control, where I use almost exclusively C nowadays.
Using Python in embedded control is tempting and I did play quite a bit with this concept, starting from the Pymite project, but I had eventually to surrender. I reached the conclusion that “dynamic typing” as in the Python interpretation of the term, is truly a luxury we cannot afford yet in embedded control. So is the interpreted nature of the language and any attempt to constraint it to fit in a (ahead of time) compiled image does completely disrupt the very nature of the language (see Micro Python).
The arrival of Swift showed me that it was possible to design a modern language with many of the Python characteristics that I love and at the same time think about performance and keep your feet firmly on the ground. But even Swift does not go low enough for my taste and it comes with the whole Apple “baggage” which makes it a very un-likely candidate for my kind of targets.
With help from the excellent site: “Learn X in Y minutes” (a true treasure trove) I had a chance to savour a couple dozen more languages in less than a week and find perhaps what I was looking for or the closest approximation: Nimrod.
Nimrod feels strangely familiar to me, perhaps because some of its structure is somewhat reminiscent of good old Pascal/Modula with clearly outlined Var and Type sections before a “PROC” (get that?) not a function, a procedure!!!
But the syntax is clean and void of semicolons and curly brackets or other strange symbol combinations so many other language (designers) seem to enjoy so much. Nimrod compiles to C language(!) and from there it is possible to cross compile to any target using any decent C compiler.
I am curious to see how far I can push Nimrod down to my favorite targets (PIC24/PIC32) and, why not, 8-bit microcontrollers too… Stay tuned!