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.