- Nimrod looks very interesting for me -
- language features
- the elegance of the language
- performance aspects (I read the benchmark article)
- C target could be practical
- potentially support for embedded systems
In the field of web application development I'm using Java. Additionally I use the language go for more network related problem and for linux based embedded systems (ARM Cortex A8 / A9 / A15). But the go language is not useful in bare metal programming. This is normally a domain of C programming. But don't like C. I used oberon-7 for bare metal programming and it works fine but this language has a very small community. I have also checked rust, which looks interesting but also very complex.
I'm now thinking if Nimrod could replace the programming language C in the field of embedded system development ?Typical target plattform are ARM Cortex M3, Cortex M4, Cortex A8 systems. The embedded development should be possible without an os.
I think that a new generation of embedded systems (internet of things) needs a new language. I also think that the market for open hardware (mbed, beaglebone, raspberrypi, arduino, ...) and embedded systems will also grow in the future.
I'm interested to know if embedded systems + internet technology could be a suitable application area for Nimrod ?
best regards
Andreas
Hello,
please note that the term "low level programming" is not very clear and may sound negative -- most modern languages try to be high level. Recently there was a question somewhere about a "low level replacement" for Python, and it was also not fully clear what was the desire of the author, see
I have discovered Nimrod myself a few weeks ago for the first time, so I guess the developers can answer your question much better than I, but they are busy...
For me Ninrod is currently one of the most interesting languages, together with Rust (I do not like all the curly braces very much), Haskell (too difficult for me?, not very fast and not so useful for me) and maybe Julia for the area of numerical computing like matlab, but not system programming.
For NICE bare metal programming, as you said (i.e.) device drivers, some features seems still missing: The BITSETS known from some of the wirthian languages are not yet good supported, as I discovered some days ago. There is a datatype Set already, but we can not cast an Integer to a Bitset to do nice bit operations. So we have currently to use shifting and masking operations as in C. But I guess the developers will fix this. And, currently Nimrod compiles to C as intermediate language, so fastest bit operations may not be possible at all, because all the operations are filtered through C statements. Currently I have to access some C bitfields for my GTK3 wrapper -- some shifting and masking is necessary -- with Oberon it would be a little bit more fun. A funny fact is, that unsigned integers are only full supported when a special module is imported -- I had not read that in the tutorial or manual, so I was surprised that I could define unsigned integers, but even simple shifting was disabled without importing that module. But Wirth also does not like unsigned integers very much, there are reasons for that.
My current feeling: Nimrod can be a fine all purpose programming language, from high level like Ruby/Haskell down to the area of microcontrollers and device drivers where C is currently used. But of course the same was true for Oberon, but it never made it out of ETH. (The current FPGA project is interesting, but I can not see much applications...). Not all people may like the pascal like syntax -- the "object of" and "t of TYPE" is a bit hard, compared to Rubys "class A < B" or "if t.is_a? T " or "t.kind_of?". Ruby is really very elegant -- but may be a bit slow, and for larger projects I tend to prefer static types and all the sanity checks the compiler can do. For me personally the biggest problem with Nimrod may be access to C++ libraries like Boost or CGAL -- I needed it (Constrained Delaunay triangulation, RTree, Fibonacci Queue) managed accessing these from Ruby with some work, with GC support. Would be new work for Nimrod unfortunately.
Best regards,
Stefan Salewski
The BITSETS known from some of the wirthian languages are not yet good supported, as I discovered some days ago. There is a datatype Set already, but we can not cast an Integer to a Bitset to do nice bit operations. So we have currently to use shifting and masking operations as in C. But I guess the developers will fix this. And, currently Nimrod compiles to C as intermediate language, so fastest bit operations may not be possible at all, because all the operations are filtered through C statements. Currently I have to access some C bitfields for my GTK3 wrapper -- some shifting and masking is necessary -- with Oberon it would be a little bit more fun.
Er, what?!