TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Is it a language, or an operating system, or a virtual machine?

25 pointsby tvvocoldalmost 10 years ago

7 comments

acveilleuxalmost 10 years ago
Oh, add a transactional hierarchical DB and you've got yourself a clone of MUMPS.
评论 #9767087 未加载
评论 #9767703 未加载
derefralmost 10 years ago
A complete tangent from the project itself, but it&#x27;s important to get in the mindset of asking the question in the title about <i>every</i> language you meet. It&#x27;s a step on the path to enlightenment.<p>• Ruby: a language; now also a VM. Its language semantics can exist on other VMs and people still consider that &quot;Ruby&quot;; nobody really uses the VM outside of the language. So, we call Ruby a language. However, its language semantics require a lot of the VM (the ability to redefine methods of existing classes, for example), so one could say Ruby has its own Abstract Machine that a lot of VMs just happen to be adequate implementations of already.<p>• Erlang: a language, <i>and</i> a VM (itself called BEAM.) The VM&#x27;s semantics are the important part; the language is just an arbitrary syntax. Other languages on the BEAM VM (or rather, the Erlang Abstract Machine, which the BEAM VM implements) all &quot;taste&quot; very strongly like Erlang, because the flavour of Erlang comes from the VM, not the language. (And then &quot;OTP&quot; is the operating system for that VM. You could write your own, but I&#x27;m not sure anyone has. All the current BEAM VM languages assume they&#x27;re running inside OTP.)<p>• C, C++, Rust: different languages, all for the same Abstract Machine, which has no real name but assumes a &quot;C Runtime&quot; with POSIX-like abstractions is available. You could call it the &quot;C Abstract Machine&quot;: it&#x27;s the effective assumptions of hardware instruction-set that allow one to talk about things like &quot;signed pointer-length integers&quot;. When something hits &quot;undefined behaviour&quot; in one of these languages, it&#x27;s behavior undefined <i>by the C Abstract Machine</i>—likely because different ISAs do different things and it&#x27;s too costly to try to smooth that over. (Note that the POSIX abstractions could be said to be an &quot;abstract operating system&quot; of sorts, one which is implemented by multiple different real C-AM operating systems.)<p>• Smalltalk: its own syntax, its own OS, and its own VM. All three are just known as &quot;Smalltalk&quot; in general, with the name of the implementation prefixed. Simple!<p>• Java, C#: languages that created VMs (the JVM and the CLR) that are now more important than those languages. The JVM has no operating system, just a bunch of libraries. The CLR has an implicit dependency on a lot of Windows to be its operating system; Mono and Wine have a weird relationship because of this.<p>• Lua: a language. The actual VM is irrelevant (there are multiple), though the &quot;Lua abstract machine&quot; has the interesting requirement of being an embeddable sandbox. No operating system; everything inside the VM comes in along with the application.<p>• JavaScript: a language that spawned an abstract machine with three choices of operating system: a very small one (Node), a very large one (the browser runtime), and one in the middle (Macromedia Flash.) Node-Webkit and Electron are examples of a non-embedded instance of the JavaScript abstract machine running the browser OS.
评论 #9769281 未加载
tekknolagialmost 10 years ago
Didn&#x27;t expect to see this on HN :)
WorldWideWaynealmost 10 years ago
I had to look up what it means to be answered with just the word <i>Mu</i>. I&#x27;ve seen it before, but I never really bothered to look it up. The humorous explanation is here - <a href="http:&#x2F;&#x2F;www.urbandictionary.com&#x2F;define.php?term=mu" rel="nofollow">http:&#x2F;&#x2F;www.urbandictionary.com&#x2F;define.php?term=mu</a>
评论 #9766879 未加载
评论 #9767060 未加载
jdeisenbergalmost 10 years ago
Interesting concept, but the examples are extremely difficult to read because the color contrast on the black background is too low.
评论 #9767058 未加载
paxcoderalmost 10 years ago
&gt;Make simple changes to any project in an afternoon, no matter how large it is. How? How do you help me &quot;orient myself&quot;? What do traces have to do with this? And please don&#x27;t say mu.
TerryADavisalmost 10 years ago
I made an x86_64 operating system with a compiler. The compiler compiles a dialect of C&#x2F;C++. It operates both JIT and AOT.