5 ms·
> However, as you start pushing beyond "scale" Go is designed for, Go was designed at Google to be used internally at Google, so frankly it's hard to imagine c
by mbillie1 7y ago
> However, as you start pushing beyond "scale" Go is designed for,
Go was designed at Google to be used internally at Google, so frankly it's hard to imagine commonly pushing past the "scale" Go was designed for.
- elsurudo 7y agoI assume the GP meant "scale of codebase complexity" – which is orthogonal to whether something is "web scale" (ie. everything Google does).
- creyes 7y agoIsn't the Google codebase infamously a monorepo with billions of loc? That seems like it fits "scale of codebase complexity" as well as "web scale"
- jcranmer 7y agoYes, but much (if not most) of that codebase is in C++.
- munificent 7y agoIt's a monolithic repo, but not a monolithic codebase. It contains many many separate projects, libraries, and applications. There's a lot of code reuse, but it's not like you have to wrap your head around the whole thing.
- jimbokun 7y agoHow do you check out a project like that?
- deleted 7y ago[deleted]
- CaptainJustin 7y agoPeople may also mean different things by scale. For me, scale means more micro-services. For another person it means a bigger monolith.
- erk__ 7y agoWhich is probably the reason Google have made tools like a decorator to transform code with generics to valid go code.
- unionpivo 7y agoI think OP thinks about different scale. It's not scale about number of users or data, it's complexity scale. Last enterprise app i worked on had (provided) something like 10.000 different api calls (and yes mostly because of bad/wrong initial design decisions), and over 50k different possible queries that it could run against database. (my job was to "make database go faster") Just running unit tests took longer than 6hrs (of course most unit test went out and connected to the database, because why not \s). It all could be replaced with dozen or so 10k to 30k lines go projects each, that would be a lot easier to maintain and to scale out.
- whateveracct 7y agoGo is pretty explicitly designed (as in there are quotes from the designers) with a low ceiling because Google doesn't want to trust their engineers to have nuanced programming taste.
- s17n 7y agoThis is why Go is good. If you care about writing beautiful code, Go might not be for you. If you care about getting shit done, it’s a great language.
- whateveracct 7y agoGo is good at getting things done..until it isn't and you bump your head on the ceiling. I know Go and Haskell equally well, and I get just as much shit done in Haskell and don't have to be a copy-paste machine sometimes. There are many benefits of Haskell and like-minded languages besides being "beautiful." Feels like if the Go designers had the sense to include parametric polymorphism and sums (aka proven features from the 70's whose main "downside" is being weird to Go's target audience), it would be a great middleground.
- klodolph 7y agoEh, in practice I haven’t missed explicit (closed) sum times as much as I thought I would. I started using Haskell many years ago (20-ish?) and have written some medium-size apps with it, and I’m very comfortable with using "switch x := y.(type)" in Go where I would use an ordinary "case y of" in Haskell. The only thing missing here is a compile-time check for completeness. Missing polymorphism is a valid complaint but it hasn’t had the impact I thought it would. Meanwhile, some of the programs I had written in Haskell I’ve rewritten in Go, e.g. due to problems with the use of finalizers (causing crashes!) in Haskell. You can chalk this up to poor library design but it simply isn’t a problem in Golang, which seems to avoid the finalizers more than other languages. I’m going to continue using both Go and Haskell, I’m happy with both.
- 7y ago
- bt848 7y agoGo was designed for Google-scale and Google-style logs analysis, for which it has been very successful. The fact that it comes with a decent HTTP and RPC server is the inevitable consequence of the fact that every process at that company is expected to present HTTP and RPC control and diagnostic services in addition to its primary purpose.
- coldtea 7y ago>Go was designed at Google to be used internally at Google That's not true, expect in a pedantic way. Google was "designed at Google to be used internally at Google" only in that: (a) a few people at Google, on their own, designed a language (mostly based on an older Plan 9 language some had helped built) - not at the request of Google execs, nor as an explicit company-mandated project to create a language to solve Google's problems. It was almost on of these "20% spare time" things. (b) these people added the features that they thought, as far as they were concerned that would be nice for programming Google style stuff. Those were based on their ad-hoc (and quite idiosyncratic) intuition and personal experience, and not some special research into programming at scale, or from involving the company at large at it. Go was designed at Google, but not "from Google", if this makes sense. E.g. a few googler's building a language on their own initiative and among other work is not the same as Google, i.e. some higher-ups, saying "we need a language of our own that's a match for our developers' challenges" and the company devoting resources for this. Google has 2 language projects they really put money on, Javascript as V8 and Dart. They built a top notch specialist team, spent lots of money for promotion and branding, built an IDE and developer tools for both, etc. Apple has had Obj-C and now Swift like that, MS has C#, etc. Those are language projects with a big weight of the companies behind them. Golang was not like that, but, according to all official accounts and recollections, a grassroots project, by a small team: "Robert Griesemer, Rob Pike and Ken Thompson started sketching the goals for a new language on the white board on September 21, 2007. Within a few days the goals had settled into a plan to do something and a fair idea of what it would be. Design continued part-time in parallel with unrelated work. By January 2008, Ken had started work on a compiler with which to explore ideas; it generated C code as its output. By mid-year the language had become a full-time project and had settled enough to attempt a production compiler. In May 2008, Ian Taylor independently started on a GCC front end for Go using the draft specification. Russ Cox joined in late 2008 and helped move the language and libraries from prototype to reality." It was never officially intended to be "Google's development language" or had a major push from Google. Since then, and after the first few years, Google seems to have devoted more money and time to Go, and several Google internal projects have adopted it, but Google is fine with C++, Java, and Python as well.
- skybrian 7y ago
- staticassertion 7y agoIt's not that hard to imagine. Dropbox has talked about using Rust over Go for storage because cpu/memory efficiency was considerably better (4x if I recall) in Rust.