Inferno: A small operating system for building crossplatform distributed systems
vitanuova.com
vitanuova.com
I don't know if you've noticed, I try to be careful to include enough context in my comments to disambiguate multiple candidate meanings, and "Go" is not specific enough.
https://en.m.wikipedia.org/wiki/Go_(programming_language)
I don't see people saying Dlang, Clang, Javalang, C++Lang, Rustlang, Swiftlang,....
"D" is #1033, and https://en.wikipedia.org/wiki/D_(programming_language) begins, "D, also known as Dlang, is a multi-paradigm system programming language created by Walter Bright at Digital Mars and released in 2001." I commonly see people resorting to elocutions like "Digital Mars D" or "D, the programming language" to clarify.
As you surely remember, when C was 13 years old (like Golang is now), it was common for people to write things like "The 'C' programming language" too. (Though not, of course, in Bell Labs or CSRG.) Most programmers only started calling it "C" without any additional qualification after it became the one and only language in which all serious software was written, something that will never happen to Golang.
Also, Golang is the second programming language to be called "Go", though the other one was much less popular.
Also, "go" is the wrong part of speech, so it induces parsing errors. This is a problem with the game too.
So, objectively, saying "Go" is 0.7–2.7 orders of magnitude more likely to cause confusion than your other examples. It's unfortunate, but that's the way it is. I'm just glad they didn't try to name the programming language "Of". Or "The¿", or just ",".
Pulling back a bit, why do you think it's good to "correct" the word usage of strangers on the internet who haven't asked for your advice? If you see a road sign that says "NO THRU TRAFFIC" do you get out your paintbrush to correct it to say "THROUGH"?
And, from the other perspective, you're recommending that I defer to your expertise on English prose style. Why would someone do that? Have you written something that is regarded as an exemplar of English prose style? I have a lot of respect for your technical expertise from your HN comments, but I don't have you mentally tagged as a Brian-Kernighan-caliber writer, much less an Ursula-K.-Le-Guin-caliber writer. Change my mind!
Otherwise, just be glad I don't call it "Issue9".
I would be more interested in the back-story behind this. Why did the creators of Unix think this would be a good way to take on the Java juggernaut? They had a language, Limbo, a lot like Go with a bytecode interpreter a lot like JVM. What was it for?
Inferno programmer's notebook by Caerwyn Jones: lots of experiments with detailed descriptions and code. The entire blog is really thoughtful actually: https://web.archive.org/web/20200519122543/http://ipn.caerwy...
The author also provided Acme-SAC, stripping Inferno to a barebones VM that only runs the Acme editor and the shell: https://github.com/caerwynj/acme-sac
The other blog is Pete Elmore's Debu.gs. Using Inferno for real work, etc. A really well written blog, too: http://debu.gs/tags/inferno
Also worth noting are mjl's repos, he wrote a lot of code to improve Inferno for real-life usage. Possibly all of them are linked in this extensive list: https://github.com/henesy/awesome-inferno
I personally really liked Inferno's shell.
https://www.amazon.com/Principles-Operating-Systems-Applicat...
(It's also pretty easily available online if you cannot afford or find the hard copy.)
"Oberon, Plan 9 and Inferno"
https://blog.tsr-podcast.com/index.php/2021/05/13/episode-76...
Sadly, life happens and I'm still in the process of giving form to my idea with my half-baked emulator[0] :-)
> IDEA, 56 bit DES, 40, 128 and 256 bit RC4 encryption algorithms MD4, MD5 and SHA secure hash algorithms
Seems ambitious but quite antiquated already. The site reminds me of TempleOS for some reason.
Unless you mean the island.
I was amazed by what a great idea this is until I got here. You have to use a special snowflake programming language.
This is the same thing that turns me off from Google's Flutter. You have to use Dart, a language not used anywhere else.
It's not that these languages are bad. They may be fine, even great. It's the cognitive load of learning yet another language. For it to make sense this language would have to be quite a bit more productive or otherwise better than Go, Rust, C++, JS/TS, Python, Java, etc. Otherwise just let people use languages they know. It's not that hard. We now have WASM which can be targeted by all of those either directly or indirectly.
Weird side note: Renee French did both the Plan 9 and Go mascot designs as well.
And to the further above, there are other languages and compilers supported on Plan 9/Inferno. Like Go.
Source: Penn's radio show where Rob and Renee were each guests at different times.
When I try searching for "golang" and "limbo X" (where X = history, or comparison, or..., or...) it looks like the popularity of golang swamps any pages that might compare Go and Limbo.
There are other metrics to consider besides your notions of cognitive load and productivity. Inferno predates most of the languages on your list. My computer (https://github.com/akkartik/mu) uses custom languages because I was able to design them to minimize total LoC, and to ensure the dependency graph has no cycles (unlike all of the conventional software stack, at least until https://www.gnu.org/software/mes connects up all the dots).
Concurrent programming languages are quite a bit more expressive and therefore productive for distributed systems than the languages you listed. Go, Rust, C++ JS, Python, Java etc. are all imperative languages with sequential semantics. Writing concurrent programs in these languages is much harder than using a specialized language. There's a reason Erlang and BEAM is preferred by many to write distributed systems as opposed to C++.
Languages designed with asynchronous, distributed, parallel semantics from the ground up allow a higher degree of expressivity when it comes to distributed systems. Obviously you can write anything you want in imperative languages, but the semantics really work against you to the point where concurrent programming is generally considered "hard" by users of these languages. It really don't have to be that hard, or at least not any harder than sequential programming.
I would say if you only know the languages listed, then learning a concurrent languages would expand your mind rather than burden it.
The point is that this and similar operating systems have sufficiently different (and better) security models that extend to the virtual machine level, which makes creating a new languages that are compatible with them necessary. Other languages could be (re)written to compile to the bytecode, or at least live in emulated environments within the safe zones.
Our current operating systems, virtual machines and languages are laughably insecure, whereas these advanced systems can give the programmer and user more control over and guarantees about the behavior of these systems.
If we keep using the current models, we'll have to keep using and building domain specific languages, container protocols, browser sandboxes, mini-vm's, all kinds of incompatible and stacked interfaces, whereas well designed systems recursively nest sandboxes gracefully.
Resource (e.g. cpu time, memory space) and access security have been utterly neglected in currently popular languages, which will haunt us again and again until we finally learn better. Newer systems like WebAssembly are starting to begin to consider at least the latter, where a program can be isolated in a sandbox with a well defined and airtight interface.
https://medium.com/agoric/pola-would-have-prevented-the-even...