5 ms·
Of all new programming languages that have received a certain amount of hype, Go is the only one I never felt inclined to play with after reading about it. It j
by erokar 7y ago
Of all new programming languages that have received a certain amount of hype, Go is the only one I never felt inclined to play with after reading about it. It just seems too dumbed-down and backwards. It's like someone wished CS stopped evolving after 1970 and designed a language to pretend it did. The simplest of abstractions are removed from the language, like operations on collections that abstracts away for loops (e.g. filter, map, reduce, etc.).
I don't doubt that it has good CPU performance and concurrency, the developer experience just seems so frustrating.
- eitland 7y agoI belive it when other people say they like it, but I agree with you. (That said I really didn't like Java either, and it later became my favorite language for a decade or so.)
- winter_blue 7y agoWhy did Java later become your favorite language? And why only for a decade? (I started liking Java a lot more after Java 8 came out.)
- eitland 7y agoMy comment became so long I moved it to my blog: https://erik.itland.no/questions-about-why-i-like-java https://erik.itland.no/questions-about-why-i-like-java
- winter_blue 7y agoThank you for the long response! I can relate (and feel the same) about several of the points you made in your blog post.
- eitland 7y agoThanks a lot for coming back so long after to say that! You actually put a smile on my face :-)
- ben_jones 7y agoIt's good at moving bytes around. Turns out most networked applications are just moving bytes around. I've been using it for four years now and honestly would ask for an extra 10%-20% to be working in most other languages.
- tschellenbach 7y agoI like that it's more productive to work with than C++ and about 20-40 times faster than Python (more if you take the concurrency improvements into account). That's a perfect sweet spot for many companies.
- weberc2 7y agoI like that the tools just work. I don't have to learn a DSL just to write my own build system for my project (unlike CMake, gradle, opam, etc); it's just `go build` or `go test`. And it works for almost everyone's project, so anyone can contribute to anyone else's project without learning a crappy one-off build system just to compile the code or run the tests. Similarly, I don't have to learn a special comment syntacs for docs nor write CI jobs to publish code or documentation packages--docs are just comments above functions and code and docs are automatically published when you push to version control. Also, `gofmt` is ubiquitous, so everyone has the same style. Go was built for software development, and it addresses real, practical problems.
- deleted 7y ago[deleted]
- K0SM0S 7y agoAbout "dumbed down" and "backwards", which can also be expressed positively to mean the same (e.g. "essential" or "synthetic"), it's because of Go's problem space: to tackle complexity at scale, i.e. solve relatively "simple" problems (or with more atomicity in architecture) but maximize both maintainability and concurrent performance. Key words being to design and maintain concurrence as compared to C++ or Java. Go is everything but "backwards" in that regard, it's fantastically efficient and actually fun to code. It builds upon SCP, a formal language designed in 1978 for concurrency, and it's Pike 3rd time (the charm of v3!) in that regard. They aced it, seriously, and thus scaling is part of the core paradigm (if you want to build for that). The trade-off is in elementary complexity, core and syntax sugar ("absence" of generics etc). But in actual practice, people are effectively hard-pressed to find examples where Go applies (we're talking server / CLI / infra software, backend and middleware mostly) and e.g. the absence of generics is an issue. It turns out, in actual practice, you can very pragmatically approach the problem from the Go programming paradigm standpoint and solve it quite elegantly (if a little verbosely sometimes, but it's nowhere near C++ or Java either once you factor in everything else). The "absence" of a feature in a nonetheless 'complete' programming language is only a lack if you want to think this way and use said abstraction; the makers of Go argue that in a number of cases, it's not just possible but better to keep it simpler at the unit level, because you massively improve readability, and simplicity makes performance and security also simpler. Keep in mind, when they made Go, they never thought it would become so big, nor was it the intent. They made Go for Google to solve Google-y problems of scaling. It just turns out, as Docker illustrated, that many other companies and problems could benefit from Go. Hence, it has its place. It'll probably never be "THE" programming language like Python is, but it doesn't try either. I find there's elegance in that restraint, there's a certain nobility to stay true to the UNIX philosophy of solving your problem space, no more no less, and doing it as efficienctly as possible. As for "frustrating", one of the language's explicit goals is to "make programming fun again" — back to sitting in a Google office to solve tech-giant scaling problems without going insane thanks to C++. Maybe they failed for you : ) But for many people, beginners notably, the language is really fun — if you forget everything else and strive for "idiomatic" Go, in syntax and patterns and architecture. The tooling is young but great — things like integrated testing, benchmarking, documenting, fast compiler. Sorry for a long piece. This low-profile language is one jewel if you don't expect it to be Python or Js. I hear the same enthusiasm from the community (let's call it: love) as I used to hear from Ruby lovers for instance — the "match" is real between the Go philosophy and some people.
- stunt 7y agoI also see all the benefits but GO is very regressive and feels like a backward step. But when you consider how many developers have a hard time to learn GIT after so many years, you realize why companies need something as simple as GO. Another reason is rise of new specialized engineers that programming isn’t their main focus and hence they are looking for easy solutions and easy languages to pick up. (DevOps, Data Scientists, SRE etc)