| |
| ▲ | bri3d 4 hours ago | parent | next [-] | | It's an interesting debate. The flip side of this coin is getting hires who are more interested in the language or approach than the problem space and tend to either burn out, actively dislike the work at hand, or create problems that don't exist in order to use the language to solve them. With that said, Rust was a good language for this in my experience. Like any "interesting" thing, there was a moderate bit of language-nerd side quest thrown in, but overall, a good selection metric. I do think it's one of the best Rewrite it in X languages available today due to the availability of good developers with Rewrite in Rust project experience. The Haskell commentary is curious to me. I've used Haskell professionally but never tried to hire for it. With that said, the other FP-heavy languages that were popular ~2010-2015 were absolutely horrible for this in my experience. I generally subscribe to a vague notion that "skill in a more esoteric programming language will usually indicate a combination of ability to learn/plasticity and interest in the trade," however, using this concept, I had really bad experiences hiring both Scala and Clojure engineers; there was _way_ too much academic interest in language concepts and way too little practical interest in doing work. YMMV :) | | |
| ▲ | tikhonj an hour ago | parent | next [-] | | If you're doing something forgettable, what makes you think the workaday Java or Python programmer would find it innately motivating? Alternately, if you have the sort of work or culture that taps into people's intrinsic motivation, why would that work worse with Haskell or Clojure programmers than anybody else? People are interested in different things along different dimensions. The way somebody is motivated by what they're doing and the way somebody is motivated by how they're doing it really don't seem all that correlated to me. | |
| ▲ | mannycalavera42 3 hours ago | parent | prev [-] | | Clojure engineers not interested in doing work? That's surprising | | |
| ▲ | lll-o-lll 2 hours ago | parent [-] | | When people say things like: > there was way too much academic interest in language concepts and way too little practical interest in doing work. They are communicating something real, but perhaps misattributing the root cause. The purely abstract ‘ideal’ form of software development is unconstrained by business requirements. In this abstraction, perfect software would be created to purely express an idea. Academia allows for this, and to a lesser extent some open source projects. In the real world, the creation of software must always be subordinate to the goals of the business. The goals are the purpose, and the software is the means. Languages that are academically interesting, unsurprisingly, attract a greater preponderance of academically minded individuals. Of these, only a percentage have the desire or ability to let go of the pure abstract, and instead focus on the business domain. So it inevitably creates a management challenge; not an insurmountable one, but a challenge. Hence the simplified ‘these people won’t do the work!’. |
|
| |
| ▲ | Calavar 4 hours ago | parent | prev | next [-] | | Paul Graham said the same thing about Python 20 years ago [1], and back then it was true. But once a programming langauge hits mainstream, this ceases to be a good filter. [1] https://paulgraham.com/pypar.html | | |
| ▲ | jghn 4 hours ago | parent | next [-] | | This is important. The benefit here isn't the language itself. It's the fact that you're pulling from an esoteric language. People should not overfit and feel that whichever language is achieving that effect today is special in this regard. | |
| ▲ | mkoubaa an hour ago | parent | prev | next [-] | | He was right. Python programmers are still the most likely to prioritize getting things done quickly. | |
| ▲ | discreteevent 2 hours ago | parent | prev [-] | | That was bullshit then and it's bullshit now but it sells very well to people who know a few programming languages (a lot of the people on this site) |
| |
| ▲ | steve_adams_86 4 hours ago | parent | prev [-] | | I'm my experience this is definitely where rust shined. The language wasn't really what made the project succeed so much as having relatively curious, meticulous, detail-oriented people on hand who were interested in solving hard problems. Sometimes I thought our teams would be a terrible fit for more cookie-cutter applications where rapid development and deployment was the primary objective. We got into the weeds all the time (sometimes because of rust itself), but it happened to be important to do so. Had we built those projects with JavaScript or Python I suspect the outcomes would have been worse for reasons apart from the language choice. | | |
| ▲ | IgorPartola 3 hours ago | parent | next [-] | | Rust is also a systems language. I am still wrapping my mind around why it is so popular for so many end projects when its main use case and goals were basically writing a browser a maybe OS drivers. But that’s precisely why it is good for developer tools. And it turns out people who write systems code are really damn good at writing tools code. As someone who cut my teeth on C and low level systems stuff I really ought to learn Rust one of these days but Python is just so damn nice for high level stuff and all my embedded projects still seem to require C so here I am, rustless. | | |
| ▲ | aaronblohowiak 27 minutes ago | parent | next [-] | | If python's painpoints don't bother you enough (or you are already comfortable with all the workarounds,) then I'm not sure Rust will do much for you. What I like about Rust is ADTs, pattern matching, execution speed. The things that really give me confidence are error handling (right balance between "you can't accidentally ignore errors" of checked exceptions with easy escape hatches for when you want to YOLO,) and the rarity of "looks right, but is subtly wrong in dangerous ways" that I ran into a lot in dynamic languages and more footgun languages. Compile times suck. | | |
| ▲ | IgorPartola 5 minutes ago | parent [-] | | I rarely if ever encounter bugs that type checking would have fixed. Most common types of bugs for me are things like forgetting that two different code paths access a specific type of database record and when they do both need to do something special to keep data cohesive. Or things like concurrency. Or worst of all things like fragile subprocesses (ffmpeg does not like being controlled by a supervisor process). I think all in all I have encountered about a dozen bugs in Python that were due to wrong types over the past 17 years of writing code in this language. Maybe slightly more than that in JS. The reason I would switch is performance. |
| |
| ▲ | webstrand 2 hours ago | parent | prev [-] | | I write scripts in rust as a replacement for bash. Its really quite good at it. Aside from perl, its the only scripting language that can directly make syscalls. Its got great libraries for: parsing, configuration management, and declarative CLIs built right into it. Sure its a little more verbose than bash one-liners, but if you need any kind of error handling and recovery, its way more effective than bash and doesn't break when you switch platforms (i.e. mac/bsd utility incompatibilities with gnu utilities). My only complaint would be that dealing with OsString is more difficult than necessary. Way to much of the stdlib encourages programmers to just do "non-utf8 paths don't exist" and panic/ignore when encountering one. (Not a malady exclusive to rust, but I wish they'd gotten it right) Example I had handy: <https://gist.github.com/webstrand/945c738c5d60ffd7657845a654...> |
| |
| ▲ | zahlman 4 hours ago | parent | prev [-] | | > having relatively curious, meticulous, detail-oriented people on hand who were interested in solving hard problems.... Had we built those projects with JavaScript or Python I suspect the outcomes would have been worse for reasons apart from the language choice. I genuinely can't understand why you suppose that has to do with the implementation language at all. | | |
| ▲ | tikhonj an hour ago | parent | next [-] | | Different programming languages come with different schools of thought about programming and different communities of practice around programming. If you take a group of people who are squarely in the enterprise Java school of thought and have them write Rust, the language won't make much of a difference. They will eventually be influenced by the broader Rust community and the Rust philosophy towards programming, but, unless they're already interested in changed approaches, this will be a small, gradual difference. So you'll end up with Enterprise Java™ code, just in Rust. But if you hire from the Rust community, you will get people who have a fundamentally different set of practices and expectations around programming. They will not only have a stronger grasp of Rust and Rust idioms but will also have explicit knowledge based on Rust (eg Rust-flavored design patterns and programming techniques) and, crucially, tacit knowledge based on Rust (Rust-flavored ways of programming that don't break down into easy-to-explain rules). And, roughly speaking, the same is going to be true for whatever other language you substitute for "Rust". (I say roughly because there doesn't have to be a 1:1 relationship between programming languages, schools of thought and communities of practice. A single language can have totally different communities—just compare web Python vs data scientist Python—and some communities/schools can span multiple languages. But, as an over-simplified model, seeing a language as a community is not the worst starting point.) | |
| ▲ | KPGv2 3 hours ago | parent | prev [-] | | > I genuinely can't understand why you suppose that has to do with the implementation language at all. Languages that attract novice programmers (JS is an obvious one; PHP was one 20 years ago) have a higher noise to signal ratio than one that attracts intermediate and above programmers. If you grabbed an average Assembly programmer today, and an average JavaScript programmer today, who do you think is more careful about programming? The one who needs to learn arcane shit to do basic things and then has to compile it in order to test it out, or the one who can open up Chrome's console and console.log("i love boobies") How many embedded systems programmers suck vs full stack devs? I'm not saying full stack devs are inferior. I'm saying that more inferior coders are attracted to the latter because the barriers to entry are SO much easier to bypass. | | |
| ▲ | zahlman 3 hours ago | parent [-] | | Sure, but that kind of incompetence is already filtered out (in the https://www.lesswrong.com/w/screening-off-evidence sense) by the task of creating a package installer. | | |
| ▲ | IgorPartola 3 hours ago | parent [-] | | You would think so, yet here I am sitting with a node_modules full of crud placed there by npm, waiting for the next supply chain attack. | | |
| ▲ | tacticus 2 hours ago | parent | next [-] | | npm isn't the issue there it's the ts\js community and their desire to use a library for everything. in communities that do not consider dependencies to be a risk you will find this showing up in time. The node supply chain attacks are also not unique to node community. you see them happening on crates.io and many other places. In fact the build time scripts that cause issues on node modules are probably worse off with the flexibility of crate build scripts and that they're going to be harder to work around than in npm. | |
| ▲ | nl 2 hours ago | parent | prev | next [-] | | I don't see how that follows. uv doesn't exactly stop python package supply chain attacks... | |
| ▲ | zahlman 3 hours ago | parent | prev [-] | | That argument is FUD. The people who created the NPM package manager are not the people who wrote your dependencies. Further, supply chain attacks occur for reasons that are entirely outside NPM's control. Fundamentally they're a matter of trust in the ecosystem — in the very idea of installing the packages in the first place. |
|
|
|
|
|
|
| |
| ▲ | pxc 5 hours ago | parent | next [-] | | Succinctly, perhaps with some loss of detail: "Rewrite" is important as "Rust". | | | |
| ▲ | Levitating 5 hours ago | parent | prev | next [-] | | > I think a lot of rust rewrites have this benefit I think Rust itself has this benefit | |
| ▲ | woodruffw 5 hours ago | parent | prev | next [-] | | Completely agreed! | |
| ▲ | s_ting765 5 hours ago | parent | prev [-] | | Rust rewrites are known for breaking (compatibility with) working software. That's all there is to them. | | |
| ▲ | pxc 4 hours ago | parent | next [-] | | In Python's case, as the article describes quite clearly, the issue is that the design of "working software" (particularly setup.py) was bad to the point of insane (in much the same way as the NPM characteristics that enabled the recent Shai Hulud supply chain attacks, but even worse). At some point, compatibility with insanity has got to go. Helpfully, though, uv retains compatibility with newer (but still well-established) standards in the Python community that don't share this insanity! | | |
| ▲ | s_ting765 4 hours ago | parent | next [-] | | My gripe is with Rust rewrites. Not uv. Though I very much think uv is overhyped. | |
| ▲ | eduction 3 hours ago | parent | prev [-] | | Actually uv retains compatibility with the setup.py “insanity,” according to the article: > uv parses TOML and wheel metadata natively, only spawning Python when it hits a setup.py-only package that has no other option The article implies that pip also prefers toml and wheel metadata, but has to shell out to parse those, unlike uv. | | |
| ▲ | pxc an hour ago | parent [-] | | Ugh. Thank you for the correction. :( | | |
| ▲ | eduction 9 minutes ago | parent [-] | | I mean, you’re on the right track in that they did cut out other insanity. But unclear how much of the speed up is necessarily tied to breaking backward compat (are there a lot of “.egg” files in the wild?) |
|
|
| |
| ▲ | Lammy 4 hours ago | parent | prev [-] | | I would say the downside of them is that they're known for replacing GPL software with MIT software |
|
|