16 ms·
Half a decade with Go
- spotman 12y agoCrazy that it has been 5 years. Time flies when your having fun. The golang team has done a fantastic job. It is now my primary language of choice to get things done. 2 years ago I started playing with it moderately, and now in the past 12 months or so it has made its way into my normal workflow and have been delivering completed projects in golang. I am excited for the next chapter in golang. Keep up the good work!
- cjslep 12y agoI've been using it instead of Python as my custom analysis tool - the ease of concurrency makes it very handy when working with large data sets, or gluing various codes together.
- Kiro 12y agoWhere do you work where you get to pick so freely? What kind of projects?
- spotman 12y agoI am a partner in a software consultancy company. We do any kind of unix based programming, and have worked on everything from financial software, mobile applications and streaming video servers. Most of my work involves building server applications. I have deployed 4 golang apps this year. One is a pre-caching system that concurrently queries a bunch of mysql servers and caches data into redis. Another is a replication system from couchdb to postgresql, and the other two are slim restful api applications that sit in front of elastic search.
- bketelsen 12y agoShameless promotion in case you don't read OP. We're posting an article every day on blog.gopheracademy.com celebrating the use of Go around the world. http://blog.gopheracademy.com/birthday-bash-2014/go-turns-5/ http://blog.gopheracademy.com/birthday-bash-2014/go-turns-5/
- deleted 12y ago[deleted]
- frakturfreund 12y agoThe RSS feed of this Blog is broken :(
- davecheney 12y agoThanks. Should be fixed now.
- Dewie 12y ago> , we were calling Go a "systems language" And maybe in another 5 years, people will stop bickering over whether that description is/was appropriate. :)
- agox 12y agoDare to dream big!
- _ak 12y agoIf only people would not willfully ignore the implicit "at Google" or "for Google" that a lot of things said about Go carry. Go may be a terrible language from the PLT POV, but it's meant to solve problems Google has.
- georgemcbay 12y agoThey won't stop, they will only pause... so that they can spend some time bickering over whether or not lack of generics makes Go unusable.
- xkarga00 12y agoDoes anyone know how Go is used inside Microsoft, except their participation in the Kubernetes project?
- jhawk28 12y agoI expect that Microsoft will be using Go for their Docker integration.
- ansible 12y agoAt launch, there was a flurry of attention. Google had produced a new programming language, and everyone was eager to check it out. Some programmers were turned off by Go's conservative feature set—at first glance they saw "nothing to see here"... This was totally me. I am very much a programming language aficionado (or maybe just a dilettante), and when I first read about Go, I dismissed it quickly. I'd mostly been using Lua at the time, and didn't really understand what was different with goroutines vs. coroutines. After the initial release, it took us a while to properly communicate the goals and design ethos behind Go. Rob Pike did so eloquently in his 2012 essay Go at Google: Language Design in the Service of Software Engineering and more personally in his blog post Less is exponentially more. Andrew Gerrand's Code that grows with grace (slides) and Go for Gophers (slides) give a more in-depth, technical take on Go's design philosophy. It was Rob Pike's essay that caused me to investigate it again. I have been quite impressed with lots of little details that have been 'fixed' (relative to C) in Go. Such as how variables are declared, the module system, and much more. And I was and continue to be impressed with the associated tooling. I hope that if Go has just one lasting legacy in the history of programming, it will be how it pushed forward people's expectations of what a good language ecosystem should provide.
- wyager 12y agoWhat do you think is worthwhile about Go? I agree that the tooling is nice, but beyond that, there is nothing interesting to me. Goroutines aren't interesting; languages like Erlang and Haskell got green threads right many years before Go was on the scene.
- enneff 12y agoThis talk (mentioned in the article) captures a lot of the value that I see in Go: https://www.youtube.com/watch?v=dKGmK_Z1Zl0 https://www.youtube.com/watch?v=dKGmK_Z1Zl0
- kjksf 12y agoYou should ponder why Erlang or Haskell achieved a fraction of Go's adoption despite being on the market 20+ years longer. Some people see languages as a bag of features (immutability! generic programming! laziness! operator overloading! algebraic types! hindley-miller type inference! pattern matching! exceptions! manual memory management!). See http://yager.io/programming/go.html http://yager.io/programming/go.html for an example of that line of thinking. Those people won't get Go. Designing a language is not about cramming every feature you can think of. It's about making good trade offs. A trade off is: you get something but you also loose something. I use Go because it made the biggest number of good trade offs. Or to put it differently: I program in Go because when writing code, it irritates me less than other languages. If you want a longer explanation of that: http://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html http://commandcenter.blogspot.com/2012/06/less-is-exponentia...
- dvt 12y agoVery awesome. I'm so proud to have been an early committer! Unfortunately, I don't use Go that much day-to-day, but here's hoping for another 5 years!
- codemac 12y agoYou still need a Makefile if you use things like godep, or their new `go generate` stuff. They have a long way to go on tooling; however, getting to say that is a luxury, due to just how "right" golang has been for systems work. Golang has been amazing to work with, and has just been stupidly productive. I miss debugging (gdb) and generic compile tools like tup, but that's about it!
- kyrra 12y agoI saw a debugger[0] posted on the go-nuts mailing list today[1]. It's fairly simple at this point, but it works. [0] https://github.com/derekparker/delve https://github.com/derekparker/delve [1] https://groups.google.com/forum/#!topic/golang-nuts/bmsFE3dQQjk https://groups.google.com/forum/#!topic/golang-nuts/bmsFE3dQ...
- dawkins 12y agoThank you for mentioning it. With the last version of liteIde (refactoring, jump-to, usages, info about a anything...) the only thing that I missed was a debugger. I Hope that the project gains traction.
- cespare 12y agoYou don't need a Makefile for either of those.
- codemac 12y agoI do if I want to encode how people who consume a pile of code either add or remove dependencies, or want to edit/recompile code that was generated. And in fact, especially at my job, it's literally what I want everyone to do in a consistent way. A convenient way to do that is ask people to type 'make'.
- gaius 12y agoI don't know why people hate on Makefiles, make is great! Does exactly what it says on the tin.
- jvehent 12y agoWriting in Go has made me find Python code ugly. Much like Python made me dislike Perl many years ago. That is, of course, very subjective.
- johncoltrane 12y agoHalf a decade sounds better than 5 years.
- wwweston 12y agoOK, I'll admit it. I've spent six months with Go. I keep waiting for the moment when I understand it, maybe even develop some enthusiasm for it, and reach Pike-enlightenment. And I pretty much hate the language. I feel like I'm writing in something that combines the worst weaknesses of Pascal and Java. In fact, Mark Dominus' comments about Java (http://blog.plover.com/prog/Java.html http://blog.plover.com/prog/Java.html ) approximate my experience Go far better than I would have guessed when I started the project I'm on. People who seem to be smart nevertheless keep talking it up... some not even as just a good tool but as their favorite language. So I'll ask: What is it I need to read/work through in order to at least "get" Go and really understand its strengths (whether or not I end up liking it)?
- claystu 12y agoWhat weaknesses of Pascal are being repeated in Go?
- lmm 12y agoThere is no escape. The language thinks it knows better than you. The standard library is allowed to do things that your code isn't.
- _ak 12y agoLike what? The standard library is no more special, other than where it resides in the filesystem. You can write C and assembly code as well and link it to your Go code. And I'm not talking about cgo, I mean [568][ac], the Plan 9 C compiler and assembler that come with Go.
- lmm 12y agoI was thinking most obviously of generics. The go standard library is full of generic collections, but you're not allowed to use generics in your own code.
- 12y ago
- general_failure 12y agoI really dislike the syntax. The language itself has nice concepts.
- dsymonds 12y agoWhat precisely is it about Go's syntax that you dislike?
- ExpiredLink 12y agoWhy are language discussions so futile? Because people choose platforms, not languages. Platforms have one main language (in some cases two) which becomes the language of (no) choice for the developers. Platform examples: Host (Cobol, PL/1), Unix (C), Embedded (C), classic Windows (C++, VB), .NET (C#, VB.NET), Java EE (Java), Android (Java), ... Rails (Ruby), PHP (PHP), Browser (JavaScript). The choice is always between platforms, not between languages. Languages without linking to a platform (Go, Python, Scala, D, Rust, ...) have little chance to succeed.
- gaius 12y agoBecause people choose platforms, not languages. No, because a language is not (just) a technology, it's a community, and as such, people invest their identities in it. If possible you make an enlightened choice about joining a community that shares your ideas and values and is doing similar kinds of work to you, so they are producing libraries and documentation and hosting relevant and interesting conferences. I often feel that people who lash out at other languages, are people who have come to regret their own choice of community.
- EdiX 12y agoI don't see how PHP is a platform like the other platforms you mention. Also Python is very successful, Perl is very successful, Debian was very successful in its time. Your argument does not seem to be corroborated by facts.
- LBarret 12y agoGo is an average language but it's a solid product. The tooling is excellent. A lot of thougt has been put into making things simple. From the folder structure to the final binary, everything is smooth. It's just a shame that the language design itself is quite behind the times. Older languages had a lot to offer to a new one. The day it launched it was already old. And I don't see a lot of goodwill to change the language to fill the glaring omissions. Python in this respect is quite an example : iterators, generators, ABC were carefully added without making any less approachable. It prooves it is possible, but that the kind of things the Go leaders apparently simply don't consider.
- austinz 12y agoSometimes I wonder: if Apple's new language had been Go, and Google's new language had been Swift, how would reaction by developers and adoption have differed? (You can also run this thought exercise with Go and Rust, if you prefer a different competition between self-proclaimed systems languages.)
- eng_monkey 12y agoA full lustrum.
- Animats 12y agoGo has a rather specific purpose. It's intended for writing server-side web systems that will run fast and scale well. Since that's what Google does to make money, that makes sense. The available libraries reflect this - good support for dealing with many network connections at once, no GUI support. It's not suitable for writing an OS, hard real time, highly generic libraries, or GUI programs. Within its niche, it's far better than the alternative, which is usually C++. Just the fact that it eliminates buffer overflows without running slow is enough to justify it. There are lots of problems with Go. The concurrency isn't safe. The lack of generics forces overuse of reflection and "interface{}", Go's all-purpose type. The lack of exceptions forces far too many lines of "if err != nil { return err}", (or worse, a goto) which takes 3 lines of text every time. The "defer" mechanism is clunky. Lots of modern bells and whistles, from functional programming to generators, were omitted. Other than the lack of safe concurrency, those things don't cause operational problems in your data center. They just require more typing by the programmers. That's an acceptable cost. It beats spending time in a debugger.
- ansible 12y agoThe lack of exceptions forces far too many lines of "if err != nil { return err}", (or worse, a goto) which takes 3 lines of text every time. If I could go back in time, and discuss one thing with the designers, it would be to fix this. I'd rather see some kind of Option type (like in Rust) baked deep into the language. Maybe there would be a scheme where you could use these Option types as regular values. The moment you try to use one of them that is actually an error (trying to pass it as an argument to another function without inspecting it first for example), it causes your current function to return an error. Or something like that. Maybe that's a language design change that isn't going to be worked out in a social media post. The "defer" mechanism is clunky. I like defer. Open a file? Defer close it right afterwards in the code. Bam, done! That's nice, and works even if there was a panic deeper in the call stack somewhere. The idiomatic way to do that in Go, however, can mask errors, like say if Close() returned an error, you might not see it if you just did a 'defer foobar.Close()' Those errors should go somewhere... somehow.
- ansible 12y ago
- JSno 12y agoGo is too hard for pythonist. Forgive them.
- callesgg 12y agoI would really like to see go binaries that is not like a 1mb in size. In practice is not like I don't have space for 1MB But I still want proper linking to a shared "golib"
- Artemis2 12y agoOnly Go developers install the Go toolchain, so there's very little chance that your executable will work where you intend it to.
- jamescun 12y agoBinary sizes are a concern, particularly with a move to mobile devices and later embedded systems. However for Go's current platforms, I would call it a non-issue. Static builds, something seemingly long forgotten though supported in other compiled languages, make deployment and distribution that bit easier. I would support static builds by default, optional dynamic builds.
- zerr 12y agoHow I wish Gilad Bracha was in Go team instead of that js replacement language nobody is using...