7 ms·
It continues to amaze me how much is packed into the Go language. It's not perfect, but the language specification is something that you can easily read in one
by Jabbles 16y ago
It continues to amaze me how much is packed into the Go language. It's not perfect, but the language specification is something that you can easily read in one go; something that is impossible for languages like C++. This results in more intuitive behaviour and, in my limited experience, fewer bugs.
I hope other language designers take note of Go and put more emphasis on simplicity in the future.
I would also be very interested to know which companies are using Go, and for what.
- barrkel 16y agoA relevant quote from a (relatively academic, static typing-oriented, functional etc.) sector of the language design community: Google is hiring people to design languages and tools that know absolutely nothing about modern language design techniques, or what modern software engineering tools look like. If you're paying any attention at all to Go, you're not learning anything. In fact, it's possible you're damaging your brain. It's projects like these that make Google look really bad and unattractive to programming language researchers, especially as compared to Adobe, IBM, Sun, and Microsoft. From here: http://lambda-the-ultimate.org/node/3896 http://lambda-the-ultimate.org/node/3896
- dlsspy 16y agoI definitely had plenty of complaints (there's no way in the language to detect when a process exits, for example -- though you can at least build one yourself). I don't think LtU approval is necessary to have done something good. We need more tools that help programmers solve problems of concurrency without losing their feet. Tools that aren't entirely groundbreaking are very useful here, because you can take a guy who knows only c++ and have him write a bit of go. I can't as easily get him to use twisted or erlang or even node.js.
- nickik 16y agoI still think go is as it is because the want as many C/C++ Programmers as possible. They could have done a better language (it is ok already) but probebly a less successful one (to bad C++ and Java messed up most programmers).
- krakensden 16y agoOn the other hand, the academic community seems to have a fairly narrow outlook on programming language design. Go seems to be more concerned with ergonomics than provability, which seems like a reasonable decision from where I stand.
- masklinn 16y ago> On the other hand, the academic community seems to have a fairly narrow outlook on programming language design. That's a joke right?
- nl 16y agoI don't think it's a joke. The academic community is - almost by definition - focused on doing "new stuff". That means, for example that they have a significant focus on getting type systems correct, but often consider things like integration with existing 3rd party libraries uninteresting. You'd never see a language like Perl, PHP, or even Javascript come from the academic community because they don't break any new ground.
- uriel 16y ago> You'd never see a language like Perl, PHP, or even Javascript come from the academic community And you certainly will never see language like C come from academia. Nor an operating system like (the original) Unix.
- radq 16y agoWeren't both C and Unix innovative at the time?
- dagw 16y agoNot really, at least not from an academic point of view. C showed up a few years after languages like LISP and Simula and around the same time as Prolog. Those languages are far more innovative than C. C on the other hand basically took well known concepts from BCPL and PDP Assembly and improved on them and made them portable. Unix was basically a simpler, easier to use version of MIT Multics, designed for the smaller and cheaper PDP-7. Most of the innovative ideas in Unix had first implemented in Multics. So while neither C nor Unix where truly innovative, even for their time, they won out because they took well known concepts and actually made them work in a practical sense.
- goalieca 16y agoHahaha. I'm an academic but I still laugh because we are so horribly arrogant and yet quite oblivious. We always introduce our papers and grants with "this is a very important problem with applications in blah blah blah" but we honestly have no idea what that really means or if it actually is the big problem for engineers (as opposed to an annoyance) and go on to do present our work developed in a bubble and tested on whatever we have access to in our labs. Consider erlang, such a language would never come out of academia. It's far too focused on reliability and maintenance. Those two problems are never on our radar in any real way.
- shadowfox 16y agoAre you a programming language researcher?
- deleted 16y ago[deleted]
- olliesaunders 16y agoMaintenance is absolutely on the radar of the academics who designed Haskell.
- Jabbles 16y agoInteresting quote. But since Go is meant to be a "systems language", and the (only?) others are C and C++, which first appeared in 1972 and 1983 respectively, I can confidently assert that "modern language design techniques" are not all they're cracked up to be. Moreover, I care not one whit that Google looks "really bad and unattractive to programming language researchers"; because I'm not one.
- wmf 16y agoSome people have used OCaml for systems work, and it's a lot more "advanced" in a programming language theory sense. BitC also looks more ambitious than Go.
- scott_s 16y agoThat's the problem with designing and implementing an ambitious programming language: it's harder. Which is one of the reasons that Go is being used to develop real applications. I don't think the same thing can be said for BitC. I do think OCaml is an interesting point.
- mavelikara 16y ago> Which is one of the reasons that Go is being used to develop real applications. I don't think the same thing can be said for BitC. Until BitC author claims that it is used for real applications. Has anyone outside of the Go team mentioned any use of Go in real applications? Please correct me if I am wrong, but at the moment Go, BitC and Rust are all experimental systems programing languages.
- wmf 16y ago"Internally at Google there are several teams that choose Go for building production software"
- mavelikara 16y ago
- mhd 16y agoNiklaus Wirth would disagree. (I know, he would probably disagree with Pike, Thompson et al., too, but on different principles.)
- shadowfox 16y agoYou should also note the responses to this comment on that thread including the one from the author :)
- uriel 16y ago"programming language researchers" are starting to sound more and more like "string theory researchers".
- rdtsc 16y agoLet's not forgot that academia also produced Go!. You know, the other Go!, that only became known after Go appeared, because it has a similar name.
- silentbicycle 16y agoI don't think Z-bo speaks for everyone at LtU. His or her comments often strike me as a bit troll-ish.
- olliesaunders 16y agoIf you read on, on LtU, someone suggests that they discuss Go on its own merits instead of making statements about the hiring practices of Google and Z-bo agrees.
- konad 16y agoPike, Ritchie and Cox, those simple fools
- dlsspy 16y agoI used go recently when I needed to write a test case when trying to exploit a specific suspected bug. https://github.com/dustin/gohammer https://github.com/dustin/gohammer It was successful in that I found it very easy to express what I wanted and make a concurrent app to do it. It didn't actually find a bug (I'm not entirely sure there was one, but the code that fell out of it is reusable for my next one). When go first came out, I wrote a memcached server in it: http://dustin.github.com/2009/11/12/gomemcached.html http://dustin.github.com/2009/11/12/gomemcached.html -- the language was a little rougher when I started the project (defer didn't work properly until last march), but I still feel pretty good about it.