> I can run Javascript on an Arduino does that make it a systems level programming language?
Johnny-Five? It isn't running on the Arduino.
A systems programming language is one that is possible to write the whole stack all the way from the boot loader, with a very tiny help from Assembly in the process, like bootloader, interrupt handling, DMA.
The day I am able to write a JavaScript AOT and JIT, in JavaScript, maybe.
As for volatile semantics, many system programming languages in the early days didn't had them as well.
PIC, well. How would you make PIC banks work in a standards compliant ANSI C compiler without language extensions?
With Assembly of course, so can Go.
Also nothing prevents a Go compiler to provide extensions just like what many think of C features for systems programming are actually not part of ANSI C.
Go already has "pragmas" in the form of //go:...... And nothing prevents a Go compliant compiler to provide more.
The code for Xerox Star, ETHZ Oberon, ETHZ EthOs, ETHZ AOS are available for anyone that cares to read them and how it is possible to write a full stack workstation.
Or better yet, getting the 2013 edition of Project Oberon book and building the whole computer, including the motherboard.
Even if you're being half-facetious...while CoffeeScript seems to have fallen in favor with the onset of ES6, it's hard to overstate its influence in 2011...Rails, which was most definitely the hott framework du jour, decided to make CoffeeScript -- along with the much more ubiquitous jQuery and SASS -- part of its default stack: http://www.rubyinside.com/rails-3-1-adopts-coffeescript-jque...
It may be because in the past 5 years from today most of these languages have seized development. It is still interesting to see which of the "New Hotness" languages of 2011 are still around and strong. Like Clojure and Go
Rust seems to be going very good things. Are there tools for translating C++ to Rust? Maybe the translation of an old game engine could be used to bootstrap a Rust game engine?
I find Shen lang interesting, but never actually tried it.
Can anyone explain few things?
1. Why explicitly call `prolog?` function? Why not make it implicit, so user could use, for example, `member` function (defined via `defprolog` notation) as a normal function?
2. Automatic partial application. I see that example was simplified, but then how it looks in reality? Because I find (* 2) returning `lambda`, instead of 2 confusing.
However, until I can manually control memory it's not going to be a low level language I want to use.