8 ms·
On Rust Hate-Writing
- steveklabnik 11y agoWonderful as always.
- kibwen 11y agoFor those lacking context, these remarks from Graydon are likely a response to the following post which has been trending today, though it didn't get much traction on HN: http://www.viva64.com/en/b/0324/ http://www.viva64.com/en/b/0324/ (with some comments at https://www.reddit.com/r/rust/comments/35pn5a/criticizing_the_rust_language_and_why_cc_will/ https://www.reddit.com/r/rust/comments/35pn5a/criticizing_th...).
- steveklabnik 11y agohttps://news.ycombinator.com/item?id=9531822 https://news.ycombinator.com/item?id=9531822
- MichaelGG 11y agoHeh. "People are idiots" ... "C++ doesn't restrict programmers". Seriously though, the article was just negative with not a whole lot of real points. It's also amusing to see C++'s more and more convoluted codegen (see the VS2015+ObjV video) to make up for fundamental mistakes users keep making no matter what. I can see how this might be discouraging, but I'd take it as a good thing if a poor rant is all they got.
- rational_indian 11y agoAwesome post! A minor typo in the first paragraph: change Each to Every.
- derefr 11y ago> Technical and human pluralism enriches the world. Monocultures do not. Unlike human culture, tech cultures can't communicate to enrich one-another. (The people in them can, but this is a different thing.) To explain what I mean: you can't import a Ruby library into a Python program. You can import a C library in a Rust program, or vice-versa—but that's a special case. Even then, you can't write a patch for a C library in Rust, or vice-versa, because the original maintainers of the library you want to contribute to are only going to accept contributions in languages they understand and can maintain directly. I really believe that fixing this—decoupling "runtime/platform" from "language semantics", and "language semantics" from "syntax"—is the single most important thing that will happen in software engineering in the next 20 years. Imagine a program somewhat like go-fmt(1), that would run on checkout of a source repo, to transform a base-level AST into the syntactic representation of your choice, and pattern-match-decompile any low-level statements with high-level "shape" into the macro-statements in your chosen language that would generate them[1]. Imagine every library being not only available in every language, but able to be contributed to by programmers who know any language. Etc. The result would be, in one sense, a "monoculture"—a single ecosystem of libraries, rather than 12 ecosystems between the CRT, the JVM, the CLR, the Erlang VM, etc. But it wouldn't disallow competition between versions of said libraries—just allow obvious winners to win once-and-for-all, instead of limiting their success to their technological "country of citizenship." --- [1] Or, better yet, a FUSE server where an underlying directory of AST files gets mounted as syntaxified files. Much cleaner from the rest of the toolchain's perspective.
- stormbrew 11y ago> Imagine a program somewhat like go-fmt(1), that would run on checkout of a source repo, to transform a base-level AST into the syntactic representation of your choice, and pattern-match-decompile any higher-level structures into the macro-statements in your chosen language that would generate them[1]. People have been imagining this for a long time, and realistically it isn't even all that hard to do. But the result of this would, honestly, probably be about as useful as running Shakespeare through google translate to Chinese and back again [1]. Code is communication, and like all communication it has nuance. It is absolutely not clear that programming as we understand it, without a massive paradigm shift in the entire field, can really work with all that nuance stripped out. [1] https://translate.google.ca/?ie=UTF-8&hl=en&client=tw-ob#zh-CN/en/%E7%94%9F%E5%AD%98%E9%82%84%E6%98%AF%E6%AF%80%E6%BB%85%EF%BC%8C%E9%80%99%E6%98%AF%E5%B0%87%E4%BB%A5%E4%B8%8B%E5%95%8F%E9%A1%8C%0A%E7%84%A1%E8%AB%96%E9%80%99%E6%98%AF%E4%B8%80%E4%BB%B6%E5%9C%A8%E5%BF%83%E4%B8%AD%E5%B4%87%E9%AB%98%E7%9A%84%E5%8F%97%E8%8B%A6%0A%E5%90%8A%E7%B4%A2%E5%92%8C%E9%9B%A2%E8%AD%9C%E8%B2%A1%E5%AF%8C%E7%9A%84%E7%AE%AD%EF%BC%8C%0A%E6%88%96%E6%8E%A1%E5%8F%96%E6%AD%A6%E5%99%A8%E5%8F%8D%E5%B0%8D%E9%BA%BB%E7%85%A9%E7%9A%84%E6%B5%B7%E6%B4%8B%EF%BC%8C%0A%E9%80%9A%E9%81%8E%E9%AC%A5%E7%88%AD%EF%BC%8C%E6%9C%80%E7%B5%82%E4%BB%96%E5%80%91%EF%BC%9F%E6%AD%BB%EF%BC%8C%E5%B0%B1%E6%98%AF%E7%9D%A1%E7%9C%A0%20-%20%0A%E4%B8%8D%E5%86%8D%3B%E9%80%9A%E9%81%8E%E7%9D%A1%E7%9C%A0%EF%BC%8C%E8%AA%AA%E6%88%91%E5%80%91%E7%B5%90%E6%9D%9F%0A%E5%BF%83%E7%97%9B%EF%BC%8C%E4%BB%A5%E5%8F%8A%E5%85%B6%E4%BB%96%E7%84%A1%E6%95%B8%E8%87%AA%E7%84%B6%E8%A1%9D%E6%93%8A%0A%E9%80%99%E6%98%AF%E8%82%89%E9%AB%94%E7%9A%84%E7%B9%BC%E6%89%BF%E4%BA%BA%EF%BC%9F%20'%E6%8F%90%E6%96%AF%E4%B8%80%E5%80%8B%E5%9C%93%E6%BB%BF%0A%E8%99%94%E8%AA%A0%E8%A6%81%E7%A5%9D%E6%84%BF%E3%80%82%E6%AD%BB%EF%BC%8C%E7%9D%A1%E8%A6%BA%EF%BC%8C%0A%E7%9D%A1%E8%A6%BA%EF%BC%8C%E5%81%B6%E7%88%BE%E5%81%9A%E5%81%9A%E5%A4%A2%3B%E6%98%AF%E5%91%80%EF%BC%8C%E9%82%84%E6%9C%89%E6%93%A6%EF%BC%8C%0A%E5%B0%8D%E6%96%BC%E6%AD%BB%E4%BA%A1%E7%9A%84%E7%9D%A1%E7%9C%A0%EF%BC%8C%E7%BE%8E%E5%A4%A2%E6%88%90%E7%9C%9F%EF%BC%8C%0A%E7%95%B6%E6%88%91%E5%80%91%E6%93%BA%E8%84%AB%E4%BA%86%E9%80%99%E5%80%8B%E5%A1%B5%E4%B8%96%EF%BC%8C%0A%E5%BF%85%E9%A0%88%E7%B5%A6%E6%88%91%E5%80%91%E5%81%9C%E9%A0%93%E3%80%82%E9%82%84%E6%9C%89%E7%9A%84%E5%B0%8A%E9%87%8D%0A%E9%80%99%E4%BD%BF%E5%BE%97%E7%94%9F%E6%B4%BB%E5%A6%82%E6%AD%A4%E9%95%B7%E7%9A%84%E7%81%BD%E9%9B%A3%EF%BC%9A%0A%E8%AA%B0%E9%A1%98%E6%84%8F%E5%BF%8D%E5%8F%97%E6%99%82%E9%96%93%E7%9A%84%E9%9E%AD%E5%AD%90%E5%92%8C%E8%94%91%E8%A6%96%EF%BC%8C%0A%E5%A3%93%E8%BF%AB%E8%80%85%E7%9A%84%E9%8C%AF%E8%AA%A4%EF%BC%8C%E9%A9%95%E5%82%B2%E7%9A%84%E7%94%B7%E4%BA%BA%E7%9A%84%E5%87%8C%E8%BE%B1%EF%BC%8C%0A%E9%84%99%E8%A6%96%E6%84%9B%E6%83%85%E7%9A%84%E7%97%9B%E8%8B%A6%EF%BC%8C%E6%B3%95%E5%BE%8B%E7%9A%84%E5%BB%B6%E9%81%B2%EF%BC%8C%0A%E8%BE%A6%E5%85%AC%E5%AE%A4%E7%9A%84%E5%82%B2%E6%85%A2%EF%BC%8C%E4%BB%A5%E5%8F%8A%E6%91%92%E6%A3%84%0A%E5%8D%91%E5%BE%AE%E7%9A%84%EF%BC%8C%E7%97%85%E4%BA%BA%E7%9A%84%E5%84%AA%E9%BB%9E%E9%9C%80%E8%A6%81%EF%BC%8C%0A%E7%95%B6%E4%BB%96%E8%87%AA%E5%B7%B1%E4%B9%9F%E8%A8%B1%E4%BB%96%E5%81%9A%E7%9A%84%E6%B8%85%E6%AC%A0%E6%94%B6%E6%93%9A%0A%E8%88%87%E8%A3%B8%E9%8C%90%E5%AD%90%EF%BC%9F%E8%AA%B0%E4%B9%9F%E4%B8%8D%E7%94%98%E5%BF%83%EF%BC%8C%E5%91%BB%E5%90%9F%EF%BC%8C%0A%E7%82%BA%E4%BA%86%E5%92%95%E5%9A%95%E5%92%8C%E6%B1%97%E6%B0%B4%E4%B8%8B%E7%96%B2%E6%86%8A%E7%9A%84%E7%94%9F%E6%B4%BB%EF%BC%8C%0A%E4%BD%86%E6%98%AF%EF%BC%8C%E9%80%99%E6%9D%B1%E8%A5%BF%E5%BE%8C%E6%AD%BB%E4%BA%A1%E7%9A%84%E6%81%90%E6%87%BC%EF%BC%8C%0A%E6%9C%AA%E4%BE%86%E4%B9%8B%E5%9F%8E%EF%BC%8C%E5%BE%9E%E4%BB%96%E7%9A%84%E5%A2%83%E7%95%8C%0A%E6%B2%92%E6%9C%89%E5%9B%9E%E5%A0%B1%E6%97%85%E5%AE%A2%EF%BC%8C%E6%8B%BC%E5%9C%96%E7%9A%84%E6%84%8F%E5%BF%97%EF%BC%8C%0A%E8%80%8C%E4%B8%94%E4%BD%BF%E6%88%91%E5%80%91%E5%AF%A7%E9%A1%98%E5%BF%8D%E5%8F%97%E7%9B%AE%E5%89%8D%E7%9A%84%E5%BC%8A%E7%97%85%EF%BC%8C%0A%E6%AF%94%E9%A3%9B%E5%88%B0%E5%88%A5%E4%BA%BA%E6%98%AF%E6%88%91%E5%80%91%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84%E3%80%82%0A%E9%A1%A7%E6%85%AE%E5%B0%B1%E4%BD%BF%E6%88%91%E5%80%91%E9%83%BD%E8%AE%8A%E6%88%90%E4%BA%86%E6%87%A6%E5%A4%AB%EF%BC%8C%0A%E5%88%86%E8%BE%A8%E7%8E%87%EF%BC%8C%E5%BE%9E%E8%80%8C%E5%8E%9F%E4%BD%8F%E6%B0%91%E8%89%B2%E8%AA%BF%0A%E6%98%AFsicklied%E7%9A%84%E5%85%89%E5%BD%A9%EF%BC%8C%E8%88%87%E8%92%BC%E7%99%BD%E6%8A%95%E6%80%9D%E6%83%B3%EF%BC%8C%0A%E5%92%8C%E5%81%89%E5%A4%A7%E7%9A%84%E9%96%93%E8%B7%9D%E5%92%8C%E5%8A%9B%E7%9F%A9%E7%9A%84%E4%BC%81%E6%A5%AD%EF%BC%8C%0A%E6%9C%89%E4%BA%86%E9%80%99%E6%96%B9%E9%9D%A2%E4%B9%9F%E6%9C%83%E9%80%86%E6%B5%81%E8%80%8C%E9%80%80%EF%BC%8C%0A%E5%A4%B1%E5%8E%BB%E4%BA%86%E8%A1%8C%E5%8B%95%E7%9A%84%E5%90%8D%E7%A8%B1%E3%80%82 https://translate.google.ca/?ie=UTF-8&hl=en&client=tw-ob#zh-...
- nemothekid 11y ago"There are 2 types of programming languages, those everyone complains about and those nobody uses..." I look forward to Rust's version of "Go sucks because Generics"
- zamalek 11y agoHoly hell that title. When did critique become "hate-writing?" I do mostly agree with the article, though. > If the person is spewing anger, try to minimize the harm done by that anger by either asking them to stop or removing yourself and others from observing or participating in it. The fact that this is thought of the original piece and that people need to be told not to get passionate about a tool is deeply worrying. > Imagine Rust was a kid you were sending to preschool. No it's not. It's a tool. The problem here is that people are attaching emotions to tools and code, as though they were their spouse or children. Emotions are an irrational/illogical process, programming is rational/logical - don't mix the two. Rust is doing just fine, some criticism levied against it is healthy. The tone of the criticism is completely irrelevant. Ignoring that hurtful criticism is merely going to do the beloved tool harm in the long run - no matter how much "<3" was put into it.
- commentnull 11y agoSomeone made the point yesterday, a good point I think, that the Go and Rust crowd would be better served by showing positive blogs and examples (i.e. Here is how to build a small app) rather than ones that serve only to whine and complain and bemoan C/C++. You don't win friends by criticism. As a seasoned C++ programmer, I am interested in Go and Rust, but not because a few ardent posters told me I have to.
- kibwen 11y agoWhere are these articles that whine and complain and bemoan C++? Here are all the recent articles from the Rust developers themselves: http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.ht... http://blog.rust-lang.org/2015/04/24/Rust-Once-Run-Everywhere.html http://blog.rust-lang.org/2015/04/24/Rust-Once-Run-Everywher... http://blog.rust-lang.org/2015/05/11/traits.html http://blog.rust-lang.org/2015/05/11/traits.html Each of these have been at the top of HN on the day of publication, they've been relatively hard to miss. None of them bemoan C++. In fact, they cite C++ as inspiration.
- 11y ago
- djhworld 11y agoThis happens whenever a Go post crops up on HN too, the amount of vitriol some people have over a language they evidently don't want/need to use is shocking.
- lukego 11y agoI am impressed with Rust in many ways. I briefly considered Rust when shopping for the right language for Snabb Switch [1]. I decided against it in part because the community did a good job of setting my expectations. "They" told me that Rust will especially appeal to hardcore C++ hackers, which is a very different profile to our target group of casual programmers. So I was able to move on quickly from a choice that really would not have suited me, with no ill will along the way. If for whatever reason I had been pressured to move ahead with Rust then I would have spent a lot of time swearing about the size and compilation time of LLVM, etc, before finally moving on to a tool that is better suited to the peculiar job at hand. So from my perspective that is great work by the Rust community - defining and communicating who the target user is - and now I would certainly consider Rust for other projects in the future. [1] http://lukego.github.io/blog/2012/09/25/lukes-highly-opinionated-programming-language-roundup-2012/ http://lukego.github.io/blog/2012/09/25/lukes-highly-opinion...
- tempodox 11y agoI don't cope well with light text on dark background because it hurts my eyes. And I haven't personally encountered Rust hate-writing yet, as the author describes it. Apart from that, I recommend this text to everyone. If you find yourself in a situation that feels conflict-shaped, read this text before you crawl up the walls. It's good advice.