--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
my question may seem odd at first sight. But I think it is a valid one, because VMs meanwhile offer very good performance and portability
The default JVM from Oracle you mean, as there are others written inJava actually and even
Hotspot is planned to get replaced by a Java version post Java 8
(project Graal).
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Because programming a real computer instead of a software pretend computer is more efficient and allows more optimization by targeting (by hand or compiler) the actual features of the machine. It is also, by very loose analogy, more satisfying in the same way that kissing my wife is more interesting than kissing a picture of my wife.
On Tue, May 21, 2013 at 1:08 PM, Michael Jones <m...@google.com> wrote:Because programming a real computer instead of a software pretend computer is more efficient and allows more optimization by targeting (by hand or compiler) the actual features of the machine. It is also, by very loose analogy, more satisfying in the same way that kissing my wife is more interesting than kissing a picture of my wife.Not that I am in favor of VM-based languages in general, but isn't one of the proclaimed benefits of using a VM + JIT is that this allows certain optimizations that are just not possible using a to-native compiler? Things like inlining virtual method calls, removing branching
conditions that are never taken, and having a global view of the program at runtime. Does LLVM help in any of these cases? I am not really a compiler person.
I don't even think the question is naive. It's a very fair question.
Not that I am in favor of VM-based languages in general, but isn't one of the proclaimed benefits of using a VM + JIT is that this allows certain optimizations that are just not possible using a to-native compiler? Things like inlining virtual method calls, removing branching conditions that are never taken, and having a global view of the program at runtime.
A VM with REPL for development time, with compilation to native code when deploying the application.
--
Do you have experience with Smalltalk or the original Lisp environments?
The JVM was not created because it was an awesome way to implement a language.it was chosen specifically because Java was intended to be used as a web language, in which browsers would run untrusted JVM bytecodes. So compiling to bare metal was not feasible. This is why the JVM has all the silly restrictions it does; they are an attempt to make it safer to run untrusted programs.In that context, the JVM is a decent decision to have made. It's absurd that it still gets used for cases where it completely doesn't apply.
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
since vb.net ends with .net and .net is a valid domain suffix, the
google groups server probably tried to make sense of that and pointed
to the host at "vb.net"
> Sheesh, what a dumb question! Coding for a VM requires that the VM be installed on the machine. Simple as that. VM-advocates prate on about "portability" and such, but they're talking crap. How is something "portable" if it needs runtimes? Portability is the ability to put the .exe on a goddamn flash drive, whack it in and hit "run". Anything else is just bullshit.
A naive question maybe, but not an outright "dumb" one (and you wondered why people see you as abrasive).
Singularity,
Netduino
and around .NET 2.0 there was a port for
Symbian.
On Windows Phone 8, .NET is compiled to native code:
But spend some time informing yourself?
Please do consider it. The internet does not filter people who can't maintain a civil tone, a human being has to do it.
This is a great and helpful list otherwise.
Compiling-to-the-metal is a silly new age buzzword for something you obviously do when you want to use your hardware to its maximum potential. But thats not new.
Of course the Hardware matters, not that I am a fan of Intel machine code, which looks ugly. I think somebody from Microsoft once called it "brain damaged", ok that was 80286 but still ... there is pettier stuff.
I really appreciate Thomas Bushnells comment where he gave some context as to why Java(JVM) was originally done:
it was chosen specifically because Java was intended to be used as a web language, in which browsers would run untrusted JVM bytecodes."
Context helps a lot for a deeper understanding. Java(JVM) was created during the dotcom bubble and there is a larger story around that.
Actually Go's interface calls can't be inlined by ahed of time compilation and would indeed be inlineable by a JIT.
Also note that as far as I know there is no technical reason Go can't be implemented on a VM for example for .NET the language specification doesn't enforce
ahead of time compilation or even static compilation. In fact the Go implementation for LLVM that is in active development will most likely be able to run with JIT compilation.
The primary reason that AOT still beats JIT in most cases is that the JIT can only spend so much time on optimization that it's amortized over a single run time, while
AOT can amortize over all runtimes of the produced binary. However there is nothing stopping you from doing a lot mor optimizations when you know your runtime is very long,
for example in a server environment. In fact Mono the open .NET implementation can use the full LLVM optimizations during JIT when using that as VM backend.
So the important thing to take away here is that it's not Go that doesn't use a VM but the reference implementation of Go.
On Wednesday, May 22, 2013 10:38:01 AM UTC+2, Bienlein wrote:I don't even think the question is naive. It's a very fair question.
Thank you, fair enough ;-).Not that I am in favor of VM-based languages in general, but isn't one of the proclaimed benefits of using a VM + JIT is that this allows certain optimizations that are just not possible using a to-native compiler? Things like inlining virtual method calls, removing branching conditions that are never taken, and having a global view of the program at runtime.
Inlining virtual method calls is a good point. Alas, there aren't any in C or Go. So it seems the more dynamic a language the more it can profit from runtime optimization. It is quite remarkable that Dart is doing better in this sudoku test than Lua + JIT. Coming to speak of Lua: Lua exists for almost every platform (as long as some ISO C compiler exists) for it. It doesn't like like this were also the plan for Go. Go is for network programming, server administration, etc, not for embedded stuff.
Removing branching conditions that are never taken is a good point as well. But my knowledge about compiler construction is too limited to estimate whether C or Go would benefit here from runtime optimzations.
By the way a runtime and a vm is not the same thing. For instance Objective-C has a runtime, which does the dynamic message dispatch and includes the GC. It is not a vm, though, as it does not mimic the machine.A VM with REPL for development time, with compilation to native code when deploying the application.
I never really understood the point of those REPLs. What you can do with them is so limited ... Incremental compilation in the eclipse Scala plugin is so slow (even slower than compiling the whole application with the IDEA Scala plugin) that I sometimes use the REPL. If compilation is quick as in Go I see no real reason for it.
-- Bienlein
My worst C compiler experience so far was the aC compiler in HP-UX
10.x back in 2000.