0

As Go seems able to performance match C and with Google obviously biased towards Go, I feel that it would be great way for Go to gain more traction.

The way ChromiumOS/Chrome has jumped from an Ubuntu base to a Gentoo base, while they have the ability to avoid both and create exactly what they need from scratch, leads me to believe it could be something in the works.

Time would of course be a factor, as would the lack of existing libraries as compared to C and Linux, but done in parallel whilst the current Linux based machines gain traction would mitigate any time to market issues for them.

I'm a rank amateur when it comes to low-level programming though, are there any technical limitations in the language to prevent this from happening?

4
  • 4
    You don't just write an entire operating system from scratch just to use a language you're biased towards. (I was gonna say "you don't write an entire operating system from scratch, period" but this is Google we're talking about.) That's a bit like researching electromagnetics from scratch because it irks you that your favorite dish takes an odd number of minutes with the default settings of your microwave. What significant advantages would you expect?
    – user7043
    Sep 24, 2013 at 11:51
  • I hope none of our favorite dishes are prepared in microwaves, makes the bacon go soggy ;) I would agree they shouldn't/wouldn't do it for a language bias, but more for control, to have only what they need for a web-centric thin client that seems to be the ChromeBook/Box model. If they wanted to get far enough away from what Linux offers, I could see it happening.
    – ljs.dev
    Sep 24, 2013 at 12:04
  • 1
    @delnan - so we're stuck with the current operating systems forever?
    – JeffO
    Sep 24, 2013 at 12:37
  • 2
    @JeffO Where did I get even close to implying anything like that? I'm simply saying, creating an OS from scratch and taking it to a point where it's useful for end users, is a huge effort even for the big players of the industry, so you need tons of resources to throw at it as well as very good reasons for this huge investment.
    – user7043
    Sep 24, 2013 at 13:09

1 Answer 1

6

Could it? Almost, though not quite. There are still a few things very deep in the boot process where pretty much nothing but assembly language will do (the problem isn't so much speed as having ultra-low-level access). Go doesn't have any implementations that integrate cleanly with assembly, so you'd have to write those parts in a language that integrates with both assembly and Go. But you could use Go for the rest of the system.

Still, just because it could be done, should it? Probably not. Sometimes there are compelling reasons for ground-up rewrites, but doing it just to use a different language is generally not a good idea. You lose a robust and well-tested code base, and if you're just trying to port the code straight across, you don't gain anything in the exchange. If you're trying to go idiomatic, or do things that the new language makes easier, then you're generally better off designing something completely new.

5
  • 1
    What would be more useful would be the ability to write Android apps in Go. I'm not particularly concerned about what language the underlying OS is written in. Sep 24, 2013 at 17:39
  • ISTR that Go does support a foreign function interface, so you can call code written in C. This should permit enough low-level access do just about anything (except maybe the initial bootstrap).
    – TMN
    Sep 24, 2013 at 20:42
  • You could do it that way, yes. If you apply that to what I said, C would be the "language that integrates with both assembly and Go." Sep 24, 2013 at 20:44
  • thanks @TheSpooniest, if I understand it then, the missing piece from Go to eliminate C completely is the ability to directly interface with assembly, which does not seem to be done by any alternative OS's these days? They all seem to do what TMN suggests and bootstrap from C. So perhaps we will see a top-down replacement of parts of the OS done in Go, until it gets to a point that the only part left in C are those low level interfaces, that would need a convincing reason to do in Go. It could allow everything to be run through the gc compiler though, which perhaps the Go creators would want
    – ljs.dev
    Sep 25, 2013 at 1:00
  • Actally, Go supports assembly just fine. golang.org/doc/asm The real answer is "What's the benefit for rewriting 15 million lines of Linux, and loosing contributions from thousands of developers all over the world?" Dec 24, 2013 at 15:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.