Hi Pablo,

Yes, that sounds like a reasonable differentiation for students. Of course,
it is more complex than that, but it's a good first principles introduction.

Cheers,
Chris


On Tue, Sep 4, 2018, 16:57 Pablo Rozas Larraondo <
p.rozas.larrao...@gmail.com> wrote:

> 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.
>

-- 
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