5 ms·
If they accept generics, then there is an implication that the language design isn't infallible as a result of being written by Rob Pike, and then the whole hou
by peteretep 11y ago
If they accept generics, then there is an implication that the language design isn't infallible as a result of being written by Rob Pike, and then the whole house of cards falls down as people start clamouring for things like real exceptions.
- enneff 11y agoYour comment does a great disservice to Robert Griesemer, Ken Thompson, and the many others who contributed to Go's design.
- nostrademons 11y agoNot to mention Ian Lance Taylor, who's been on the Go team since before it was public, authored the GCC Go frontend, was de-facto leading the team when I left Google in 2014, and also happens to be the author of the proposal.
- Ericson2314 11y agoYeah they haven't done it yet, and might still never do it, to save face. What could have been a simple 1.0 missing feature has been politicized into Go's defining feature/mistake.
- enneff 11y agoThere is nothing political about it, and speaking as someone on the inside it is simply ridiculous to think of it that way. What these real proposals show is that a lot of sincere effort has been spent by members of the core team writing, reviewing, and debating generics proposals over a span of multiple years. Ian only recently felt comfortable releasing them publicly, and so here they are.
- Ericson2314 11y agoI don't want to start a flame war, but parametric polymorphism has been exhaustively studied for decades. Any technical difficulties of bolting it on Go at this stage probably stem from uncertainty about Go's existing semantics rather than the new feature itself. So I hope there are non-technical reasons that have led to the features delay.
- enneff 11y agoThat's precisely it. We don't want to "bolt on" any feature to Go. The features should interact nicely. Language design is all about tradeoffs like this. There's a lot of information out there about Go's design process and goals. If you read up on it (and the proposals that are the subject of this thread) you can see why parametric polymorphism isn't something that you can just shove into the language.
- Ericson2314 11y agoMy point is that if Go was properly formalized as it should have been all along, this would be a lot easier. These past proposals are needlessly informal---running the risk of missing any important details. For future proposals, I highly recommend the use of judgements / a sequent calculus to formally specify the type system.
- enneff 11y agoWill keep that in mind. Thanks!
- Ericson2314 11y agoGood luck!
- ngrilly 11y agoDoes you critic applies to Rust as well which, as far as I know, is not formalized either? Are OCaml or Haskell propery formalized?
- Ericson2314 11y agoUnfortunately they aren't. But those are all worked on by people with academic (or equivalent) PL backgrounds whose hand-waving I trust much more. Also don't forget the existence of GHC's core, and Rust's Mir (OCaml I'd hope have a good well-defined core language). Basically, for human purposes, there is a spectrum of "quasi-formality" and Go is not winning. Finally, get very excited for http://plv.mpi-sws.org/rustbelt/ http://plv.mpi-sws.org/rustbelt/ .