Earlier quoted context omitted.
"That's not to say Go is perfect (e.g. a 'real' debugger option)" As a fellow Go coder, I'm actually stunned how much I can get done without a debugger nowadays.
You know, I've heard this a few times recently and it strikes me as motivated reasoning. Yes, built in unit testing and tooling is great. Vet and fmt are helpful. Static typing rocks. But... I would definitely welcome a proper debugger.
The Go Programming Language by Brian W. Kernighan, Alan Donovan
261–264 of 264 posts
Re: The Go Programming Language by Brian W. Kernighan, Alan Donovan
#262Earlier quoted context omitted.
I think this can be misleading. The guys who designed Go have not designed any other popular languages in the decades between C and Go. They have not produced any modern developer tools or toolchains. Rob Pike's last language before Go was a quasi-DSL called Sawzall, which is a Google internal language for logs processing. I had to use it when I was at Google and frankly, I would have preferred other languages to hav…
> Both things that Go has a notable poverty of. It surprises me that you say this, since we (the Go team) spend a huge amount of time and energy talking about our design decisions. But you must have missed it, because the examples you give are wrong. > For example Google's C++ style guide bans exceptions, partly because writing exception safe code in the absence of garbage collection is very hard. So not having them…
The arguments about assertions is a typical example of this weakness. A failed assertion in any reasonable runtime and even in google3 C++ produces a stack trace and a log message indicating what assertion failed. It's then usually easy to go read the code where the problem was hit and start debugging.
In contrast, I find typical Go code to be an unreadable mess of nested if statements and C-style return code propagation. Information is routinely lost and errors ignored. When something goes wrong you don't get a convenient stack trace showing exactly how the program arrived at the place where the failure occurred, you might if you are lucky get a generic error message indicating the general subsystem where something went wrong, or if you're very lucky a log message, but several big Go programs I've seen didn't bother with exhaustive logging on error paths and were difficult to debug as a result.
Compare to other languages (nearly all of them) which have exceptions: I've never once been confused or found code hard to read because of the use of them. That's just not a problem I recognise. But I've benefited from them more times than I can count.
I didn't know Odersky said that. I think that's very polite. Regardless, the language he designed looks nothing like Go, so I guess if he really likes Go's design decisions he has decided that his own language got it all wrong. I don't think he's really decided that.
Re: The Go Programming Language by Brian W. Kernighan, Alan Donovan
#263Earlier quoted context omitted.
That'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 a…
Well, no. It was UNIX -> C.
C was developed in order for Ken Thompson to write the first Unix. The development of one fed the development of the other and they came into being together.
Re: The Go Programming Language by Brian W. Kernighan, Alan Donovan
#264Earlier quoted context omitted.
Well, no. It was UNIX -> C.
It was Multics -> C -> Unix -> C -> Unix... etc. C was developed in order for Ken Thompson to write the first Unix. The development of one fed the development of the other and they came into being together. http://cm.bell-labs.com/who/dmr/chist.html