Oddbean new post about | logout
 Golang has everything that makes me sad about programming. So many things are done right (interfaces, for example), but everything is done in such a weird way (type declarations, var). Can't we get a language that has all the good parts and none of the weird ones? 
 No silver bullet! No one ring to rule them all! 
 But I waaant one 
 you know you can declare and assign a variable in one shot with := right?

the conventions on structuring at the top level of a source file are based on Modula/Oberon syntax, it's very fast to find all the sentinels and then process the sections in the compilation process

also, what do you mean type declarations? 

to do some of the things that are just a couple of type definitions and methods in Go requires a whole fancy and wordy object definition in most OOP languages

if you need something like inheritance you can do it with composition in Go - if you make a struct member just the name of a type (anonymous field) you can access its methods directly from the variable of the struct type, this is called composition 
 Yes, I like how Go does (or doesn't do) inheritance. Very clojure-like. By type declarations I just mean the map[string]int syntax. Not a deal breaker, but sort of silly. 
 why is it silly? how else are you going to indicate something that is later referred to as varname[key] ? 
 It's not conventional, most other languages do something like Map<string, int>. It's like MM/DD/YYYY time format. Idiosyncratic vs logical 
 Syntax is not an issue for me - a matter of taste.   The problem with golang IMO is the centralized library repo - the same problem as javascript and npm nonsense. 
 Kotlin remains my favourite. I can’t think of anything bad about it in my biased point of view, after working with Java for 10 years. 
 "We" all differ  
 True 
 I only learned to love Go, once I had to work on code in a bigger team, and then had to maintain the services as a building blocks of a bigger product.  On occasion I'd need to add a feature or update a service that has been working with no issues for 3+ years. I would have completely forgotten the codebase by that point but the code was always very maintainable and fast to grok. It's always my goto lang for backend services. 
 This is what attracts me about Go. It's like clojure, but not on the JVM and more mainstream. 
 I tried to like Go, but I felt like some of the design decisions were specifically made to troll me and just went back to Clojure. 
 😂