Also port initialisation is automatic so pinMode is not required - it's a huge potential gotcha for learners, and it seemed wise to remove the need for it. You can still use it if you want to though.
"Note that while we don't attempt to restrict uses of the "duino" suffix, its use causes the Italians on the team to cringe (apparently it sounds terrible); you might want to avoid it. (It's also trademarked by a Hungarian company.)"
I've worked pretty hard to get Espruino running in 8kb (with space for variables) so that it can run on a single cheap IC (without external RAM).
I think they probably serve quite different markets. I figure Tessel are aiming to provide more of an ecosystem? If I'm honest I think they've got a bit of a fight on their hands against Raspberry Pi/Beaglebone with node.js installed, so I'd guess they're going for some kind of added value.
On the other hand, Espruino's aiming more where the Arduino is. Low power, where you want to play with LEDs or automate a project you've made, and you want the instant gratification of using an interpreter.
I agree with you about the name.
This pinout, however, is very different from the Arduino because this thing has a lot more pins than the Arduino has. And the pinout of the normal Arduino is really annoying, because there's a non-standard half-pin width gap between two of the headers on the Arduino.
But prefabricated Arduino shields are really popular and supporting them would be a really good idea.
A lot of microcontroller code has some real time requirements. Even some of the simplest Arduino code out there. Even in beginner projects, it is rather common to do something like software debouncing for pushbuttons or multiplexing for led matrices, both of which require millisecond resolution timing precision. A garbage collector pause in the middle of it would ruin everything. And a noob wouldn't understand why.
To say something positive, I think the Google Blockly visual programming language is a very good idea for something like this, especially if targeted at noobs and/or kids. If you're unfamiliar with it, the picture with the puzzle pieces tells it all. There are puzzle pieces of different shapes for different syntactic structures (you can see expression and statement pieces), and the colors of the pieces are different types (in the picture, green is a boolean, I think).
So it's too early to tell if espruino would fit real time systems.
And regarding wasted cycles: for this project, it doesn't matter much. Unless you make stuff in volume ,micro controllers are cheap.
Responding to IO is handled and timestamped using interrupts, so if you write your code such that you use the timestamp, you can actually do some very accurate timing.
One other good point is (strangely) power usage. As there's an interpreter, it can very easily detect when it isn't doing anything and can go into low power sleep modes - it's something that you can do with another MCU and a lot of effort, but that you get for free with Espruino.
There are things it's good for and things it isn't - but for the majority of projects people do with Arduino I think it really does provide value.
> So it's too early to tell if espruino would fit real time systems.
It's too early to tell but IMO it's a critical aspect of microcontrollers. Many if not most microcontroller applications have some degree of real time requirements, which limits your choices for software runtime systems.
Many data structures don't have cycles. I believe it's pretty true for many embedded systems.
Real-time means that a given system has verifiable (and often guaranteed) run time qualities. Time being the keyword. Saying "System X's slowest operation completes in 500ms" is a definition of a real-time system.
Performance is a system's ability to complete a certain task in a certain amount of time. "System X can toggle an I/O pin in 10ms."
A good analogy is the comparison of a high-end sports car (Porsche 911) and a Big Rig. Unloaded, the sports car can travel 140MPH (fast!), while the Big Rig can travel 75MPH. Fully loaded, the Porsche can carry 800 lbs and travel at 90MPH, while the Big Rig can carry 12,000 lbs and travel at 75MPH. If you system's goal is to move 12,000 lbs of cargo 75 miles, the Big Rig would have higher performance and better real-time qualities (more cargo transferred per hour and a consistent time of 1 hours) while the Porsche would have poorer performance and real-time qualities.
Thirdly, Espruino is written by Gordon Williams and based on the things he learned while developing Tiny-JS.
This post and its parent make a lot of bad assumptions. For one, performance is not the same thing as real-time nor is performance the same thing as fast.
Yes, this is exactly why I mentioned real time and questioned the suitability of garbage collection for this use. Overall performance is a secondary issue, many use cases can work with slightly lower perf but in microcontrollers you want predicatable performance.
To be honest the new board is just to do something a bit different - and to give backers of the KickStarter something fun that they couldn't just go out and buy.
All of those appear to be fully-fledged computers though, and Espruino's not really aiming to compete with them.
Could you please offer more details? what kind of application, what kind of battery and estimated power consumption ?
Of course aggressive power management (ie putting the mcu to sleep) could significantly extend the battery life. According to the datasheet the current consumption at sleep can be as low as 0.5mA, full two orders of magnitude difference. The standby current is in microampere range.
In comparison BBB consumes "210-460mA @5V", which would correspond to 1-3 hours on 2xAA alkalines (assuming ideal voltage converter).
At the moment I've got the KickStarter board down to 4mA when idle (as it can sleep) - when executing code I think it's around 40mA. Hopefully by release time I'll have sorted out a few glitches and got it down to under 1mA idle (in the range zokier noted).
Note that with something like 'setInterval(doStuff, 1000)' the processor will be idle for 99% of the time.
Running off a li-ion battery from an old Nokia phone (700mAh) you could then expect Espruino to run for almost a month. Using the battery out of my Galaxy S3 (2100mAh) it'd run for almost 3 months.
One of the big benefits (apart from running on its own) is that you don't have the latency of USB, so can respond to things far more quickly.