7 ms·
Rust is a great language but it seems to attract plenty of "tech geek" people who don't really understand programming or CS beyond the surface and act zealot-li
by jbirer 4y ago
Rust is a great language but it seems to attract plenty of "tech geek" people who don't really understand programming or CS beyond the surface and act zealot-like over "insert current trendy tech". I think the curse of a complex language like Rust is that it attracts people who make it a part of their identity and develop cult-like behavior because it makes them feel smart and special. I hope a healthier community will develop around Rust overtime.
- beebmam 4y agoI don't understand why people care so much about these online faux-communities. A language or technology should be able stand on its own without a community. Rust can easily do that. It does for me. I couldn't care less about whatever culture war people are trying to inject into this.
- LAC-Tech 4y agoWell to play devils advocate; learning rust was pretty hard for me, definitely needed help from the community (readers may judge that it says more about me than rust if they wish).
- qwertox 4y agoI think his comment goes more in the direction of "Pythonistas" or "Rustaceans". When I coded in C/C++ about 15 years ago I never felt like a part of a "C" community, same the last 15 years I coded with Python (and Java), I'd never consider myself as a "Pythonista", even though I love the language and the effort everybody puts into making this language so useful as well as learnable. The Rust community is also really helpful and well structured in the sense that you know what to expect from a contribution (like a crate), but I'll never label myself as a Rustacean even if I'd start using Rust as my primary language. These "groups" seem strange to me, almost like a cult which I feel is out of place. Like a group of Americans learning and using the Italian language calling themselves "Italians" just to point out that they have a special relation to that language which others don't have. The analogy doesn't really work, because there are no such person's like born "Pythonistas", but it somehow illustrates the vibe these groups apparently want to irradiate. I love the languages for what they are, and the love and effort the communities put into them shows more through the language itself than through a label a community gives itself.
- lamontcg 4y agoYeah there was nowhere near as much of this tribalistic nonsense in the 90s. The millennial affinity to identity and tribalism, in general, is quite weird.
- djur 4y agoIf there is a trend toward identity and tribalism, it would be a pretty natural response to the midcentury trend toward isolated nuclear families and hyper-individualism. My recollection was that culture in the '90s was actually quite obsessed with "tribes" and identity as a direct reaction to the dog-eat-dog '80s.
- heavyset_go 4y agoI see it as more of a deliberate community building choice, one that we've seen for decades and one that's more popular now than ever, I'd argue, and not some "millennial" propensity towards tribalism. Every brand/product/service/etc is trying to create communities around themselves, with fan clubs, VIP memberships, social media groups, email lists, Zoom/in-person conferences/webinars, etc. It used to be you had to have a ton of reach and value to pull those off before the internet, now every project has marketing and social media people doing the same thing online.
- lostdog 4y agoReally? I know it was mostly 2000s, but a lot of Paul Graham's writing was about how great Lisp is [1]. It also sounds like the C versus C++ arguments were wild too if Linus is still riled up about it. [1] http://www.paulgraham.com/iflisp.html http://www.paulgraham.com/iflisp.html
- lamontcg 4y agoI used to program Perl and C on various *nix systems in the 90s. I wasn't a Perlist or C-ist or Unix-ista. I didn't need to hate Macs and Windows and C++ as part of my identity.
- pjmlp 4y ago
- tialaramex 4y agoCulture eats strategy for breakfast [edited, this used to say lunch because I'm tired and should go to bed] Rust's safety in practice is a cultural phenomenon. For example, you could (using "unsafe") write an implementation of Index for your Rust type which has the exact same unsafety as the typical C++ operator[]. In Rust the community will insist your type is broken, an unsafe Index is wrong, whereas in C++ most of the community would see that as fine, why should operator[] be safe? After all the standard library's types behave this way. Culture is the only difference here. So, in fact culture is crucial to Rust's success. Now, you could try to argue that it's unrelated, that there's this nice neat line between some cultural decisions like "Is it OK not to exhibit type safe behaviour?" and some other cultural decisions like "Is it OK to make racist jokes in my documentation?" but turns out that wherever you think that line "obviously" goes lot of people disagree and you're going to spend all your time fighting about that if you insist it's real.
- dwohnitmok 4y agoThis is something that I wish more designers of programming languages paid attention to. We often say that programming languages succeed or fail based entirely on social factors, but I don't think that we always fully internalize what that means. Given how important the programming culture surrounding a programming language is to determining how day-to-day usage of the programming language actually plays out, programming language features should not only be judged on their technical pros and cons, but also on the kind of culture that they tend to promote, which is very much an extrinsic, social thing. There are certain features that tend to draw in certain kinds of programmers and repel other kinds of programmers. Those programmers will in turn pull in all sorts of other technical baggage that has a variety of other technical knock-on effects. Hence when creating a new programming language, we should think carefully about what kind of culture certain programming language features promote and what kinds of programmers those features would attract and repel, because those can ultimately twist the programming language in ways far more influential than any of its original features.
- garbagecoder 4y agoI have nothing against the language and if it suits my purpose I will use it, and I have. But I don't want to use it for everything and I don't want to be told I should. For me it kinda either works or it doesn't. I'm not sure what kind of community it would take, like I dunno some programming language for racists or ISIS or something, but I don't think people should let it bother them. The Rust community reminds me a lot of Bitcoin. You cannot say anything without a reply-guy telling you why you're wrong, even if it's just something minor. I already see all kinds of "it's in the kernel" posts in here too. (Hint: it's "in the kernel" is actually an argument against its use for, say, the web--not for it.) This is just another instance of the tired cycle of people not understanding most problems in tech need evolution, even though the big things come from revolution. Just look at how mad people get about Apple's "forced obsolescence." You cannot start everything from scratch even for revolutionary gains. Are there revolutionary gains with Rust? Well, I don't think it should be that hard to make revolutionary gains over a language that's the same age as I am. It would probably be better if everything was written from the ground up, but unless AI does it for us, that's a lot of wasted man-hours. Apple still hasn't rewritten its entire stack in Swift, much less its kernel, and no one in the industry moves much faster than they do. I would definitely consider starting any PC-based project (Rust doesn't very many platforms) that I might have used C++ or C for in Rust. And I prefer to used either a very low level language or a very high level language or two together (e.g., asm libraries with Python) and maybe one day Rust will work for me for that, though it has a huge runtime too. Mostly that doesn't matter. I just try not to blame the language and it's good features for the obnoxious reply-guy cults that surround it. There are worse languages with good communities and definitely worse communities out there. But no, I don't want to rewrite my MODplayer from 1990 in Rust.
- mlindner 4y agoAs someone else who likes Rust quite a lot but has had a couple poor run-ins with 'The Rust Community™', I completely agree. A core part of 'The Rust Community™' seems to adopt extreme political viewpoints that act to alienate part of the population so I strongly say I love Rust but I try to ignore that 'The Rust Community™' even exists.
- deleted 4y ago[deleted]
- LAC-Tech 4y agoFWIW I was turned off by a lot of the rust evangelism but you dont have to search that far to find relatively normal rust communities now. It's big enough that it's no longer just the over enthusiastic writing it.
- deleted 4y ago[deleted]
- mlindner 4y agoI've observed the complete opposite. The people pushing for Rust are people who are highly experienced software engineers who have gone through a career of hardship because of memory unsafe languages and understand the tradeoffs. The "tech geek" doesn't even understand languages at all and so don't push any language at all. It's instead the mass of "programmers" who've spent their lives only using a single language like C or C++ who instead write comments from ignorance criticizing Rust by claiming it's just being pushed by "tech geeks". I'm not part of any Rust community. I've been out of university for almost a decade now and have been repeatedly burned by legacy C and C++ codebases causing bugs that take weeks to find because of their rarity and non-reproducibility that are inevitably memory corruption issues. If I could swing a magic wand and convert all C and C++ code to Rust I'd do it in an instant. (And I'm a pretty piss poor Rust programmer at the moment, and I'd still do it. I'd rather be learning something that would benefit my psyche and allow me to enjoy my job more.)
- Macha 4y agoI've seen as many of the tech geek stereotype where there's some level of masochistic appeal of C (especially C89) to them where "if it's hard and some people can't do it, then clearly it must be good and only for the best". Especially among hobbyists who've never had to maintain a production codebase or deal with changing user needs.
- mlindner 4y agoIndeed, the changing user needs aspect is inevitably the cause of so many memory corruption issues when old code, that's only really understood by that one or two grey beard still at the company and about to retire (or have already retired), needs to be changed. The change is put in and everything looks fine and then it's given to the customer who eventually complains of rare crashes on their previously-working-just-fine hardware. (Oh and you don't find out about the crashes until almost a year later given the long release cycle so have long forgotten what you did a year ago.) Inevitably it's used as an avenue for the sales engineers to upsell the customer on new hardware claiming their hardware is out of date. The software engineers all know this is a white lie given that the same software runs on both pieces of hardware and the hardware didn't actually change much. It just ruins you over time and makes you wish you never had to work in this business.
- wereallterrrist 4y agoEvery single tool that Ive replaced with a rust-replacement is faster, more stabld, has healthier development and release cycles. Uutils, helix, zellij, ripgrep, and countless others. Ive stopped caring (mostly) to convince others of it, but many, many Rust projects are clearly started by very experienced folks that know how to release and foster a community.
- spoiler 4y agoI think most of this stems from the fact you can focus on the problem you want to solve, instead of mundane plumbing (like in C or C++ project). Suuuure, some people will complain about the borrow checker, but I think it's people who are mostly inexperienced with Rust. It's not really an issue for anyone after they've played with the language for a while. Like, these days I rarely have to debug a borrowing errors, and if I do it's a few minutes of work tops.
- wereallterrrist 4y agomore examples that I thought of while writing this; `fd` and `sd` which I use daily now. and since my nix config lists my rust tools, because I'm a `mut hardcoreZealot` TM: `exa` (try `exa -al --tree --level 2`), `dua` (try `du -x i`), `gitui`, `jless`, `bat` (sparingly) `xplr` and `joshuto` are clearly thought-out non-trivial TUI file explorers that seem to scale to the naive and a certain power-user type. `difftastic` is a very cool replacement `diff`. `jj` is compatible with git, and like git-branchless, but I'll bet on `jj` for a number of reasons. It's also awesome and in 3 years there's going to be some amazing tools built with `jj` and... (not a daily/semi-daily use, at all, but special mention:) `git-oxide`, I mean, you can guess from the name, the monthly reports show just how incredibly thoughtful the author is and just how incredibly viable and already-usable this project is (especially given the complexity which I really would not have understood without the thorough monthly updates). followup, there's no reason for this to really mean anything, or for anyone to "believe" me, but I just opened this post on reddit: https://old.reddit.com/r/zfs/comments/10pdspe/take_your_zfsbtrfs_snapshots_with_you_introducing/ https://old.reddit.com/r/zfs/comments/10pdspe/take_your_zfsb... and wow, what a smart tool, and a smart way to release it. I know how to mount a snapshot, and ripgrep/fd through it, could script that, but making that resilient would suck. The way this is presented is smart. It's a new OSS project, shows example usage in the reddit post. Anyway, I thought of my comment earlier, and of course, there it is, `Cargo.lock`, bias confirmed. And a tagged release. And has a `LICENSE`. And has committed `Cargo.lock`. For the sake of not replying too much I'll say I'd echo everything spoiler wrote in this posts' sibling comment. And at the risk of coming across poorly, there's something that's a cross of stockholm-syndrome and sunk cost fallacy and it seems like when certain potentially displacing technologies gain more and more steam, there's a louder and louder minority that claim that this new paradigm is just too disruptive and what are they teaching our kids. (oops)
- fnordpiglet 4y agoWow I don’t see that in my experience at all. They tend to be amazing programmers and systems developers who love Rust because it makes complex things easy and safe without sacrificing performance. The rust community on whole feels really open and helpful in my explorations of late, that were started simply because everyone I greatly respected loved Rust and they knew their shit about languages better than anyone else I know. I’ve not found them wrong.
- pkulak 4y agoI’ve done some stuff in C and C++, and Rust is the one that made sense and I stuck with. It’s by far the easiest systems language I’ve ever used. Also, this seems like a classic “Arch, btw” sentiment. Where you hear it over and over and over again, about how the folks who use this one tech are all assholes, but you never actually see the asshole.
- John23832 4y agoTell me you've only written in a memory managed language (Java, C#, Go) without telling me. For myself and many that I've interacted with, Rust's Borrow Checker and memory system saves me from the PTSD of segfaults and null pointers. I'd love to see the idea of borrow checking and scoped based memory extended to other languages, but that's what makes Rust great for now.
- plasticeagle 4y agoWell, I don't know about borrow checkers, but scoped memory was added to C++ over a decade ago. In fact, I led the charge to remove every single new and delete from our codebase, and cause add it to the list of things disallowed by the static analysis tools. Today, I wouldn't use new or delete in any C++ program for any reason. Segfaults and null pointers have become extremely rare.
- John23832 4y agoThanks for the response. I appreciate that RAII is in C++ as well. RAII is an addition to C++. You can write valid C++ with memory leaks all over the place. This is the nature of being a superset of C. In Rust, there is no other way (outside of using unsafe). It is a language based around compile time memory safety. Segfaults and null pointers aren't extremely rare, they're extremely rare in modern C++ (which is a subset of all C++) The borrow checker validates references as they are passed throughout your program. You can have either (many immutable references || one mutable references). This may seem simple but is key to the memory safety ideas. The usages of references are validated. Move semantics are checked at compile time.
- rami3l 4y agoHowever the borrow checker is not only about new/delete, it also prevents other forms of reference invalidations (e.g. when holding a reference to a vector element while appending to the vector, that reference can become invalid when the vector gets resized).
- bfrog 4y agocloudflare, google, amazon, and microsoft are all language zealots without profit or other potential motivations apparently
- avgcorrection 4y agoWhile you shine a beacon of light with CS arguments like “zealot-like”, “trendy tech”, and armchair psychology like “part of their identity”—very rigorous and technical. A lot of people who argue for Rust claim that it is both memory safe and fast, which is well-documented at this point. But it’s not like you’re going to address the actual arguments made in reality, are you.