19 ms·
The Go Programming Language by Brian W. Kernighan, Alan Donovan
- jgrahamc 12y agoOh. Thank goodness for that. Now I can resist every publisher that wants me to write a book on Go, and tell myself that was OK to do because I'd never write as good a book as those two.
- dlecorfec 12y agoThe K&D?
- sgt 12y agoFor those of you who are not familiar with "The C Programming Language" (also written by Kernighan), see: http://www.amazon.com/C-Programming-Language-2nd/dp/0131103628/ref=sr_1_1?s=books&ie=UTF8&qid=1425561072&sr=1-1&keywords=the+c+programming+language http://www.amazon.com/C-Programming-Language-2nd/dp/01311036...
- waitingkuo 12y agoThat's really a good news. "The C Programming Language" is one of my favourite book. This should the next one!
- rjammala 12y agoThanks Dave for the link. I just pre-ordered the book :-)
- deleted 12y ago[deleted]
- eric_bullington 12y agoI've not been a huge fan of Go (more of a Rust person). However, seeing these authors, I'm now itching to get my hands on a copy of this book and give Go another shot. I wish I didn't have to wait until the summer for it! Edit: Also, I realize it's unfair to compare Rust to Go, since they really fill two different PL niches. I actually think there is plenty of room for both languages. By my statement above, I just meant that I'm more drawn to Rust's functionally-influenced approach than Go's modern take on the imperative paradigm.
- latch 12y agoThe C Programming Language had a tremendous influence on me. Everything I've written has been with the hope that I might capture part of its magic. That said, maybe The Little Go Book (http://openmymind.net/The-Little-Go-Book/ http://openmymind.net/The-Little-Go-Book/) can tide you over until summer.
- TazeTSchnitzel 12y agoK&R had some wonderfully tricky exercises. This should be fun. (Assuming I don't give up again!) Edit: Hmm, perhaps I should dust off that copy of K&R and continue from where I left off? :D
- eric_bullington 12y agoI've actually used some of the exercises from K&R when learning other languages, they're so good. This should be a lot of fun.
- higherpurpose 12y agoHopefully they'll do one for Rust, too, next.
- slowmovintarget 12y agoThat's doubtful, as the likely reason that they've written this one is that they're the same group of people that created the C language, now having moved on to Go. Ken Thompson, one of the creators of Go, worked with Dennis Ritchie (the "R" of "K&R") at Bell Labs, and created B, the precursor to C. Rob Pike, one of the other creators of Go, worked with Brian Kernighan (the "K") on two programming books. These guys are from the same crowd, in other words. Rust comes from the gang at Mozilla. Different generation, slightly different lineage of thought. C --> Unix --> Go Netscape --> Firefox --> Rust
- crncosta 12y agoI would like to take a glance. Does any one know where is the Table of Content? Thanks.
- danieldk 12y agohttp://www.informit.com/store/go-programming-language-9780134190440 http://www.informit.com/store/go-programming-language-978013... Seems like a no-nonsense approach like the K&R book. I am sold already :).
- deleted 12y ago[deleted]
- deleted 12y ago[deleted]
- chrisallick 12y agoI was a bit surprised by the length. Not a huge difference, but one of the best things about the K&R book was how short it was. But, I too have been been curious to look into Go. This might be the excuse I needed.
- henesy 12y agoI'd say any length increase would be justified, Go does have a pretty large standard library...
- wsloth514 12y agoIt's Brian Kernighan, enough said. I am sold.
- deleted 12y ago[deleted]
- cdnsteve 12y agoI actually have to say I wasn't familiar with this author having never spent time in C. After some Googling I'm excited to see he's fellow Canadian and looks to be a pioneer in computing as well. It also seems he's worked with Rob Pike, another fellow Canadian :)
- zapf 12y agoNo Kindle edition? :-(
- henesy 12y agoPatience.
- BinaryIdiot 12y agoConsidering this thing doesn't release until August 2015 I think they have plenty of time to add one.
- chrisdotcode 12y agoThere's a common saying that, "Everything about Go is great - except the language". I guess a book written by Kernighan himself shows how wonderful the ecosystem is.
- GUNHED_158 12y agoIt's in no way "common" saying!
- tempodox 12y agoIn my personal view, I find it disappointing that someone like Brian Kernighan, as a co-author of C, only got as far as Go. I would have loved it much more to see him working on a language like Rust, that actually seems to point to the future of programming languages (or does its best at it), while Go looks like a stopgap and a dead end right from the beginning. Go seems a fine piece of engineering in so far as it directly implements Google politics & some of their technical interests, but it's of little use outside of that, despite all the hype. A pity, really.
- odonnellryan 12y agoI've had tons of fun with Go, and I've also used it in real production code! I don't think it is really fair to say he "only" made it this far. It's something that actually brings enjoyment and productivity to possibly millions of people!
- tempodox 12y agoBASIC brought enjoyment and productivity to possibly millions of people. That doesn't mean there's nothing better.
- odonnellryan 12y agoThat's true, but it also doesn't mean BASIC wasn't an accomplishment!
- kungfooguru 12y agoWhy... that isn't what they do. There are people more qualified that actually are working on the future. More qualified because Kernighan isn't a programming languages researcher, what he has done and does may be great, but just because he is great in one section of computer science doesn't mean there is any reason to expect or even want him or others to venture into other sections just because.
- yiyus 12y agoIn my personal view, I find terribly arrogant to find disappointing how far Brian Kernighan has got. Even only what he has done between C and Go is more than most successful careers.
- sesteel 12y agoGo, with its simplicity, is a gift from the generation of masters to today's professionals, but many of today's professionals appear too ignorant to see the wisdom of the language. It used to drive me crazy when I would read negative comments in r/programming and HN, but I don't even pay attention to the negative comments anymore. The adoption is far better than I was afraid it was going to be.
- mateuszf 12y agoTwo words: error handling and generics.
- NateDad 12y agoI agree, those are two great reasons to use Go.
- touristtam 12y agothat's 4 words .... and if you are not comfortable with those two aspect of the language and have the choice, I don't see why you need to use golang.
- danieldk 12y agoError handling is something that I did get used to, especially considering that one can assign and check in an if-statement. Generics I still miss every single day. But not enough to stop using Go. It's pretty much C with interfaces, a garbage collector, and safety. What more can one wish for?
- frou_dh 12y agoAnyone know if Kernighan has written a lot of Go code himself, or is he onboard more for his technical writing skills? (There's the Bell Labs connection of course)
- NateDad 12y agoHe and Rob Pike have written a few books together, that's likely the main connection. I follow the Go community fairly closely and hadn't heard of Kernighan in connection with Go, but he may also not be advertising his use of it.
- f2f 12y agokernighan also wrote the tutorial on the Limbo programming language: http://doc.cat-v.org/inferno/4th_edition/limbo_language/descent http://doc.cat-v.org/inferno/4th_edition/limbo_language/desc... he's obviously good at it, and the perspective of someone not involved with the creation of the language is a bonus.
- mseepgood 12y agoHe authored the first 4 commits in the Go repository ;) https://github.com/golang/go/commit/7d7c6a97f815e9279d08cfaea7d5efb5e90695a8 https://github.com/golang/go/commit/7d7c6a97f815e9279d08cfae... https://github.com/golang/go/commit/0bb0b61d6a85b2a1a33dcbc418089656f2754d32 https://github.com/golang/go/commit/0bb0b61d6a85b2a1a33dcbc4... https://github.com/golang/go/commit/0744ac969119db8a0ad3253951d375eb77cfce9e https://github.com/golang/go/commit/0744ac969119db8a0ad32539... https://github.com/golang/go/commit/d82b11e4a46307f1f1415024f33263e819c222b8 https://github.com/golang/go/commit/d82b11e4a46307f1f1415024...
- zaphar 12y agoKernighan is one of the core authors of the language. So I'd say it's for more than just his technical writing skills.
- osw 12y agoThe main authors are Ken Thompson, Rob Pike and Robert Griesemer, Kernighan knows Ken since the 70s and Rob knows both of them since the 80s.
- cyber1 12y agoGood news! I think Go is the best alternative between C speed and simplicity of Python!
- xasos 12y agoDoes anyone know if they are selling a digital version?
- tjl 12y agoConsidering that it's not currently for sale, there's no digital version. That said, the publisher typically has had digital versions in the past so I'd expect there to be one when it's finally available for sale.
- kylek 12y agoAwesome. For those who don't know, Kernighan is the "k" in "awk" :)
- meddlepal 12y agoI look forward to the time when Go adds generics and all the people who told me that you don't need generics in Go start telling me how awesome and super-duper useful generics are.
- dvirsky 12y agoI haven't heard anyone, including the go authors, say that generics are bad and you absolutely don't need them in Go. Personally I like Go a lot and don't miss generics much, but for some things I'd love to use generics some day. It's basically about trade-offs eventually. To quote the FAQ about it: > enerics may well be added at some point. We don't feel an urgency for them, although we understand some programmers do. > Generics are convenient but they come at a cost in complexity in the type system and run-time. We haven't yet found a design that gives value proportionate to the complexity, although we continue to think about it.
- dilap 12y agoHere's rsc (one of the core Go dev's page) on generics. http://research.swtch.com/generic http://research.swtch.com/generic They do believe it's a useful feature, they just don't think the tradeoffs justify it yet. (People who loudly clamor for generics tend to ignore these tradeoffs.)
- frowaway001 12y agoI'd love if people would stop linking to something which is so obviously wrong (or at least read it before linking). Go devs made it clear that Go won't get Generics, and it's fine.
- marvy 12y agoUnfortunately, that thing is a false trichotomy. The fact is, choosing option 1 does not save you from the consequences of options 2 and 3. The reason is that the programmer now has to make a choice between boxing things manually, or implementing the same algorithm multiple times, just as the compiler would have done. So in reality there is a dichotomy: slow compiles, or slow runtimes.
- LVB 12y agoIt has been a long time since I bought a hardcopy programming book. Alternate forms of documentation and a Safari subscription have replaced these semi-frequent purchases. And although I can't argue against the practicality and economics of this new way, it certainly evokes none of the excitement of getting the new language book home, cracking the binding, and spending the rest of the evening curled up on the couch. Go has been my most used new language and the timing of this book is good. I'm looking forward to adding it to my (real) bookshelf.
- signa11 12y agofor folks who don't know it (yet), here is the toc: http://www.informit.com/store/go-programming-language-9780134190440 http://www.informit.com/store/go-programming-language-978013...
- chiph 12y ago320 pages vs. 274 for the 2nd edition of The C Programming Language. Not bad, considering how much more "stuff" Go has in it vs. K&R C.
- rdegges 12y agoYES. I read and re-read the original K&R (The C Programming Language) book many times as a child. It's one of my favorite tech books ever written: clear, concise, challenging, useful. I've recently started writing more and more code in Go, for simple performance reasons, and it'd be amazingly great to relive the K&R wonders of my childhood with a new language =) Just pre-ordered a copy, can't wait.
- vezzy-fnord 12y agoWhat made Go click for me is a simple realization: it's a language made by systems people, not by PL researchers. Everything makes sense after that. The language in isolation is boring and perhaps even anachronistic: a modern ALGOL dialect with first-class green threads. But as many people have said, the tooling and the libraries are simply top-notch. This is unsurprising: the people behind Go all have experience with things such as Research Unix, Plan 9 and just infrastructure in general. They've been instrumental in shaping up the lower level workings of our present systems, so they're intimately aware of those aspects. 9P, Acme, rio, the Acid debugger, the Plan 9 compiler collection... among other tools, reflect that their brilliance is in engineering rather than science. But more importantly: these people are experts in managing complexity and integrating things. Thus, in isolation, Go's components look bland and uninteresting. Cumulatively, they form a unique experience. Hence why Go has such a strong culture of "pragmatism" that a lot of PL geeks scoff at. So I've pretty much stopped thinking of Go the language, but rather Go the toolchain.
- osw 12y agobwk, so getting this.
- wyc 12y agoWell, goodbye $40.
- ChuckMcM 12y agoToo bad you can't buy it in a Kindle edition, I would have bought that.
- FanaHOVA 12y agoThe book is the #1 Best Seller in Computer Programming Languages and it's not even been released yet.. wow! I'm studying their C book right now for a university class, probably going to pick this one up right after.
- enahs-sf 12y agoAll the fun of The C Programming Language with none of the K&R braces!
- ProfOak_ 12y agoSo when do we start calling this K&D?
- aikah 12y agoI have mixed feelings about Go. For those who didn't try it yet here are the biggest advantages of Go: - it's totally easy to learn and can be mastered in a day - it's fast and typesafe - the concurrency model is great,no question - I personally like the error system, no exceptions but you can still "bubble up" errors with multiple return types - it has, in my opinion a comprehensive standard library,you can even do websockets and image compression with it. The draw backs : - no generics clearly the biggest drawback, which means a lot of copy and paste - the lack of idiomatic way to deal with dependencies(no defacto package manager) I think the ease of use justifies Go adoption in any team. It doesn't replace ruby or python for web programming ( little value in coding a CMS in Go , rails makes more sense),but when it comes to backend or webservices, it's a killer tool. compared to java, it's as fast and consumes WAY less memory.
- semi-extrinsic 12y agoThe lack of a package manager is a good thing, since this is the job of the operating system. That Windows and OSX have crappy/nonexisting package managers does not mean every language should roll its own. If the police in your city are not doing their job, you shouldn't resort to vigilantism, you should stage a protest. Ideally.
- shanemhansen 12y agoPackage management is the job of the operating system, but this statement doesn't make much sense for go because go binaries are statically linked to go packages. So using an OS-provided version of crypto/tls or net/http isn't really an option. Go dependencies are basically a build-time thing. (cgo is an exception)
- pjmlp 12y agoAre you aware how many OSs are out there?
- CatDevURandom 12y ago> which means a lot of copy and paste Again, I don't think Go is perfect but on my list of wants, generics are not in the top 5. Can you qualify "a lot" in a real project you've worked on? Because after writing a good chunk (over 50k lines) of Go code, I haven't felt the sting as much as I hear it complained about. > the lack of idiomatic way to deal with dependencies(no defacto package manager Again, is this really a big deal? There's plenty of options, and if you are shipping any-type of commercial product you are going to want to be vendoring your dependencies in-house anyway. In which case, depending on something like NPM/remote maven repos is not a viable options anyway.
- pjmorris 12y ago"Good Programming is not learned from generalities, but by seeing how significant programs can be made clean, easy to read, easy to maintain and modify, human-engineered, efficient, and reliable, by the application of common sense and good programming practices. Careful study and imitation of good programs leads to better writing." - [1] I'm a huge fan, have nearly everything Kernighan's been involved with, and have profited greatly from his writing. I look forward to picking up the Go book, and modernizing a bit. [1] 'Software Tools', Brian Kernighan, P.J. Plauger, 1976
- dsuth 12y agoGreat, now I have to learn Go to justify getting this book!
- touristtam 12y agoHonest question here: Why do I need a book about Go when all the doc is living online? that just feels so 90's.
- e12e 12y agoAm I blind, or is there only a paperback edition, no digital version?