4 ms·
I think the mistake may be assuming that Go is meant to be a general-purpose language. From what I can tell, it's purpose-built to be a "web services" language,
by _bxg1 7y ago
I think the mistake may be assuming that Go is meant to be a general-purpose language. From what I can tell, it's purpose-built to be a "web services" language, and its design-decisions center around that. What does that mean?
- It's expected to be run on Linux servers (not Windows) and developer workstations (probably not Windows).
- It needs to be fast but not blisteringly fast. Micro-performance concerns like the Time object thing are devalued.
- Embedded use-cases are probably not given too much attention.
- Agility in working with dynamic data (because that data is often foreign) is valued over flawlessly safe types.
By deciding not to worry about certain use-cases, the language can be more developer-efficient for its intended use-cases. In this light, for better or worse, I think the decisions made make a lot more sense.
- zug_zug 7y agoExcept docker is written in go. Guess they never got the memo to not use go for non-webservices...
- lwb 7y agoDocker’s primary use case is also web services.
- g_delgado14 7y agoUbuntu is used (mostly?) for web services. Is Ubuntu suitable to be written in Go?
- eudoxus 7y agoUmm..what? Ubuntus primary use case was not web services, it was a user-friendly PC OS compared to the Linux variants at the time. It's picked up a lot in the server space because of the familiarity of it, with respect to package management et all.
- _bxg1 7y agoFair, although it has very similar constraints/goals to those listed above
- jjnoakes 7y agoIf the language was meant to be run on unix machines for web services, it shouldn't support anything else in a half-done manner with silent errors and corruption. The situation as it is now is just poor language and/or library design - choosing to support different operating systems with an API that requires the wrong thing to happen in some cases.
- _bxg1 7y agoIf you workstation does happen to be Windows, support-with-edge-cases may be plenty good enough for you to get your work done and if you run into a problem on your dev machine, it's much less of a big deal