Great timing. I just showed my kids some of the things you can do with this on the Circuit Playground Bluefruit[1] earlier today. It comes with a lot of sensors and is full of possibilities.
For getting started fast I can't recommend MakeCode[2] enough. It's a web IDE with a compiler and device simulator for programming microcontrollers with blocks or JavaScript/Python.
That said, for more complex projects CircuitPython might be a better choice. There are tons of docs and lots of great examples. It re-runs your code every time you save so you get instant feedback. Also, the vscode-circuitpython[3] plugin has been really nice too.
As a JS dev I tend to have node installed anyhow so I just use a shell alias to wrap ‘node -pe’ these days. It’s not really for shell scripts but it’s great for quick every day usage. Plus you can use JS if needed instead of their DSL.
I felt the same until I finally broke down and did it.
Basically, if you want to use ES6 (or ES7) features and are targeting an environment that might not have native support (browsers) or inconsistent support (browsers, io.js, node.js) then you will inevitebly need or want a build step at some point. You could probably get by with some on-the-fly transpiling for a little bit but I would avoid that as a long-term solution except for maybe in tests.
I highly recommend setting up a build step in any project for BabelJS to ES5, TypeScript to ES5, or my favorite, TypeScript to ES6 to BabelJS to ES5.
Not only will you get awesome language features, you will also get some really great tooling in VS Code or Atom.
Also, it's worth noting that all of these language features are pretty much all optional so you can ease into them.
How do you integrate this into a webpack build? Run the typescript plugin first, then the babel plugin? Is there issues using es7 babel stage 0 features like async/await and decorators if you do this? Thanks :-)
Not really.
It has Scheme before Common Lisp which is fine but where is McCarthy's Lisp which was an ancestor of both of them? And Algol is not one language but several: Algol-60, Algol-68, Algol-W, ...
And where is Turbo Pascal?
There is so much mainstream stuff missing that it's hard to see any point in it; except perhaps an exercise in interactive grapics in which case the content is a kind of lorem ipsum.
I think explicit languages can make things more clear however disagree with the notion that implicit behaviors are necessarily a bad thing.
I've found that the hybrid approach in the MongoDB aggregation framework works really well.
It optimizes things around the first $match to create an optimized initial read (the selectivity of your initial stages is really important). Once you're past the initial read the rest of the pipeline is fully imperative.
This makes things really nice when debugging complex aggregation pipelines. For example, you can simply omit the rest of your pipeline at any point to debug (with a $limit), see what you're dealing with, fix them, and move on to the next one.
For getting started fast I can't recommend MakeCode[2] enough. It's a web IDE with a compiler and device simulator for programming microcontrollers with blocks or JavaScript/Python.
That said, for more complex projects CircuitPython might be a better choice. There are tons of docs and lots of great examples. It re-runs your code every time you save so you get instant feedback. Also, the vscode-circuitpython[3] plugin has been really nice too.
[1]: https://www.adafruit.com/product/4333
[2]: https://maker.makecode.com
[3]: https://marketplace.visualstudio.com/items?itemName=joedeviv...