From reading the abstract, it sounds like this addresses precisely the topic of "Worse is Better" [1]. There are frequent misunderstandings of this essay -- the argument isn't as coarse as "crappy software wins", or "release early and often". The tradeoff is: do you want a simple interface (MIT style) or a simple implementation (NJ style)? If you want a simple interface, you have to hide a bunch of complexity underne…
Go is a simple language, with 1970's features. It is very easy to implement, and leaves a lot of the complexity (null pointers, generics, etc) to the user instead of solving it in the language. This is a classic example of worse-is-better. An MIT-style language would be Rust, which indeed struggled to get to v1.0 and Go vs. Rust plays out quite similarly to what worse-is-better would predict.
Rob Pike: Simplicity Is Complicated [video]
101–110 of 152 posts
Re: Rob Pike: Simplicity Is Complicated [video]
#102Earlier quoted context omitted.
> This is a classic example of worse-is-better. C won over Lisp, not because “worse is better”, but because the C's advantages over Lisp (performance on cheap machines) were more pronounced than the other way around (“safety” achieved by means of lots of runtime checking - by no means was it possible to statically rule out errors). Lispers fancy their language of choice the pinnacle of computer science, but the falsi…
I agree with everything you said :) I also think Lisp is not truly "better" in the sense "worse-is-better" is ascribing. But if we suspend disbelief - then the Go vs. Rust story matches the one described in "Worse is better". Perhaps Rust will win out in the end and "worse is better" won't prevail. Despite liking the idea of Rust very much, I don't think it will.
Re: Rob Pike: Simplicity Is Complicated [video]
#103Earlier quoted context omitted.
Go is a simple language, with 1970's features. It is very easy to implement, and leaves a lot of the complexity (null pointers, generics, etc) to the user instead of solving it in the language. This is a classic example of worse-is-better. An MIT-style language would be Rust, which indeed struggled to get to v1.0 and Go vs. Rust plays out quite similarly to what worse-is-better would predict.
There isn't one language to rule them all. An advantage of Go over Rust is easier tooling due to a simpler language, an advantage of Rust is a richer type system. These are in opposition.
Re: Rob Pike: Simplicity Is Complicated [video]
#104Earlier quoted context omitted.
There isn't one language to rule them all. An advantage of Go over Rust is easier tooling due to a simpler language, an advantage of Rust is a richer type system. These are in opposition.
A richer type system is not in opposition to good tooling, quite the opposite. Rust's strong type system enables fantastic static analysis, which, for example, obviates the need for anything like Go's data race detector.
Re: Rob Pike: Simplicity Is Complicated [video]
#105I can't even begin to measure the amount of time I've wasted trying to make go code look as concise as what I can have trivially in C where things like macros and do { } while() are available. Instead of "simplicity" saving me time as Mr. Pike suggests, it leaves me dissatisfied with the results after wasting my time in attempts to prevent my dissatisfaction. This probably isn't an issue for someone new to programmin…
And as far as do and while go, why would you hide part of the state determining when you're loop exits at the end of the loop just to save a few lines at the top. I am going to naturally try to read your code from top to bottom not top to bottom to top. The more you make me skip around the longer it will take me to understand what you are doing. 90% of my job is maintaining code not writing new code. Programmers who write as if that isn't the case just make the long term cost of maintaining the software they write larger.
Re: Rob Pike: Simplicity Is Complicated [video]
#106Earlier quoted context omitted.
Which is hilarious given Google´s hiring processes. Any genius that is able to invert binary trees on whiteboards, count the balls on a vending machine, do a C++ compiler course, describe the random code in a magazine, .... Can surely cope with a modern programming language.
I think it was meant as jab on the audience and the general public, more like "Not even google engineers can appreciate a brilliant language, so who the hell you think you are?"
Re: Rob Pike: Simplicity Is Complicated [video]
#107Earlier quoted context omitted.
There isn't one language to rule them all. An advantage of Go over Rust is easier tooling due to a simpler language, an advantage of Rust is a richer type system. These are in opposition.
A richer type system is not in opposition to good tooling, quite the opposite. Rust's strong type system enables fantastic static analysis, which, for example, obviates the need for anything like Go's data race detector.
For Rust and Go the example I'm thinking of is rustfmt and gofmt.
Re: Rob Pike: Simplicity Is Complicated [video]
#108Earlier quoted context omitted.
A richer type system is not in opposition to good tooling, quite the opposite. Rust's strong type system enables fantastic static analysis, which, for example, obviates the need for anything like Go's data race detector.
Perhaps I should have said it's easier to write tooling. C++ has arguably very good tooling but creating it was difficult. For Rust and Go the example I'm thinking of is rustfmt and gofmt.
That said, if you're talking about source code formatters, I'm pretty sure that clang-format predates gofmt (and surely clang-format was not the first automatic source code formatter for C++). The coup for Go was that they got the community at large to standardize upon and champion gofmt, which is not something that C++ has ever matched.
Re: Rob Pike: Simplicity Is Complicated [video]
#109Earlier quoted context omitted.
A richer type system is not in opposition to good tooling, quite the opposite. Rust's strong type system enables fantastic static analysis, which, for example, obviates the need for anything like Go's data race detector.
One thing that can make tooling difficult in Rust are macros.
Re: Rob Pike: Simplicity Is Complicated [video]
#110Earlier quoted context omitted.
Perhaps I should have said it's easier to write tooling. C++ has arguably very good tooling but creating it was difficult. For Rust and Go the example I'm thinking of is rustfmt and gofmt.
Writing tooling for C++ is difficult because of how entangled all the language's features are (and its wonky grammar certainly doesn't help). In addition C++'s type system is probably even weaker than Go's, having inherited a lot of slop from C. That said, if you're talking about source code formatters, I'm pretty sure that clang-format predates gofmt (and surely clang-format was not the first automatic source code f…
How useful the extra tooling is, I don't really know.