4 ms·
Or maybe the academics and type theorists are philistines about the software that runs the world and their arguments have mostly been about hand-picked toy exam
by jstimpfle 8y ago
Or maybe the academics and type theorists are philistines about the software that runs the world and their arguments have mostly been about hand-picked toy examples?
Maybe Mr. Pike actually has some well-deserved reputation when it comes to real-world software and engineering projects that are about handling large scale data in real time?
- apta 8y ago> Maybe Mr. Pike actually has some well-deserved reputation when it comes to real-world software and engineering projects that are about handling large scale data in real time? What are the credentials to back this up? Otherwise, the languages he makes fun of actually are used to deliver large scale systems in real time. Google is built on C++ and Java, so are most of the other top tech companies, not to mention banks and HFT firms.
- jstimpfle 8y agoHe is one of the Unix figures at Bell Labs (although a late-joiner, being younger), he designed UTF-8 with Ken Thompson, and worked on the Plan 9 project, before joining Google. That's probably more than most of us will ever achieve.
- apta 8y agoPlan9 didn't go anywhere. So other than UTF-8, there's not much to speak of. He's not a reference on programming language design, and it shows. Compare to Leslie Lamport for instance, and the tremendous effect he had on large scale systems and software engineering correctness.
- jstimpfle 8y agoCan you argue your case as well as he does? https://www.youtube.com/watch?v=cQ7STILAS0M https://www.youtube.com/watch?v=cQ7STILAS0M Or are you just being disrespectful?
- apta 8y agoI read the slides, but didn't hear the talk. There is so much conjecture in them. C++ is successful, Java is successful, so are Python, C#, and a whole bunch of other languages. When it comes to complexity, large systems tend to be complex, so you either push some of that complexity into your language, to give you expressiveness and modeling capability, or you simplify your language so much (golang) such that the code base becomes complex and verbose due to repetition, not to mention error prone. Readability? Compare: var a int if foo() { a = bar() } else { a = baz() } to final int a = foo() ? bar() : baz() or even val a = if foo() { bar() } else { baz() } the latter two are shorter by a factor of 6, clearer, and less error prone. This is a feature that both improves readability, and reduces complexity. The funny thing is, the golang code bases I worked with would be quite a bit shorter in a supposedly verbose language like Java, not to mention something like Kotlin. Do you want a practical reason why golang is popular? Because it has Google behind its name. The language that he worked on before he was at Google, which were similar to golang, went nowhere.
- jstimpfle 8y agoThere's a name for what you're doing. It's called "cherry picking". And also there's a name for the act of pulling something out of context to support an arbitrary point. Let it be said that I'm not actually a Go but a C programmer, and there might be about 1 legitimate use of this syntactic construct per few thousand lines in my code (you are free to checkout my language project from github and verify my claim). It's not that I don't know the construct, but more that most experiments with it end up being reverted again to the longer form, to preserve the rhyme and rhythm of my code. I won't take sides, but I guess their idea was that like so many other features, this little syntactic sugar construct does not carry its own weight. > I read the slides, but didn't hear the talk You absolutely should hear it! The slides probably do not contain actual experience reports, opinions, and arguments. > the golang code bases I worked with would be quite a bit shorter in a supposedly verbose language like Java that's hard to believe. Any code samples for illustration? (I invite you to cherry pick!).
- 8y ago
- ernst_klim 8y ago>He is one of the Unix figures at Bell Labs (although a late-joiner, being younger), he designed UTF-8 with Ken Thompson, and worked on the Plan 9 project So his only "serious engineering project" is a toyish academic operating system? No mission-critical software, no application software with millions of installations (except Go compilers).
- jstimpfle 8y agoYou're being disrespectful. > No mission-critical software, no application software with millions of installations (except Go compilers). Yes. NOOO software with millions of installations. Except Go compilers. Which doesn't count? (And I don't even know, there might be more). He is an accomplished engineer. UTF-8 is one of the best designs I know. Unix is still around, despite its shortcomings. He's written books and been around some of the gods of software and OS engineering. Regarding Plan 9, I'm not positive that it is a toy operating system. I've never used it. It tried to improve on Unix and might (or might not) have achieved that in many ways. It's named as an inspiration by Linus Torvalds. What do you have to show?
- ernst_klim 8y ago>Yes. NOOO software with millions of installations. Except Go compilers. So the grand experience of Rob being the justification of Go's design is the Go compiler itself? Besides, Go compiler is ridiculous if you compare it to things like llvm, gcc, ghc, CompCert. >UTF-8 is one of the best designs I know. Not a software. >Unix is still around, despite its shortcomings 1) he didn't create Unix and 2) modern unix has pretty nothing in common with the bell labs unix. >I've never used it. So let's draw the conclusion: the enormous engineering background of Pike -- which tends to be a justification of Go's "suitable for real world apps not academic masturbation" design -- consists of writing a simplistic academic operating system nobody used (you included) and UTF-8 which is not even a software? That's big, but I'll stick to Ada or C++, languages with real industrial background.
- bunderbunder 8y agoSo, we would seem to have two key statements being pitted against each other here: 1. Rob Pike doesn't have a strong grasp of type theory. 2. Rob Pike is an accomplished programmer. To me, this conflict of opinions is structurally indistinguishable from 1. That shape over there is a square. 2. That shape over there is blue. IOW, there is no argument to see here.
- overcyn 8y agoNo the two conflicting statements are. 1. Go doesn't have generics because the authors didn't have strong grasp of type theory. 2. Go doesn't have generics, not from a lack of knowledge, but because the authors' real world software engineering experience had shown to them it wasn't important.
- jstimpfle 8y agoWell that was what I was trying to say anyway. Thanks for clarifying!
- bunderbunder 8y agoYeah, the second statement is also valid, though definitely not what I got from the parent's comment. Though, in that case, I think the argument is more like: 1. That shape is equilateral 2. That shape is equiangular It turns out it's a square. Rob Pike's public comments on the subject do seem to betray a weak grasp of actual type theory. Or at least one that is about as strong as it could ever get if your knowledge is primarily informed by practical experience with C++ or Java-style deeply broken type systems. But it's also true that Go's found an alternative approach that gets the job done. Or at least, gets the job done if you're writing the types of programs that he's writing. So, even with the alternative statement, I still see no argument here.
- deleted 8y ago[deleted]
- overcyn 8y ago
- cannabis_sam 8y agoHis well-deserved reputation makes me interested in listening to what he has to say, but you have to evalute anyone’s idea on its own merits. I think there is a tendency to create an unneccessary barrier between ”real-world” software and ”useless” academic theory. I’ve spent most of my career working with java, php, python and js, and I absolutely agree with Rob that class hierarchies and inheritance is a bad way to program, but there’s a lot more to types than oop type systems with limited type inference. It’s of course always a trade off, which is why I build frontends in Elm, backends in Haskell and play with proofs in Agda, but why throw away types altogether?
- ernst_klim 8y ago>about the software that runs the world Software that runs the world utilizes parametric polymorphysm in C++, Java, Ada, D, Swift, OCaml, Haskell etc, hell, even C [1]. I also tend to consider some mission critical Ada/C++ software a real engineering, not some webshit. [1] https://github.com/jiixyj/libebur128/blob/master/ebur128/ebur128.c#L610 https://github.com/jiixyj/libebur128/blob/master/ebur128/ebu...
- jstimpfle 8y agoAnd [1] actually makes a point that we don't need language support for every imaginable use case (maybe not even Generics). It's not a problem to work around a "missing" feature, sometimes.