Thanks for the answers. I asked this question because I'm preparing some 
tutorials to explain Go to students and I'm thinking about potential 
questions and discussions.

If I understand it correctly we could say then that Go's runtime has things 
in common with a VM's runtime (I'm thinking mostly in Java's) such as GC, 
goroutine (thread) scheduling, etc. However, Go's runtime cannot be 
considered a VM because it does not compile code to an intermediate 
language, it executes compiled native code instead.

Cheers,
Pablo

 

On Wednesday, September 5, 2018 at 3:01:52 AM UTC+10, Jake Montgomery wrote:
>
> There are a lot of differences, and for the answer to be complete, you 
> would need to specify which language you wanted to compare it to. But on a 
> really simple level, thwd's answer is more or less correct. A VM language 
> is usually compiled into an instruction set for that VM. The VM then 
> provides a lot of "special sauce." Go is (usually) compiled directly into 
> machine code to be executed directly on the target system. 
>
> One consequence of this is that the executable can be run without having 
> any other software installed on the machine. It also  means that the code 
> for the stuff you inquired about such as the garbage collector, goroutine 
> scheduling and stack management, is all present in the single executable 
> compiled by go.
>
> As for learning more, it depends somewhat on what your experience level 
> is, and why you want to know. If you are relatively new to programming, I 
> would recommend just using go for a while, without worrying too much about 
> the "magic."  If you have a strong background already, you could start 
> learning about the stuff you mentioned. Garbage collection would be an 
> interesting place to start. I don't know of any one resource, but there are 
> a number of interesting videos (gophercon, ect) by principal architects on 
> the subject. Keep in mind that all these things are constantly evolving, so 
> any information you get may not apply to the latest version of the 
> language. 
>
> Good luck.
>
>
>
> On Tuesday, September 4, 2018 at 10:50:03 AM UTC-4, thwd wrote:
>>
>> A virtual machine has its own instruction set. Go compiles to machine 
>> code for a given target (which could be a virtual machine).
>>
>> On Tuesday, September 4, 2018 at 12:27:49 PM UTC+2, Pablo Rozas Larraondo 
>> wrote:
>>>
>>> The Go documentation provides some explanation about the difference 
>>> between Go’s runtime and a virtual machine here:
>>>
>>> https://golang.org/doc/faq#runtime
>>>
>>> Does anyone can recommend a good place to learn more about this? I’d 
>>> like to better understand how Go’s garbage collector, goroutine scheduling 
>>> and stack management are handled by the runtime and how it is different 
>>> from a virtual machine.
>>>
>>> Thanks,
>>> Pablo
>>>
>>>

-- 
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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to