13 ms·
I think we can all agree that whenever Rust comes up there's a high amount of "I like to program in C/C++ and don't plan to change, thankyouverymuch"-style comm
by tormeh 2y ago
I think we can all agree that whenever Rust comes up there's a high amount of "I like to program in C/C++ and don't plan to change, thankyouverymuch"-style comments. Was there a similar backlash against the rise of Java, Swift, Kotlin, or TypeScript? Or is this somehow a unique case? Nothing is new under the sun and all that, but I can't remember similarly animated discourse before.
- surgical_fire 2y agoI think it is a special case because the Rust people is especially annoying in their evangelism. I remember a degree of pushback on FP, because the people that were into things such as Haskell and Scala were a little annoying with their desire to add FP everywhere too. My takeaway is that annoying evangelists get a level pushback similar to how annoying they are.
- vlovich123 2y agoOne could make the argument that the rust people had to become annoying evangelists because otherwise the default is still pushback from c/c++ folks that don’t want changes.
- hu3 2y agoIt's more than that because rust evangelists often preach replacing GC'd languages with rust in cases where it is not the best fit (mundane web dev for example). So it's not only about C/C++.
- timschmidt 2y agoPart of the magic of learning Rust is realizing that it's a fast compiled language that one doesn't fear to apply to services connected to the open internet. This is so unusual, it may be unique. And I think that leads to a lot of experimentation and application of the language to the sorts of problem which typically receive attention in memory safe languages, but not compiled languages. Rust, by definition, straddles both.
- hu3 2y ago> Part of the magic of learning Rust is realizing that it's a fast compiled language that one doesn't fear to apply to services connected to the open internet. This is so unusual, it may be unique. Is that sarcasm? If not, thanks for proving my point. From the top of my head, Go/.NET/Java are fast and safe choices. Also safe in the sense that you won't have a hard time hiring devs that are productive from the get go.
- timschmidt 2y ago> often preach replacing GC'd languages with rust in cases where it is not the best fit (mundane web dev for example). > proving my point. Was your point misunderstanding that garbage collection != memory safety? Having garbage collection doesn't make a language any better for web dev. Being memory safe does. If you do not understand the difference and needlessly associate the two, you are validating the work put in by the evangelists.
- hu3 2y ago> Was your point misunderstanding that garbage collection != memory safety? What?! You really think memory safety is binary? > Having garbage collection doesn't make a language any better for web dev. It does though. It's more ergonomic than fighting rust compiler and does add safety over manual memory management from the likes of C/C++. I just want to thank you for demonstrating so clearly how rust evangelists think.
- timschmidt 2y ago> What?! You really think memory safety is binary? Not sure why you'd assume that. The languages you offered are only as memory safe as their runtimes, which are usually implemented in something C flavored, and the compiler for same. Rust identifies memory unsafe areas instead with the unsafe tag. Functionally equivalent but I know which I like more. > It does though. It's more ergonomic and does adds safety over manual memory management. This is the misunderstanding. Rust manages to be wonderfully ergonomic without GC. The type system is really the only thing that makes it wordier than C++. And I've written large Rust applications with no manual memory management whatsoever. Occasionally I'll have to wrap something in an Arc Mutex because something needs to run in another thread. One or two variables in a whole application. Your complaints apply to other languages.
- tormeh 2y agoI think Rust is a good fit for webdev, if you have programmers who already know or actively want to learn Rust, and if you don't need libraries not available for Rust. Admittedly those are some big caveats, but better latency and throughput are never bad things. The lack of GC is not actually a problem once you have internalized the rules of the borrow checker. The only big problem I see with Rust that makes it a bad fit for webdev is the young ecosystem. The compile times are not great, but I don't think that's a significant issue when writing APIs.
- EasyMark 2y agoOr they could just carry on with their preferred language and not start shaming the shame bell until you repent your ungodly c++ ways. I think we have to consider both sides, weigh the languages and costs, including cost of writing a new code base and training new programmers.
- germandiago 2y agoI do want changes in C++, but believe me, the Safe C++ proposal (a copy of Rust typesystem on top of C++) that was sent to WG21 is not the push I would like for safety in C++ for reasons beyond the scope of Rust.
- kobalsky 2y agowe gotta admit that not using, let's say screwdrivers, because some annoying people made a silly religion around them calls for some introspection.
- surgical_fire 2y agoExcept all languages are screwdrivers in this analogy. However, There here are some immensely annoying people (just see other replies here) that can't fucking shut up about how their screwdriver of choice is better.
- kobalsky 2y agothe point is that if some screwdriver is objectively better (doesn't snap and takes your eye off when you make a mistake) then the decision to use it shouldn't be affected by who recommends it.
- surgical_fire 2y ago> objectively better Except it is not. As any other language, it has many potential upsides and downsides in picking it depending on the context. This lack of nuanced thinking from evangelists is precisely why some people just prefer to shut it off entirely.
- orf 2y agoSo what you’re saying is: I like to program in C/C++ and don't plan to change, thankyouverymuch?
- surgical_fire 2y agoNo. I am saying that depending on the context I might pick Go. Or Java. Or Python. Or Node. Or C#.
- germandiago 2y ago
- kccqzy 2y agoA lot of times they are the same people. The Haskell community really isn't as active as it was five or even ten years ago, and many of those Haskell evangelists became Rust evangelists. Some people are just attracted to using the most "advanced" language (for whatever definition of "advanced" that's in vogue) and some of them are extremely vocal about that.
- tome 2y agoThe Haskell community is admittedly less active in promoting niche concepts like zygohistic prepomorphisms, but much more active in building out a solid ecosystem. You won't hear much about the latter because it isn't shiny and weird.
- kccqzy 2y agoHow has the ecosystem become more solid in recent years? All of the important Haskell libraries I use were initially released eight years ago or before then. While I personally don't like people promoting niche concepts as well (I'd rather have them promote building out a solid ecosystem as you say), I still feel the "brain drain" out of the Haskell community.
- tome 2y ago* We now have ghcup, a solid way to install Haskell (inspired by rustup, I believe). It used to be that you got access to one GHC package from your Linux distribution if you were lucky, otherwise you had to install manually from a bindist. * We now have HLS, which integrates superbly with VS Code (it's also fine in Emacs and I guess in other editors, but I don't know). It can be flaky on large codebases, but it's a big step up from what we had before (which was almost nothing). * GHC and bundled libraries have a much higher degree of API stability. In fact in the last 18 months there has been minimal breakage due to new GHC releases[1]. Community libraries are a bit more of a mixed bag, but there's much more awareness in the community that continual API breakage churn is harmful for adoption. * We now have the Haskell Foundation[2] supporting all sorts of critical ecosystem activity behind the scenes, and helping people work together harmoniously. There used to be extremely fraught and unpleasant interpersonal battles in the community. Those are a thing of the past. * We now have solid effect systems (Bluefin[3] and effectful) that combine the best of the transformers world (build effects from components, type safety, handle effects and remove them from the type) and the IO-based world (predictable performance, resource safety, escape hatches). I'm willing to boldly claim that effects are no longer a problem in Haskell. I'm in the same boat as you: I don't use particularly man new libraries. Is that a problem? I'm given to understand that in the Java world that's called "Monday". Sure, I would have liked it if certain community members had stayed more active, but I don't feel I'm missing anything in particular. (That may just be to do with what I work on.) What are you missing? [1] See * https://github.com/tomjaguarpaw/tilapia/blob/master/breakage-inventory-ghc-9.8.md https://github.com/tomjaguarpaw/tilapia/blob/master/breakage... * https://github.com/tomjaguarpaw/tilapia/blob/master/breakage-inventory-ghc-9.10.md https://github.com/tomjaguarpaw/tilapia/blob/master/breakage... [2] Disclaimer: I'm the vice chair [3] Disclaimer: I'm the effect system author
- tormeh 2y agoI was one of the people that were really enthusiastic about Scala. But back then even as an enthusiast I had to admit Scala had a lot of drawbacks. Every bad thing inherited from Java, to start, and the leaky abstractions that forced, as well as the learning curve. Maybe the worst part was how easy Scala made it to write completely unintelligible code. Scala could effortlessly tap into the Java ecosystem, though. Rust is much easier to recommend than Scala ever was. Rust's ecosystem is a bit smaller than you'd typically like, but that's a temporary problem.
- germandiago 2y ago> I think it is a special case because the Rust people is especially annoying in their evangelism I would say that what is bad about this is like they seem to think there is no other way. There is "the true Rust way" and after that, the others. At least I got that attitude, because when claims have been done about why the only path to Safe C++ is to copy Rust and I question it, they reply as "what you say is impossible" and I show them there are ways, then they move the attack somewhere else, even I have been accused of "wasting their time"...
- leetharris 2y ago> Was there a similar backlash against the rise of Java, Swift, Kotlin, or TypeScript? Absolutely. Swift was hated because it lacked so much Objective-C functionality at launch, Kotlin got a similar "Java is fine" reaction, and Typescript got a "why add more complexity we don't need" reaction. This is just the way of things. The most hated languages are some of the most used ones (Javascript, PHP, Python, etc).
- glhaynes 2y agoIt's trite at this point but very apropos: "There are only two kinds of languages: the ones people complain about and the ones nobody uses." — Bjarne Stroustrup (Applies to much more than just languages!)
- ess3 2y agoReminds of a quote about Van Morrison: There are two types of people. The people that like Van Morrison and the people that have met him
- hn_throwaway_99 2y agoThis seems like a lot of revisionist history to say Swift was "hated". Sure, there were, some naysayers, but just look at the original Swift announcement from Apple. There were hoops and hollers of joy because everyone knew how problematic Objective-C was.
- germandiago 2y ago> The most hated languages are some of the most used ones (Javascript, PHP, Python, etc). Mandatory quote: "There are only two kinds of languages: the ones people complain about and the ones nobody uses". -- Bjarne Stroustrup
- cogman10 2y agoI was alive during the rise of Java and it absolutely got a high amount of "Look at this piece of garbage" style comments. Particularly, people were VERY critical of how slow java was and how much memory it consumed. There was also a fair bit of critique about the lack of language features. For example, java eschewed generics for a long time (not unlike go) which really irked people. It was very much seen as a more verbose C++ with few benefits.
- orbisvicis 2y agoI always thought that Java generics inspired python ABCs and later type interfaces.
- maleldil 2y agoWhat do Java generics have to do with Python's abstract base classes?
- orbisvicis 2y agoHmm sorry I meant Java interfaces, which makes this comment irrelevant and also I can't find the original supporting article - it might have just been an opinionated blog post.
- hn_throwaway_99 2y ago> Particularly, people were VERY critical of how slow java was and how much memory it consumed. To be fair, those were totally valid criticisms before HotSpot got really good. IIRC, way back in the day Corel said they were going all in on Java for their software suite, and they eventually abandoned it due to performance.
- hinkley 2y agoIt’s possible to write fast Java and one of the cornerstones of my early career was proving it. But I’d also spent a lot of time thinking about performance already before finding Java. A lot of people fully embraced the abstract nature of it while I kept it at arm’s length. I fixed a lot of really dumb mistakes, and a lot of things that were subtly wrong but with large consequences.
- orbisvicis 2y agoI remember a bunch of languages discussed alongside typescript, such as coffeescript, toffeescript, purescript, etc. the consensus was that typescript was the worst of the bunch.
- matthewfcarlson 2y agoWhich is funny, given the rise of typescript relative to many of the other languages you listed
- ngrilly 2y agoI don’t remember this.
- BurningFrog 2y agoI always keep in mind that the product with the most complaints is usually the most used one. Not because it's the worst, but because more people use it, and because it's the one people have to use even though they don't like it.
- whatever1 2y agoEvery C/C++ coder thinks that they are good at memory management. Just look at the endless flame wars on garbage collection. We just need to admit that we suck at it.
- codemac 2y agoLet's also admit every language before Rust hasn't succeeded at out right replacing the vast majority of C/C++, so it becomes it's own form of conservatism/bias. This post is coming from one of the few companies that actually does complete large scale rewrites of things. I'm curious/excited to see how it goes for them. And I have that C/C++ bias: I don't enjoy programming in rust as much as I do C, but I don't like doing lots of new things.
- fiedzia 2y ago> Let's also admit every language before Rust hasn't succeeded at out right replacing the vast majority of C/C++, Many languages expelled C/C++ from the domains they were once kings of entirely. It used to be "the language" for many, many things.
- pjmlp 2y agoThere is hardly that much C and C++ left on GUI frameworks and distributed computing, other than existing infrastructure from projects that are decades old.
- hinkley 2y agoThe amount of “we have garbage collection at home” from the C and C++ communities during the rise of Java is a big part of my hatred of C++. That and watching classmates spin out in C++ classes in college.
- germandiago 2y agoThere is RAII and it works well most of the time. Saying C/C++ denotes your poor understanding of C and C++, which are usually quite different in style and with very different safety characteristics regarding to code written in good style.
- abofh 2y agoJava yes over JVM/bytecode, the rest were all largely interpreted languages and so the discussion focused on if an interpreted language could ever compare to a compiled one. But much as there's an indignity to something compiling to JS or your own preferred VM, people were convinced that memory allocation/GC is the reason they got a job and tended to object accordingly - so there was fight against that. Rust is treated by the hard-core C-ists as an affront to their ability to manage memory safely. Go look up early go vs C (or C#, D) - it had its own animated themes, but this was before GG went fucky with its own open source stuff so there was an air of 'google is trustworthy' in those discussions. TLDR: Yes.
- ngrilly 2y agoThere was no backlash against Java, Swift, Kotlin and TypeScript because they are all GCed languages. You don’t need to learn anything to use them, and it’s not constraining much how you write your code. Rust is very different in that regard. You need to learn about memory ownership and borrowing, and it requires an effort and also constrains your design. I think that explains the (limited but real) backlash.
- pjmlp 2y agoHappily slowly replacing C and C++ on GUI development and distributed computing systems for the last 20 years. And yes there has been enough anti-GC hate and FUD from those that think all automatic resource management systems are born alike.
- ngrilly 2y agoYou’re right, I forgot about the skepticism GCed languages initially faced.
- plorkyeran 2y agoWhen Swift first came out there was a subset of obj-c developers who hated Swift’s take on Optional. In obj-c you can freely send messages to nil and it just returns nil. In Swift you have to explicitly mark if a value is optional and handle it being nil if so, and even though this often means adding just a single character (foo?.bar), there were people who thought that Swift was just making things more complicated for no benefit.
- bmoxb 2y agoI'll admit that there are certain patterns/data structures/etc. that are awkward to implement in Rust, but to write good C++ you are essentially required to think about ownership and lifetimes to some degree anyway (despite the greater lenience awarded compared to Rust and the lack of static checking). For anyone familiar with modern C++, I don't think that the shift in mental model should be too huge so the degree of backlash surprises me somewhat.
- joenot443 2y agoA lot of younger devs wouldn't remember, but when Swift 1.0 came out it was pretty widely disliked and grumbled about. It was years before companies started using it in production and years after that before it became the preferred option. I recall an internship where the management-motivated rule of "All new classes MUST be made in Swift" being met with a lot of backlash. I recall working with greybeard types who found ARC to be a little sugary and pined for the days of NSAutoReleasePool. I think this is just a natural cycle of aging builders and their tools, I imagine it predates us all. These days I pretty frequently find myself frustrated with SwiftUI and wishing I'd just stuck with UIKit, but alas, time waits for no man.
- SatvikBeri 2y agoThere was definitely similar backlash against Python, with a lot of people calling it not "real" programming
- hardwaregeek 2y agoI do think there's a bit of the Ignaz Semmelweis[1] issue at hand here, where developers want to believe in their inherent quality and refuse processes that improve safety if it goes against their worldview. Also, no other language has really posed an existential threat to C/C++ developers. Other languages have narrowed the pool, but Rust is the first to really be a possible replacement. Now, there's no real chance that Rust will actually replace C/C++ in the near future, but even the threat can be a huge concern. [1]: https://en.wikipedia.org/wiki/Ignaz_Semmelweis https://en.wikipedia.org/wiki/Ignaz_Semmelweis
- germandiago 2y ago> I do think there's a bit of the Ignaz Semmelweis[1] issue at hand here, where developers want to believe in their inherent quality and refuse processes that improve safety if it goes against their worldview I think the problem is that other variables (not only safety) must be assessed beyond the pure "better". Haskell is very good also. Very correct. Who uses that, and where? And why? Why not everyone uses https://dafny.org/ https://dafny.org/ ?
- hinkley 2y agoGod yes. The C and C++ people would not shut the fuck up about how one could do X and Y in their languages - including garbage collection. You didn’t need Java for that. Small problems are immediatly obvious in these sorts of replies. Hard to use off the shelf modules if they don’t all use the same memory management replacements. To be fair third party code by volume was in languages like Python or Java. Hard to miss what you haven’t experienced firsthand.
- marcosdumay 2y agoThose other languages were universally met with the "real programmers code in C or C++" defense. The problem here is that is doesn't work with Rust.
- fiedzia 2y agoI recall early Java having appetite for memory that hardware often could not satisfy (on a x86 desktop, it is of course still true for many microcontrollers). Also I read a story of a developer resisting move from hand-written assemby to C, to which company owner replied "you can write your assembly, but not for my money". So nothing new, though some languages get a lot more resistance than others.
- deleted 2y ago[deleted]
- valbaca 2y ago> Was there a similar backlash against the rise of Java, Swift, Kotlin, or TypeScript? Absolutely and STILL TO THIS DAY.
- Tainnor 2y agoThere are 1-2 people here on HN that routinely shit on Kotlin any time it's even tangentially related to the topic at hand.
- JackSlateur 2y agoWell, yes, probably I code on my free time because I enjoy doing so. I find C to be fun (even if I suck at it) Doing boring thing (or things I do not want to) is called work
- t8sr 2y agoThe culture around Rust is perfectly calibrated to set off middle-aged C/C++ developers. 1) It's very assertive without having a lot of experience or a track record. 2) It's extremely online, filled with anime references and Twitter jokes, obsessed with cuteness, etc... 3) It's full of whipper-snappers with 6 months of experience who think they can explain your job to you, who have been doing it for 30 years. IME many arguments around Rust aren't focused on its technical properties, but boil down to "I just plain don't like you people." If Rust can successfully become "boring", a lot of the opposition will go away.
- germandiago 2y agoI faced really strong criticism lately for criticizing (in the context of C++) a Safe C++ proposal that basically copies Rust into C++. With all good and bad things this entails. It seems there is a push from some people (that I hope it is not successful in its current shape, I personally find it a wrong approach) to just bifurcate C++ type system and standard library. More context here if you are curious: https://www.reddit.com/r/cpp/comments/1g41lhi/memory_safety_without_lifetime_parameters/ https://www.reddit.com/r/cpp/comments/1g41lhi/memory_safety_... What I found a lot of is literally, intellectual dishonesty in some of the arguments to push in that direction. Not that it is not a possible direction, but claims like: "there is no other way", "it is the only feasible solution", etc. without exploring other alternative, from which Swift/Hylo value semantics/subscripts (subscripts is basically controlled references for mutation without a full borrow checker) and adding compile-time enforced law of exclusivity semantics without a new type system are possible (and better, IMHO) alternatives... well, you can see the thread. There seems to be a lot of obsession as "the only right way is the Rust way" and everything else is directly discardable by authors and some people supporting them. I think there are a lot of strong feelings there.