New arduino language

IMHO (or not so humble :wink: )

There will never be a language for all needs - not even on the Arduino. SO, each to its own, or perhaps limited to a few categories. Further, the ATmel chip can only do the same instructions, so it is a red herring to discuss what the language can/can not do, it is just a matter of more or less tedious programming. (In theory I could write an Atmel emulator in BASIC....)

I do not have children in the toy age anymore, so I do not own a Lego MindStorm kit, where I am told the controller can do some nifty things and the programming interface is limited (graphic) but easy enough for anybody. Yes, I've seen YouTube videos of long and complex programs (f.ex a HUGE machine build out of Lego builds a small Lego model) So I am sorry if I am speaking a bit without having all the facts, but I'd say that is one example of a possible "simple" language.

IanTindale mentioned it briefly earlier on in this thread, the link is to Transterpreter/Plumbing which also is along those lines, but here nicely setup for parallel programming.

Then there is C occuping the middle ground. And C++ for slightly higher up (classes and that). So far I have not had any speed problems with coding in C. And I like the abstraction layer the Arduino core gives me (Fuses, Timers and sundry housekeeping) Hey, there even is interrupt programmng possible! (which is almost assembly language, you have to worry about voletile, possible reentrancy and suchlike)

For the dedicated developer, the most demanding programs, we can go to down to assembly as the AVR groups do. I have not tried that myself, although I used to do assembly language for microprocessors about 3 decades ago. Been there, done that, not again :slight_smile: . At this level all the nitty gritty of the Atmel chips is exposed, too - registers, processor differences, addressing architecture, timing and race conditions.

Irrespective of the language, there is the hardware abstraction. The core library already do a lot of that digitalWrite(), servo.write(), millis(). Usually the abstraction is tied to the language, by way of the API. They tend to / should match in the level of abstraction.

If we "dumb down" the language, what about the electronics? That needs to be dumbed down, too. To paraphrase an earlier argument in this thread - All I see is people not being able to connect up a transistor to drive a motor, clearly we need motors that run directly off the Arduino. I have seen some experimenters kit (f.ex. Tinker Kit) where everything is mounted on boards and has a 3wire connection (cant be plugged in wrong) so power/control is taken care of.

So, I think the question of a new language should perhaps be more along the lines - do we need two or three levels of Arduino : BuildingBlocks, ProgrammableElectronics and BareMetalHardCore and what should they allow/limit/guide/enhance/abstract ... ? ?