4 ms·
Just to set the context: I like Golang as a language, but I think writing a program that's more than ~10k lines of code in Golang is a mistake (honestly, the li
by tinco 3y ago
Just to set the context: I like Golang as a language, but I think writing a program that's more than ~10k lines of code in Golang is a mistake (honestly, the limit is probably a lot lower), and I also don't think they should've added generics, just leave the language as useful as it is.
Anyway, I think the author missed the point a bit with his friends argument about "Go developers knew that all you need is a for loop". It's not just an "atmosphere " argument. The programming language literally restricts you to using for loops. That's a surface property of Golang (or maybe it used to be, haven't used it in a couple years).
Golang has been designed to have a minimal and thus very smooth surface. Those issues the author mentioned about Python, that's rough surface.
The article then digresses into the main point which is that engineering leaders are afraid of spending innovation tokens without giving evidence that this is more so the case than it was before.
Not sure if it's relevant, but Twitter starting on Ruby was them spending an innovation token. They then realised there was a big large scale low latency high throughput situation that Ruby didn't have a suitable ecosystem for, so they hired a team that had experience scaling these sorts of systems specifically with Scala. Picking Scala was in that sense the safe choice, the risky one would have been to try and get the existing Ruby codebase to apply the concepts from Scala (which is now more than a decade later a reasonable thing to do in Ruby).
- w0m 3y ago> I think writing a program that's more than ~10k lines of code in Golang is a mistake isn't Kubernetes mostly Go? Just sounds like an arbitrary limit. I say that when I try to limit shell scripts to a single-scroll in editor.
- pjmlp 3y agoYes, because a couple of Go folks joined the team doing the prototype in Java, and drove the rewrite into Go. There is a FOSDEM talk about it.
- hnarn 3y agoJust imagining a timeline where Kubernetes was written in Java gives me chills.
- tinco 3y agoIf Mesos has managed to be slightly more useful, it would have been a Kubernetes written in C++ situation. Of course in my opinion it being written in C++ was the whole reason it had limited usability so it probably would never be.
- pjmlp 3y agoBorg is written in C++ as well, and there are no plans to rewrite it into Go, which is mostly used outside Google anyway. And how things are going in CNCF projects, if Rust had been more mature in 2014, most likely it would have been Rust instead.
- pjmlp 3y agoMesosphere DC/OS was partially written in Java.
- davedx 3y agoHaving worked with Scala I disagree it’s a safe choice. Scala is a huge, complicated, difficult language built on the huge (but very powerful) JVM. It’s also hard to hire Scala devs AND hard to train non Scala devs to write Scala, because it’s not a language you can learn in a weekend. (Speaking from experience)
- dboreham 3y agoAlso speaking from experience: Scala takes much less time to learn if you have someone familiar with regular programming concepts (not FP religion) to decode it for you. But ultimately agree, it's a bad choice for pretty much any purpose.
- davedx 3y agoMmm... depends, I guess. We had a team of JavaScript programmers and we (me included) needed to maintain the Scala back-end our client consumed, that was built by contractors a year or two previously and not really been worked on since then. It used Spray for routing, which IMO was the worst part of it, but there were a lot of other quite "cerebral" Scala-specific concepts in there too like implicits and other stuff that I forget now. A lot of it I'd never really come across before in any other programming language. Maybe if you're familiar with something like Haskell Scala is more straightforward to decode?
- ParetoOptimal 3y ago> Maybe if you're familiar with something like Haskell Scala is more straightforward to decode? Only if it's a particular flavor of Scala I think. Even then there's so much "excess" added by Haskell-esque Scala you'll have to develop the skill of mapping from one to another. A simple but realtively easy example is sum types in Haskell are case classes in Scala.