Most active commenters
  • pdimitar(10)
  • pjmlp(9)
  • sshine(8)
  • ttfkam(6)
  • hu3(6)
  • (5)
  • 6r17(5)
  • rixed(4)
  • j-pb(4)
  • mellosouls(3)

←back to thread

205 points michidk | 148 comments | | HN request time: 0.831s | source | bottom
1. dazzawazza ◴[] No.41835253[source]
Access to competant Rust developers can be a challenge even for large companies.

I recently finished a contract at a (very large game dev) company where some tools were written in Rust. The tools were a re-write of python scripts and added no new functionality but were slightly faster in Rust.

The reality was that these tools were unmaintainable by the rest of the company. Only the author "knew" Rust and it was hard to justify a new hire Rust developer to maintain this small set of tools.

The only reason these tools were written in Rust was because the dev wanted to learn Rust (a big but common mistake). I pointed out to the Technical Director that this was a big mistake and the teams had taken on a large amount of technical debt for no reason other than the ego of the wanna-be-rust-developer. Since I "knew" Rust he wanted me to maintain it. My advice was to go back to the Python scripts and I left.

replies(21): >>41835266 #>>41835268 #>>41835305 #>>41835386 #>>41835427 #>>41835460 #>>41835522 #>>41835570 #>>41835607 #>>41835745 #>>41835838 #>>41836318 #>>41836384 #>>41836673 #>>41836742 #>>41837344 #>>41839371 #>>41840322 #>>41840444 #>>41846616 #>>41848063 #
2. meindnoch ◴[] No.41835266[source]
>Only the author "knew" Rust [...] because the dev wanted to learn Rust

Many such cases. Recipe for disaster.

replies(2): >>41835352 #>>41835378 #
3. physicsguy ◴[] No.41835268[source]
Embedded developers that know Rust is an even smaller pool than Rust developers in general. It’s almost two non-intersecting groups of people since embedded in general is less well paid in many countries and so doesn’t attract people interested in the latest and greatest hyped up language.
replies(2): >>41835432 #>>41835877 #
4. gwd ◴[] No.41835305[source]
This question of "what tools / languages" should we use was introduced to me (during an interview, actually) as "technical strategy". There is more to the choice of language or tooling than whether it's fast or slow or reliable at one instant in time -- you have to ask how you will grow and maintain things going forward.

That said, obviously all languages were in that state at some point. Twenty-eight years ago you might have said the same thing about Java. Twenty-four years ago, Perl might have looked like a better choice than Python; now it's clearly the opposite. XenServer took a gamble and wrote their main control stack in OCaml in 2008; on the whole that has had some benefits, but the number of OCaml developers has not significantly grown, and it's not easy to hire people.

That said, I think Rust is much more likely to follow Java's trajectory than OCaml's: My prediction is that it's only going to be easier and easier to find Rust developers.

replies(11): >>41835318 #>>41835619 #>>41835744 #>>41835903 #>>41835951 #>>41837013 #>>41837218 #>>41837495 #>>41837561 #>>41838356 #>>41840370 #
5. ◴[] No.41835318[source]
6. rob74 ◴[] No.41835352[source]
a.k.a. "resume-driven development"
replies(1): >>41835558 #
7. ahoka ◴[] No.41835378[source]
I think the rule of thumb should be that if you wouldn’t write aomething in C++, then you shouldn’t use Rust.
replies(2): >>41836000 #>>41846984 #
8. atoav ◴[] No.41835386[source]
As a Rust/Python dev I previously decided against Rust in a work context as I deemed it would make me the sole person who knows what is going on, while python feels much more like a lingua franca of programming nowadays.

I would decide this on a case by case basis tho, Rust is different, but if e.g. what you wrote derives most of its business logic from its configuration, or the usecase is so generic changes aren't gonna be a thing for a while, why not. Rust is different, but unless you want a complete rewrite or new complex features any developer should be able to get into it if you give them a little time.

And the strictness of Rust makes it unlikely that they break things in a bad way, which is good.

replies(1): >>41836028 #
9. realusername ◴[] No.41835427[source]
What concerns me even more than the talent pool is that Rust is a language that isn't straightforward to learn.

I can be confident to teach any average developer about Go without any prior experience relatively quickly, I'm not so confident I could do the same with Rust.

replies(3): >>41835688 #>>41835716 #>>41835986 #
10. ◴[] No.41835432[source]
11. steelegbr ◴[] No.41835460[source]
Indeed. The few times I've encountered Rust in the wild it's been for a project that didn't need it (web or IO bound applications) and someone's "My First Rust Project". It's difficult or even at times beyond the budget of smaller organisations to then hire a seasoned Rust dev to unpick whatever mess you got in to.

Don't get me wrong, Rust has a niche where it's the right choice. But being a popular language of the day, it's getting used a lot in the wrong places.

replies(1): >>41835616 #
12. j-krieger ◴[] No.41835522[source]
> Only the author "knew" Rust and it was hard to justify a new hire Rust developer to maintain this small set of tools.

There are two dialects of Rust. One can be written immediately by beginners, the other is for experts.

I make sure to write scripts in the first dialect. It uses `clone` all over the place, does not make use of any async runtime, and makes extensive use of "anyhow" for error creation and logging.

I advise all my peers to do the same, if they find a need for Rust in tiny scripts or applications.

replies(2): >>41835573 #>>41838894 #
13. makeitdouble ◴[] No.41835558{3}[source]
Typically, devs polishing their resume instead of prioritising business metrics probably means the overall org is on the down slope.
replies(2): >>41835636 #>>41835738 #
14. nicoburns ◴[] No.41835570[source]
> I recently finished a contract at a (very large game dev) company where some tools were written in Rust. The tools were a re-write of python scripts and added no new functionality but were slightly faster in Rust. > The reality was that these tools were unmaintainable by the rest of the company. Only the author "knew" Rust and it was hard to justify a new hire Rust developer to maintain this small set of tools.

I can believe this, but it's funny because I work on a project where the main product is written in Rust, and it's the build tools written in Python that are the technical debt that nobody really wants to touch! In our case I suspect rewriting them in Rust will end up being the right thing to do (if/when we can justify the switching costs).

replies(2): >>41835864 #>>41838458 #
15. sshine ◴[] No.41835573[source]
> There are two dialects of Rust. One can be written immediately by beginners, the other is for experts.

I believe it's more like a spectrum.

I'm 3 years into my Rust career.

I started with .clone() everywhere.

Then I moved on to write highly async code with tokio and std.

Now I'm somewhere entirely unfamiliar, writing highly portable no-std Rust for bare-metal and wasm.

It takes some time to know the difference between std and core.

It takes some effort to write modular, allocation-free code (static allocations only).

It takes some rediscovery of what crates will work for you.

It's a steep curve, and I don't imagine everyone likes it.

16. 6r17 ◴[] No.41835607[source]
I switched up from python to rust for some processing pipeline at work - rust has a lot of advantages over it specifically for typing and speed, the work itself it a little bit longer to develop. But the quality output is not even comparable, the code itself is way more readable and explicit than in python code.

There is not a lot you can do to make your python code as good in terms of reliability or clarity of intent. I'm sorry to hear that you did not have a good experience with it, but frankly speaking, I cannot look at python code anymore because of the inherent "hidden" work that it creates, variables being passed trough without much care for their exact meaning, hidden "bugs" that make the overall job way more annoying to debug.

Python is like that person that tells you everything is fine but is mostly wrong and won't even tell about that. Whereas Rust will just straight up tell you what's wrong in the draft.

I prefer the honesty and the little additional overhead work to getting lost in debugs for weeks bc some person has inputed the wrong shape for some vals or whatnot.

The peace of mind is saving me a ton on maintenance as well. (project is a 2years on with distributed python pipeline with a bunch of IA processing - switching up to rust was not the easiest thing to do considering some parts had to stay in python because of code ownership being someone's else - the stack is a rust/python stack now with some parts being left out in python depending on the actual needs of update)

I understand very well that some people do not want to code in rust, specifically because they might not have the time or the will to do so. But objectively these people do not have to define the pipeline execution except for the actual order of execution, nor do they need to maintain every part of the code because it's just not their job.

Now if you are to compare the exact benefits of rust vs python for a company, the server pricing will just speak itself and the choice will be made depending on the cost of production, the lifetime of the code, and the actual benefits.

If I was to do some API today, I'd 50000% go for rust and I DO think of python as the `no-coder coder` thing. I initially learned C, switched up to Python for jobs, and the code quality of python is just downright bad. It does not push me in the right direction AT ALL.

The fact that we used a scripting language with no typing for tools that need any kind of guarantee for years does not mean it's the best way to do it.

Also to answer the problem concerning `rust` dev's being non-existant on the market, and no job being open is really simple : even tough rust has 10 years on the developer market on this is really young and need to learn.

You need 3 years of practice to get 3 years of experience with rust. There is no way around that. And there is just not enough experienced people with this language yet to make it a shift. I'm not saying there is none, i'm saying it's not yet democratized.

replies(3): >>41835662 #>>41835981 #>>41836362 #
17. 6r17 ◴[] No.41835616[source]
Project that does not need rust "Web, or IO" -> What would you actually choose to make an API then ? Python ? Ruby ? Did you compare benchmarks from rust server to python servers ? Did you actually feel the difference ?
replies(2): >>41835884 #>>41837313 #
18. devsda ◴[] No.41835619[source]
I wish and I'm sure Rust will get there some day but is there a no-brainer usecase today where it's really important to use Rust, one important enough to overlook the initial learning curve, developer scarcity and evolving ecosystem?

If there's a killer open product out there where the primary supported language is Rust(Linux kernel might as well be it someday), or if a big company launches a successful product in Rust then adoption may accelerate. For now its mostly limited to cryptocurrencies, performance critical paths or rewrite of hidden core components but nothing flashy.

"Nobody ever gets fired for buying IBM". Unless teams can say the same about their choice of Rust, people are going to be risk averse and prefer using safest choice as long as its good enough.

replies(3): >>41836588 #>>41837196 #>>41838043 #
19. mytailorisrich ◴[] No.41835636{4}[source]
Perfectly normal for people to want to develop their skills and to enhance their value.

The thing is that this is not a developer's decision, this is a management decision. The developer might pitch for Rust or even start developing in Rust but if that is not right for the org then their manager should say 'no'.

So ultimately this is a red flag about management.

replies(2): >>41841777 #>>41844111 #
20. physicsguy ◴[] No.41835662[source]
> You need 3 years of practice to get 3 years of experience with rust.

This is the major barrier. It's a difficult language to learn for people who've worked with a compiled, strictly typed language with manual memory management. That barrier is much higher for people who've only ever used a dynamic, interpreted language.

I'm on-the-fence about orchestration of pipelines with Python since I've experienced a lot of the issues you're talking about, but you can just abstract the Python algorithm parts in to APIs that your pipelines call and separate out those two concerns. Then it's clear who has maintenance responsibility, it separates out the algorithms from data collection + calling, and it doesn't introduce a big barrier next time someone wants to implement something that depends on the latest and greatest algorithm written in Python, which writing in Rust inevitably does.

To me though, I don't really understand the use of Rust in non-systems programming. For a lot of the use cases people talk about, Go seems like a better fit with a lot less of the pain since it's a much simpler language. When teaching people a language I'd much rather do that with Go than Rust, and that matters in an environment where developers who know either are not really that commonly available (at least here in the UK).

replies(2): >>41835832 #>>41837514 #
21. amelius ◴[] No.41835688[source]
Go is also a more productive language for many use cases.
replies(1): >>41837442 #
22. sunshowers ◴[] No.41835716[source]
On day 1, yes, a newbie to Go would be able to be more productive.
23. ndndjdjdn ◴[] No.41835738{4}[source]
Or the dev wants more money
24. psychoslave ◴[] No.41835744[source]
I don’t know about your later claim. To my shallow knowledge of Rust, it doesn’t try to compete on the same segment as Java.

For the latter it’s still kinda of "everybody can write some code that will run everywhere". The former is more like "you can have performance, consistency and correctness in a shallowly-C-like syntax", which is more likely to tease the average HN reader, but probably not the average programmer who is in to earn some descent money or as a way to start before moving up in the businesses hierarchy.

And you see there are some people which enthusiast to push Rust into the Linux kernel, while I doubt that in Java projects of similar size there is that much ardor for even introducing it in some part of it, let alone propose a full rewrite.

replies(2): >>41835817 #>>41837269 #
25. otabdeveloper4 ◴[] No.41835745[source]
> Access to competent developers can be a challenge for companies.

Fixed it for you. You wouldn't believe the quality of the average applicant for a basic standard Python position if I told you.

replies(1): >>41836006 #
26. Seattle3503 ◴[] No.41835817{3}[source]
> I don’t know about your later claim. To my shallow knowledge of Rust, it doesn’t try to compete on the same segment as Java.

I don't think the origin lame was that it would compete for the same segment, but that it would reach the same level of ubiquity. It could do that by opening up a new non-existent segment, eg smart contracts on the block chain. Or it could take a little from multiple domains.

27. 6r17 ◴[] No.41835832{3}[source]
I can 100% understand your take on `go` and will probably think of it more often !
28. goodpoint ◴[] No.41835838[source]
> Access to competant Rust developers can be a challenge even for large companies.

Huh? There's tons of good developers looking for jobs right now, more so in Rust.

29. Seattle3503 ◴[] No.41835864[source]
That makes sense, as the bulk of your developers are probably Rust devs. Homogeneity favors Rust in this case. Also Rusts existing build system is (unsurprisingly) built around Rust, so it makes sense to keep with it.
replies(1): >>41836332 #
30. Seattle3503 ◴[] No.41835877[source]
As a Rust dev looking for a new job, this is my experience. I filter out the embedded jobs because knowing Rust only half the equation for those roles.
31. wmil ◴[] No.41835884{3}[source]
Most web servers aren't doing anything computationally complex and there's a lot of tech to help you scale to multiple servers, so single server performance usually isn't really critical.

Web stuff is about developer speed. So familiarity, libraries, and tooling. There are plenty of good options.

Anything that needs to be performant can go in it's own service.

replies(2): >>41837249 #>>41837858 #
32. sshine ◴[] No.41835903[source]
> Rust is much more likely to follow Java's trajectory than OCaml's

I'd rather compare Rust to Haskell and Kubernetes.

  Haskell:
  - Dozens of handfuls of experts open to remote work.
  - Lots of aspiring juniors who see no way to enter the market.
  - Most employers are R&D-heavy academic consulting environments.

  Kubernetes:
  - Wildly hyped and cherished among people who don't have the complexity to warrant the purchase.
  - Eventually criticised for being overly complex and suitable only at a certain size and setup.
> it's only going to be easier and easier to find Rust developers.

I imagine it's never been easier to find Haskell developers and Kubernetes developers, either.

Yet, one's wish to code Haskell professionally does not necessarily align with one's market value.

It seems like there's a lot more open for Kubernetes, so Rust could go that way.

Unlike Haskell, Rust seems to gain industry acceptance.

replies(1): >>41836637 #
33. acomjean ◴[] No.41835951[source]
I don’t love Perl, but we have 10+ year old Perl scripts at work that work fine.

The python scripts of the same vintage have to be reworked because python versions and importantly supporting libraries have changed.

This is mainly because Perl hasn’t changed, with the failure of perl6 to launch. But it’s an interesting comparison.

I’ll agree Rust will be like like Java.

replies(3): >>41836648 #>>41837352 #>>41840408 #
34. robertlagrant ◴[] No.41835981[source]
> The fact that we used a scripting language with no typing for tools that need any kind of guarantee for years does not mean it's the best way to do it.

You can add typing tools now, though? CI pipeline runs mypy and that gets you a long way.

35. ramon156 ◴[] No.41835986[source]
These comments make it seem like it's impossible for people to learn Rust. I have to admit that it takes a fair bit longer than other languages, but so is c/c++. Is there a bias towards not using Rust by other devs? Is it a scary language?
replies(2): >>41836204 #>>41837421 #
36. j-pb ◴[] No.41836000{3}[source]
That's a horrible rule of thumb, because C++ adds a ton of complexity with little reward except for speed. Rust adds less complexity (still a lot ofc), but it also gives you awesome tooling and dependency management (much better than python for example), and and extemely powerful typesystem and functional programming features, that make writing correct code extremely easy.

Rust is a complex but overall good language for writing solid software, C++ is making a deal with the devil in exchange for speed.

replies(2): >>41837345 #>>41839760 #
37. isoprophlex ◴[] No.41836006[source]
At least you can pretend you've hired someone that's going to solve your python problens. And to mgmt, that's sometimes the only thing that matters.

Greasing the wheels of the corporate meatgrinder with Rust is almost impossible, actual work quality notwithstanding.

38. dijksterhuis ◴[] No.41836028[source]
> but if e.g. what you wrote derives most of its business logic from its configuration, or the usecase is so generic changes aren't gonna be a thing for a while, why not

there’s also the fairly easy cross compilation to bear in mind.

i built a container entrypoint binary via python to stick in all our containers at last job.

getting that to cross compile was going to be a bunch of pain i wasn’t willing to go down for a simple “download files from S3, run a sub process, upload files to S3” pre-execution wrapper.

digital ocean infra + self hosted gitlab —> no readily available windows instances.

so everyone had to use linux to dev these containers with wine+mono.

being able to cross compile would have been brilliant here. i made the decision to not do this in rust for future maintenance reasons. but then people avoided using this thing because they couldn’t run on windows :/

(i know there’s that paid for package but the license fee is mind boggling from what i remember).

replies(1): >>41837253 #
39. realusername ◴[] No.41836204{3}[source]
I'd put the same concerns for C and C++ to be fair. The learning curve just isn't the same as most other mainstream languages.
replies(1): >>41837462 #
40. FridgeSeal ◴[] No.41836318[source]
God I feel like I’m taking crazy pills when I read these threads.

Can I hire 1000 Rust devs at the drop of a hat off the street? Well, no. Have I ever struggled to find competent Rust devs, or high level people who were happy to learn? Nope.

I would absolutely not be afraid to use it because of “hiring concerns”. If your current devs can’t or won’t learn anything new, they’re not very good at their job. If you can’t or won’t hire because you can’t find a super-senior at the drop of a hat, well, your hiring process is broken and no language will really help there.

replies(2): >>41837336 #>>41851908 #
41. cypressious ◴[] No.41836332{3}[source]
I really enjoy projects where the project and the scripts around it use the same language.
replies(1): >>41843246 #
42. FridgeSeal ◴[] No.41836362[source]
100% this. Well put.

The Rust codebase I’ve built on run faster, don’t crash, are more correct, and take only marginally longer than the first python version. They’re easier to maintain, they’re easier to upgrade their dependencies, I’m more confident about asserting guarantees from the codebase, and it’s an easier time onboarding people and having them meaningfully contribute. There’s no more death-by-a-thousand-cuts that I experienced with Python codebases. I don’t have to worry about my Rust codebases blowing up at 2am because of some random exception.

I am defs not going back.

43. the8472 ◴[] No.41836384[source]
If it's just a few tools that are essentially scripts and they don't even warrant a full-time dev then wouldn't a random senior dev do?

I have had to touch things in languages I'm not familiar with and initially it's slow due to having to look things up, but plenty knowledge still does transfer. Opening a file is still opening a file, updating dependencies is still updating dependencies. Plus python devs should be used to changing tooling all the time ;P

44. pdimitar ◴[] No.41836621{4}[source]
Nobody is stealing anything, what a weird comment.

And the problem with new kernels is how to reuse the huge trove of already-written drivers. Nobody is going to start rewriting everything in any language, be it Rust or any other -- does not matter. That's why the ABI and "please commit to a standard" points are so difficult and thorny in the kernel ecosystem; people want to reuse.

replies(1): >>41842447 #
45. pdimitar ◴[] No.41836637{3}[source]
Haskell and OCaml have a lot of what Rust has (namely exhaustive pattern matching + sum types, typeclasses and the like) but Rust has stellar tooling.

Had both of these languages' ecosystems and communities not dragged their feet and go full elitist on newcomers then Rust might not have ever been created.

So sure, Haskell and OCaml are great but after I spent half an afternoon trying to bring in a dependency in a little-more-than-hello-world Haskell program and then spending the other half on trying to do the same in OCaml I just threw my hands in the air and said "frak this, there has to be a better way".

Hence I landed on Rust. You and others can always say "skill issue!" but that's hugely missing the point; I want to use my skills on solving the actual problem, not on the logistics. We're not in the 1970s anymore and a weirdly huge number of people still haven't gotten that message.

replies(2): >>41837008 #>>41841821 #
46. pdimitar ◴[] No.41836648{3}[source]
RE: scripts, I find Golang better and better for this nowadays. Uber-fast compilation, to the point of it being acceptable to just instead do `go run your_thing.go` even, and you have access to a very solid runtime and many libraries for most of what people usually need.

I don't argue with the portability and longevity of Perl but it too has its problems.

replies(1): >>41837331 #
47. marhee ◴[] No.41836673[source]
Did you not offer to rewrite it in Python? I was a techical director at a company where we worked a lot with frontend contractors. Some loved typescript others were fans of vanilla js. When the balanced tipped there were rewrites from one to the other (ts to js to ts again), the first one two months full time, the second was interspersed with feature development. Of course the developers were very happy they could do it; it improved the solutions and afterward they both had 1) extreme product ownership 2) excellent company problem domain knowledge. So, a win-win for everyone. So I think, especially as it is a smaller part, than translating back in to Python would be warranted (provided you like it and would stay a while), not a big deal and a quite natural option.
replies(1): >>41838548 #
48. mellosouls ◴[] No.41836742[source]
The only reason these tools were written in Rust was because the dev wanted to learn Rust (a big but common mistake).

While they should get wider buy-in first then if the choice is technically justified within reason, its perfectly appropriate (and normal) for devs to pick up new languages in this way when existing expertise is not available on staff. No competent dev will accept their skills atrophying due to overly rigid political/tech choices.

That's how skills are built, its always been thus in such environments, and thats ok.

replies(2): >>41837132 #>>41837578 #
49. rixed ◴[] No.41837008{4}[source]
I do have one ear for that argument that "everything ought to be simpler". But what I've observed over and over is that many systems tends to become more complex as the result of people wanting to make them more newbie friendly.

That's certainly true of the last 10 years of Ocaml tooling evolution.

replies(1): >>41837286 #
50. netdevnet ◴[] No.41837013[source]
The kind of people that recklessly move from shiny language to the newest shiny language in town are the same kind of people that believe that you could kick out a dev writing systems in Java and stick a dev whose experience has only been Haskell and O'Caml and have the new dev hit the ground running
replies(1): >>41845184 #
51. hu3 ◴[] No.41837132[source]
Sorry but employees are not entitled to get paid to learn whatever technology they want during work.

And I say that as an employee.

There's some flexibility to choose tooling but with autonomy comes responsibility.

Replacing a bunch of working Python scripts with Rust is not just irresponsible, it's disrespectful and isolating towards coworkers.

replies(2): >>41837159 #>>41841832 #
52. mellosouls ◴[] No.41837159{3}[source]
Sorry but employees are not entitled to get paid to learn whatever technology they want during work, in their own special ivory towers.

rather different to my

While they should get wider buy-in first then if the choice is technically justified within reason, its perfectly appropriate

replies(1): >>41837199 #
53. ttfkam ◴[] No.41837196{3}[source]
Another use case is when you need a systems language for a user-facing app (even if not directly connected to the internet) and would have reached for C++ previously.

Memory corruption bugs are no joke. If you've got staff that already knows C++, their ramp up time for Rust will be much shorter compared to typical devs working only in Python, JS, etc.

replies(1): >>41846729 #
54. hu3 ◴[] No.41837199{4}[source]
My point is about this:

> No competent dev will accept their skills atrophying due to overly rigid political/tech choices.

Competent dev to me is one that delivers value. I say that as a dev but I'm pretty sure stakeholders would agree.

It's perfectly reasonable to hone your skills outside of paying hours if you chose to expand to new technology outside of your employer's stack.

replies(1): >>41837375 #
55. pyrale ◴[] No.41837218[source]
> you have to ask how you will grow and maintain things going forward.

The typical answer is "The jobs market will provide".

The issue with that method is that you end up competing with everyone and, usually, your company is not the top employer.

OTOH, some companies decide to use technology and invest in knowing the community, by hosting events or meetups, by frequently sending their devs to conferences on company time, etc. Usually, the people hired are above average, and are also able to train juniors if the market dries up. These companies typically are the safest in terms of ability to maintain their stack, but have to account for the fact that alienating their existing devs becomes a big risk.

The real harm comes for companies that choose niche tooling but believe the market will provide.

replies(1): >>41837486 #
56. smolder ◴[] No.41837249{4}[source]
I will say that a rust service, even when doing relatively simple stuff, can scale well in the cloud due to small memory footprint, fast startup time when auto-scaling in containers, and no need for a JIT to "warm up" before it has high throughout and consistent low latency. Building something with these qualities on a framework like Rocket is pretty straightforward, IME.
replies(1): >>41837851 #
57. hu3 ◴[] No.41837253{3}[source]
perhaps Go could have been a good solution for simple, cross-compiled code.
replies(1): >>41838437 #
58. pyrale ◴[] No.41837269{3}[source]
> descent money

When you want a decent paycheck, but instead get a descent into computing madness.

replies(1): >>41837372 #
59. pdimitar ◴[] No.41837286{5}[source]
I guess you could argue both ways and it depends on your starting point. I did not mean to say "make it newbie friendly", I meant "I want adding a dependency to my project to be a 10 seconds job, not a week-long endeavor".

If we both start from that point then I think we might find a common ground.

replies(1): >>41840501 #
60. hu3 ◴[] No.41837313{3}[source]
> What would you actually choose to make an API then ? Python ? Ruby ?

Python, Ruby, Go, PHP, C#, Java, TypeScript, Elixir.

Performance benchmarks when writing APIs as 1st concern? Really? 99% of the cases this should be the last criteria.

Monthly reminder that a good part of instagram still runs on Django/Python.

61. fredrikholm ◴[] No.41837331{4}[source]
The longevity of Go is also a thing. I have not encountered a single Go project that used to compile but now doesn't because it hadn't been touched.

Go is in many ways leap years ahead of most AOT languages I've used in anger. Yes, sometimes you miss XYZ, but seldom is that an issue outside of personal preferences.

What you do get though is amazing tooling and little-to-no downtime. Builds basically don't take any time, tests run past, pipelines are quick.

go test ./... finishes faster than you can print Determining projects to restore... to the screen. It's a very liberating experience that is hard to go back from.

replies(2): >>41837351 #>>41839271 #
62. jcgrillo ◴[] No.41837336[source]
The underlying (absurd) assumption is that the sum total potential of a developer you hire to do a job is statically determined by their past experience at interview time. This is the problem with "Human Resources" thinking, it fails to account for all the, well, human stuff.

Case in point from the article:

> it is not viable (for us) to retrain a C developer to Rust

What? Why the hell not?

63. cmatza ◴[] No.41837344[source]
"competent" is a bit of a word there, there are very few shops right now that are willing to hire actually junior rust devs. The jobs are out there but they're all for mid level at a minimum roles in the Rust ecosystem specifically.

Tons of people would jump ship to be able to use Rust, it has a lot of love in the community.

"Being totally unwilling to accept anyone junior, or who is new to the stack" is a disease in this industry, and it's really apparent when some 200 person+ company is only hiring principal level rust devs.

64. ttfkam ◴[] No.41837345{4}[source]
If a garbage collected language can easily do the job, choose the garbage collected language. I like Rust, but it is NOT the fastest language to develop in.

Typescript, Python, Go, Swift, and even Bash depending on the situation are all quicker to code in than Rust.

If any of those languages are inadequate for the requirements whether they be memory-bound, CPU-bound, or sensitive to gc pauses, Rust is an excellent option that is far superior to C++ in 2024 and beyond.

The notion of "one true language" has always been and will always remain a fool's errand.

replies(1): >>41840001 #
65. pdimitar ◴[] No.41837351{5}[source]
Agreed 100%.

I have my very real pet peeves with Golang -- lack of sum types and thus no exhaustive pattern matching is the top one -- but I can't argue with results. Every time I wanted to whip up something quickly, Golang has gotten the job done and then some.

replies(1): >>41837885 #
66. gwd ◴[] No.41837352{3}[source]
> I don’t love Perl, but we have 10+ year old Perl scripts at work that work fine.

I'm not talking primarily about Perl as a technology in and of itself, but as a long-term technology choice in terms of being able to find people to maintain and improve it.

The Xen Project has a bunch of support stuff (automated testing and tooling around doing security work) written Perl. It was just about a reasonable decision when it started to be written 10-15 years ago; Golang was too young, Rust wasn't written yet, and Python had its downsides. But when the author of the code left the project 2-3 years ago, and there was 1) nobody with a similar level of expertise to maintain it, 2) nobody particularly wanted to gain that expertise, and 3) it wasn't easy to find someone else to pay to do maintenance.

If you've managed to find people who can maintain those perl scripts, more power to you; but it unless perl5 can get some momentum back, it seems like it's going to be harder and harder to find replacements.

replies(1): >>41843326 #
67. psychoslave ◴[] No.41837372{4}[source]
haha, nice catch, thanks for the smile. :)
68. mellosouls ◴[] No.41837375{5}[source]
Fairer, but that's probably the point and tone you should have quoted with then. ;)

I would probably concede that it depends on context - for devs paid at the top of the market to simply churn stuff out factory-style there is less justification for self-improvement on work time.

For the majority though there is always give and take between responsible employees and employers, and building skills as discussed is normal.

replies(2): >>41837457 #>>41837508 #
69. ttfkam ◴[] No.41837421{3}[source]
A garbage collector really takes away a huge amount of cognitive overhead. In doing away with it, Rust requires that you understand the borrow checker and lifetimes, even if minimally due to extensive use of .clone() in your early code. This ties into all of the different kinds of strings in Rust from str to string to vec[u8], etc.

Unlike Go that only really requires experience in general programming to become rapidly productive, Rust basically requires that you read The Book in its entirety before you even think about applying that knowledge in production. There are just to many interdependent concepts to hand wave away the prep time. It all (mostly) makes sense once you've familiarized yourself with the basic concepts, but it's a training step you simply cannot skip without inflicting a fair amount of pain on yourself and others.

replies(1): >>41839040 #
70. jcgrillo ◴[] No.41837442{3}[source]
My experience is the opposite. I spend a lot more time in a debugger when I work with golang than when I'm working with rust. Sure, there's a learning curve with rust's borrow checker, but once you figure out how to use it I find rust to be a much more "flow state" development experience, with less interruptions of the form "what is this program actually doing and why?"
replies(1): >>41837491 #
71. ◴[] No.41837457{6}[source]
72. ttfkam ◴[] No.41837462{4}[source]
I'd put even more concerns on C++. All the same concerns plus all the concerns that arise from the compiler not helping you nearly as much. It's easy with C++ to be lulled into a false sense of security because it compiles, and your trivial happy path works. Under load or with unforeseen input, the chance for memory corruption is massive even for experts let alone beginners because it only takes one to bring down a whole process.

C++ is better than it used to be, but it was truly atrocious in that regard for decades. It was simply the least worst option for those decades.

I do not consider it the least worst option anymore.

73. gwd ◴[] No.41837486{3}[source]
Right -- you can choose a niche technology, as long as you're willing to commit to the additional costs of doing more training, being involved in the community, and so on. Those additional costs (and/or the risk of not doing so) need to be factored into the decision to use a technology.
74. amelius ◴[] No.41837491{4}[source]
You forget that a lot of projects benefit greatly from generalized GC.
replies(1): >>41837749 #
75. stonemetal12 ◴[] No.41837495[source]
If a company chooses non standard tools then they are doing it with the knowledge that they will have to train new hires in it. Random employee using non standard tools without the company making the decision to pivot to embracing it, aka training existing\new employees in that tool, is just making stuff that your company will have to throw away and redo.

So XenServer embracing OCaml is nothing like Random Gamdev writing some scripts in Rust without the team deciding to embrace the change.

76. whatshisface ◴[] No.41837508{6}[source]
You're not likely to be paid top of the market at a firm whose biggest concern is that you might be more flexible and a faster learner than anyone else they were able to hire.
77. ttfkam ◴[] No.41837514{3}[source]
> This is the major barrier. It's a difficult language to learn for people who've worked with a compiled, strictly typed language with manual memory management.

This was not what Google and others found when they studied it.

https://www.theregister.com/AMP/2024/03/31/rust_google_c/

> More significant, Bergstrom said, is the comparison of rewrites of C++ code into Rust.

> "In every case we've seen a decrease by more than 2x in the amount of effort required to both build the services in Rust as well as maintain and update those services written in Rust," he said.

replies(1): >>41847003 #
78. AnimalMuppet ◴[] No.41837561[source]
But 28 years ago with Java, it had a clear edge in a certain space. It came with a ton of libraries, so you didn't have to write a bunch of code. And it had garbage collection, so a bunch of problems just went away. For code that didn't have to be close to the metal, it was clearly superior. And it was pretty easy to learn for C++ developers.

Rust may have an advantage in certain places (no segfaults is a definite win). But replacing working Python scripts is almost certainly not that place. Also, for a C++ developer, Rust isn't as easy to learn as Java.

Rust may get there. But don't use Java's success to predict Rust's trajectory.

replies(1): >>41838639 #
79. ◴[] No.41837578[source]
80. jcgrillo ◴[] No.41837749{5}[source]
No. I didn't forget. It has not been my experience that not having a garbage collector in rust was a problem in practice.
81. 6r17 ◴[] No.41837851{5}[source]
Building a web app with rocket is like using a fine BMW to go on highway. It just feels right- I love Guards and what not he added in his framework ; absolutely refreshing work !
82. 6r17 ◴[] No.41837858{4}[source]
Have you heard of something called climate change ?
replies(1): >>41844120 #
83. fredrikholm ◴[] No.41837885{6}[source]
I've gotten far with type switching on an interface that amounts to a single function that does nothing.

Unfortunately it does nothing in terms of exhaustiveness, but it effectively gives you sum types which IME are so, so much easier to work with than state pattern or other inject-an-object-abstractions. Not having to design an API (that later leaks) is rewarding enough.

It's strangely efficient as well. I've experimented with implementing sum types via tagged C-style unions and at every (ad hoc, micro) benchmark I've tried them against, type switching on an interface comes out on top.

replies(1): >>41837914 #
84. pdimitar ◴[] No.41837914{7}[source]
Can you point me at an article that demonstrates Golang type switching? Does not ring bell at the moment for me so I'd love to see the code.
replies(1): >>41838093 #
85. ◴[] No.41838043{3}[source]
86. assbuttbuttass ◴[] No.41838093{8}[source]
https://go.dev/tour/methods/16
replies(1): >>41838107 #
87. pdimitar ◴[] No.41838107{9}[source]
Thanks, for some reason I never stumbled upon this. Very valuable, I am bookmarking it.
88. geodel ◴[] No.41838356[source]
> I think Rust is much more likely to follow Java's trajectory than OCaml's:

This looks like pipe dream of those Rust devs who usually claim that Rust borrow checker is easiest thing since heating HotPocket in microwave.

89. dijksterhuis ◴[] No.41838437{4}[source]
from what i looked at, go was a bit more complicated than rust for cross compilation. but it was still a lot less complicated than sorting it out for python. dunno. was at least two years since i looked at it, but i remember rust coming out on top in my mind.

unfortunately the same maintenance issue applied -- it was a python / R shop so no-one else would have been able to change the code once i left.

replies(1): >>41838819 #
90. bsnnkv ◴[] No.41838458[source]
> I can believe this, but it's funny because I work on a project where the main product is written in Rust, and it's the build tools written in Python that are the technical debt that nobody really wants to touch!

Oh hi! You must be my teammate!

I joined a team like this and just started a personal build/dev/ops tool repo in Rust for things that I needed but were not automated. Over time it has become an "official" repo and renamed to be blessed with an official "org" package prefix.

When I started this project and people were interested, I was asked why I didn't just add to the Python repo; I said that others are free to rewrite them if they want to, but I can't justify spending days messing around with Python to achieve what I can in less than 30 minutes with Rust when I need to quickly automate a tedious task.

Edit: A lot of downvotes on this, but in case it wasn't clear - the team is happy that someone took the time to scaffold a repo in Rust that everyone feels more confident in contributing to, since the overwhelming majority of the codebase is written in Rust and the Python tools repo is full of annoying runtime errors that could be trivially caught at compile time.

The end result is more people feeling more empowered to automate repetitive and tedious tasks which can easily be fudged when executed manually instead of suffering with them because someone who isn't even here anymore decided to start a tools repo in Python for a team that almost exclusively writes code in Rust.

91. melodyogonna ◴[] No.41838548[source]
I don't think it needs rewriting if the original version was in Python. What you need to do is return the original Python version
replies(1): >>41858900 #
92. Keyframe ◴[] No.41838639{3}[source]
Java had a lot of things going on for it. Huge marketing push, whole set of everything both language and lib-wise, and killer domain which was SIM and mobile which if you wanted to do it was your only choice. Rust has no such things at the level Java had when it rose. It's more of an organic grassroots movement certain companies have started to pick up.
replies(1): >>41839131 #
93. hu3 ◴[] No.41838819{5}[source]
AFAIK Go has one of, if not the easiest cross compilation stories.

This is all it takes to build a linux arm64 binary:

  env GOOS=linux GOARCH=arm64 go build your_program
You can even run that from Windows and it will just work.

This is how you list all possible targets:

  go tool dist list
If you want to generate binaries for many linux distros, you can even use a simple bash script:

  #!/usr/bin/bash
  archs=(amd64 arm64 ppc64le ppc64 s390x)

  for arch in ${archs[@]}
  do
    env GOOS=linux GOARCH=${arch} go build -o your_program_${arch}
  done
replies(2): >>41839951 #>>41846978 #
94. throwawaymaths ◴[] No.41838894[source]
Strong "only use this subset of c++" energy
replies(1): >>41840666 #
95. oneshtein ◴[] No.41839040{4}[source]
It doesn't match my experience with Rust. How much code you wrote in Rust?
96. tcmart14 ◴[] No.41839131{4}[source]
Yea it did, and its important when making comparisons to not glaze over it. Java with the, write once and run anywhere mantra due to the JVM was a huge deal. Granted, in some ways it didn't pan out as well as advertised (embedded Java), but for an enterprise desktop application, it was definitely a huge win for the time.
replies(1): >>41839302 #
97. pjmlp ◴[] No.41839271{5}[source]
Still leaves a lot to be desired versus Object Pascal from Apple/Borland days, or Delphi afterwards.
replies(1): >>41839813 #
98. pjmlp ◴[] No.41839302{5}[source]
Apparently there was something to it, otherwise we wouldn't have every other day a WebAssembly startup being upvoted.
99. tokinonagare ◴[] No.41839371[source]
> some tools were written in Rust. The tools were a re-write

Some memes just write themselves.

100. cozzyd ◴[] No.41839760{4}[source]
You missed the point of the rule of thumb. Maybe rephrasing it as if 15 years ago you would have written it in C++ would help.
replies(1): >>41839897 #
101. tashmahalic ◴[] No.41839813{6}[source]
What makes those better?
replies(2): >>41840017 #>>41844588 #
102. j-pb ◴[] No.41839897{5}[source]
Nope. C++ has mostly downsides, Rust has significant upsides.

A good rule of thumb would be: is correctness and code confidence more important than learning curve and compile times? If so Rust, otherwise JS or Python (with possibly parts in Rust).

replies(1): >>41846185 #
103. dijksterhuis ◴[] No.41839951{6}[source]
thats definitely not the commands the guide i looked at had lol

looks on par with rust then. go is the next one for me to dive into when im doing fiddling with rust audio stuff.

regardless, wouldn’t have worked at last job as no-one knew go either. would have been easier probably to get someone in, but i spent a year trying to get one new hire to no avail, so doubtful.

replies(1): >>41843131 #
104. j-pb ◴[] No.41840001{5}[source]
I write most of my stuff in a combination of Python, JS/TS and Rust these days with some form of Interop between them. I.e. mostly Python Marimo notebook with JS visualisations, and PyO3 Rust bindings.

Tbh I don't find myself to be "slow" in rust. Sure for quick exploratory stuff the notebook-environment and introspection capabilities of a dynamic language are definitely nice (e.g. when taking apart some unknown JSON data format), but especially when it comes to complex logic and refactorings Rusts type system is really making a big positive impact on productivity.

Sure TypeScripts type system is also powerful, but Rust is consistently better at infering types from closures and function calls, and the existing types and tooling story is miles ahead of TS. (and I've never encountered an easier to setup/use model checking language integration than Kani)

For one-offs where correctness doesn't matter, sure throw $SCRIPTING_LANG at it. But once you want correct software, I'd still choose Rust in a heartbeat.

105. pjmlp ◴[] No.41840017{7}[source]
The language features, designed for full stack systems programming, IDE tooling, the frameworks bundled with the compiler, first class support for binary libraries ecosystem, no culture against modern times...
106. ram_rar ◴[] No.41840322[source]
> The reality was that these tools were unmaintainable by the rest of the company. Only the author "knew" Rust and it was hard to justify a new hire Rust developer to maintain this small set of tools.

Only If I had a dollar for everytime this happens. Choosing a language for the company is a business decision. we have a similar issue with Elixir and now the entire team is spending a quarter just to get rid of it. For anyone building startup on LLMs , this is one killer application I would pay for. The generated code doesn't event have to 100% correct, just right enough for devs to tweek would go a long way.

107. adamc ◴[] No.41840370[source]
Twenty-four years ago, Python already looked better to me. I maintained a big Perl 5 app. Yuck. The problem wasn't that you couldn't write it, the problem was that you had to be able to read widely differing styles of Perl... and if you wanted to read library code, it was a huge pain. I quit maintaining that system in 2005, and it has barely changed since, from what I'm told.

Viability of a language is certainly a consideration, but the characteristics of the language also matter.

What you couldn't really predict about Java in, say, 2000, was how much the complexity of its ecosystem would grow. In 2000 (or 2005) it was fairly easy to move in and out of Java from project to project. That is not true today. My fear on the Rust front is that it's going to be another C++, where the complexity is considerable and requires more or less full-time expertise.

replies(2): >>41845136 #>>41846965 #
108. adamc ◴[] No.41840408{3}[source]
I dunno. Java was pretty easy to learn for its first decade. Eventually, the complexity of Java and, especially, its toolchain ballooned. By then there were already a lot of Java developers, though.

Rust is a different beast, much more complex from the outset, and not trivial to learn (as Java was). It will grow if that's where the best jobs are, but I don't think it is going to grow in the way Java did, because the difficulty and dynamics are different. There was a good stretch at the beginning where Java was both very helpful on your resume and really easy to learn.

replies(1): >>41844626 #
109. serial_dev ◴[] No.41840444[source]
While I get most of your points, I believe some companies sometimes can or maybe even should experiment with new languages, and see what benefits it brings them.

The important part is evaluating the experiment and having the courage to say “well that didn’t work out, let’s go back to the original version”.

They should have evaluated what is “slightly faster”, how much money it saves and how much it will cost extra to maintain it.

110. rixed ◴[] No.41840501{6}[source]
Yes it does very much depend on your starting point.

For instance, coming from C Unix programming, it took me 2 hours to try OCaml 15 years ago or so, because Ocaml tooling, at that time, was the same as C. Basically, I made a generic rule for my makefiles to call ocamlopt instead of gcc and I was good to go. Installing a dependency was just the usual "./configure && make install"

This was simple for me, but not for students with no Unix background. In that context "opam install" was simpler, although it's objectively more complex as it adds a few additional layers on top of the same process.

replies(1): >>41840576 #
111. pdimitar ◴[] No.41840576{7}[source]
Yep, it's about your background.

I moved away from makefiles long ago and I don't regret it, for a multitude of reasons that are well explained in many places.

`cargo add ...` is great and I wish every language offered a tool like that.

replies(1): >>41840628 #
112. rixed ◴[] No.41840628{8}[source]
Even when i use cargo or go or node, make is still needed to build everything that's not just code.
replies(2): >>41840678 #>>41841720 #
113. iknowstuff ◴[] No.41840666{3}[source]
except using a different set of rust is not gonna allow RCEs or leak your data to the internet
replies(1): >>41842638 #
114. pdimitar ◴[] No.41840678{9}[source]
If you say so. There are plenty of tools that can do more or less the same without having to remember weird bash-isms and pattern expansion rules.

I use `just` for project tasks, but there are many others.

replies(1): >>41844788 #
115. sshine ◴[] No.41841720{9}[source]
> make is still needed

You mean: I still need make

For example, build.rs replaces some uses of a makefile.

> build everything that's not just code

Have you heard of: Just, Nix, Bazel, Helm, Terraform?

Depending on the situation, there are many things you can build that aren't strictly code where you can use a bunch of other tools than make.

116. ndndjdjdn ◴[] No.41841777{5}[source]
Slightly disagree.

Needing the managers permission is more of a "wartime" mode.

For peacetime the management should set a culture of peer review and data and logic driven discussion. The culture would ideally have a Rust lover sit there and think "would love to do this in Rust but...." because they know their peers will be affected by this decision.

The problem with management approval required is it usually meams no or bias towards management pressures. A management veto that is occasionally used may be better.

Disclosure: not a Rust programmer but pretty neutral on it. It is on my radar if I get a problem Node or Go can't solve.

117. sshine ◴[] No.41841821{4}[source]
> Rust has stellar tooling

I came for the job opportunities.

I stayed for the tooling.

> Haskell and OCaml are great but after I spent half an afternoon trying to bring in a dependency in a little-more-than-hello-world Haskell program

I had a similar experience trying to make Haskell's LSP work in test files. After ten years of using Haskell for academic and hobby projects, I still couldn't make the red squigglies go away in test files. With Rust I struggle similarly when dealing with cross-compilation and a complex set of feature flags on Nix. But at least this is not "Hello World!" failing.

replies(1): >>41841915 #
118. givemeethekeys ◴[] No.41841832{3}[source]
No one has the "right", as you put it. The learning of and using Rust was approved by the employee's superiors.

If anything, companies expecting employees to know their specific tech stack on day 1 of the job is much less common an expectation outside of Software engineering.

119. pdimitar ◴[] No.41841915{5}[source]
Well to be fair to Rust, Nix can drive anyone crazy. I tried that one too and figured they sniffed way too much of their own drugs, if you pardon the expression. In the meantime I learned `just` in 10 minutes.

Sure, not the same usage patterns, I get that of course, and I love the idea of Nix but they could have went about it very differently with a much better UX / DX... and they refused.

Side topic though, sorry for the digression. Main point was that if you use Rust normally without any weird and not fully accounted for wrappers then everything works fine. I just fired Neovim in a personal project I haven't touched in a year -- 20-30 seconds of LSP compiling stuff and I saw my project-wide compiler warnings immediately after.

120. llm_trw ◴[] No.41842447{5}[source]
Again if it's so great fork the kernel and make it great. People will flock to you if you can manage.
121. throwawaymaths ◴[] No.41842638{4}[source]
Eh. An enterprising young developer could build an ECS style system with references as u32 indices and all bets are off.
replies(1): >>41844095 #
122. hu3 ◴[] No.41843131{7}[source]
fair enough
123. blandflakes ◴[] No.41843246{4}[source]
I find that sticking to a single stack is severely underrated.
124. sshine ◴[] No.41843326{4}[source]
The thing about Perl developers is they tend to stick around. At the last Perl shop I worked for, the average employment time must have exceeded 10 years. I could say the same of Prolog and 25 year average employments.
125. 01HNNWZ0MV43FF ◴[] No.41844095{5}[source]
"the worst of all are the stupid and diligent"
126. makeitdouble ◴[] No.41844111{5}[source]
I'd agree with ndndjdjdn in that management getting involved should be the last resort, and potentially only to veto a very bad decision.

I think the main issue here is having a single dev going for Rust. Ideally someone interested in a new technology would pitch it to the team, and they'd discuss if they want to have a shot a it and if they can justify the investment for the whole team. That's where a tech that doesn't fit would be discussed and rejected, potentially with a proposition for a better option that devs are also interested in.

Even if it starts with just a prototype, if it touches production the other members of the team should be able to review it and maintain if needed.

That's this whole bit missing, and the team looking at it as a thing of life, that makes me think they're not focused on pushing things forward anymore at an org level.

127. 01HNNWZ0MV43FF ◴[] No.41844120{5}[source]
I agree in principle, but it's not something for individual charity to solve. The cost of pollution should be factored into energy prices with a tax.

Then everyone will know, numerically, whether Python is worth it. Maybe it is!

128. metadat ◴[] No.41844588{7}[source]
People used to whip up Delphi GUI apps in an hour or two. I'm not sure how to achieve this so efficiently with "modern" tools and languages.

Maybe Python, but it doesn't compile to a static bin.

129. tadfisher ◴[] No.41844626{4}[source]
The real comparison is between Rust and C++, even though folks seem to be pushing Rust for web services and internal tooling. And modern C++ is an absolute monster in terms of complexity, often just dancing around problems that Rust solves pretty elegantly with ownership and lifetimes.
replies(1): >>41846717 #
130. rixed ◴[] No.41844788{10}[source]
I know there are many others, but make does any job, is very simple (once you have realized that recursive make is not needed for decades), is not tied to a specific environment, had been around for ages and will still be around 20 years from now. I don't think I'm easily satisfied with tools, but I have never had a reason to look for another tool that would solve a problem i don't have.
replies(1): >>41845162 #
131. sshine ◴[] No.41845136{3}[source]
> My fear on the Rust front is that it's going to be another C++, where the complexity is considerable and requires more or less full-time expertise.

You can certainly make a case for that being inevitable in some ways:

Rust can be written in many ways to address different levels of abstraction, and when you stack those, you can require the reader to know about all of them.

If someone gives me a piece of Python code, it can only be hard to understand if the domain is hard (e.g physics) or it is poorly written.

In that way, Rust belongs with C++ and Haskell. The abstractions that Rust will introduce over time won’t grow in all directions like with C++ and Haskell (e.g. you won’t get higher-kinded types or GADTs in the next ten years).

132. sshine ◴[] No.41845162{11}[source]
If you like Makefile, you’ll like Just.
133. sshine ◴[] No.41845184{3}[source]
I’ve been that guy, and I certainly believe in myself. ;-)

I don’t think it’s reckless to have e.g. Haskell or OCaml as your go-to language for a decade, and switch it out with Rust.

134. LunaSea ◴[] No.41846185{6}[source]
C++ is incredibly fast and still the language of choice for a lot if not most computing intensive tasks.
replies(1): >>41847084 #
135. desipenguin ◴[] No.41846616[source]
When you read statements like [^1] "I did the other trick: you take your non-Rust job and make it a Rust job." from the likes of Luca Palmieri - what do you expect ?

I don't blame them. If they were able to convince their manager to re-write python scripts in rust, good for them. They got "on the job/real life" rust experience. They solved the "chicken and the egg" problem in rust hiring - for themselves.

when companies can fire engineers when they are in trouble, engineers are bound to "think for themselves"

[^1]: https://filtra.io/rust-mainmatter-jun-24

136. pjmlp ◴[] No.41846717{5}[source]
However that comparision misses that C++ is reaching 50's, while Rust still isn't allowed to drink.
replies(1): >>41855991 #
137. pjmlp ◴[] No.41846729{4}[source]
Most of that stuff can actually be done in compiled managed languages, and people reach out to C++ because of bias against anything with automatic resource management, even if C++ like features are part of the package.
138. pjmlp ◴[] No.41846965{3}[source]
In 2000, Java was still about doing dancing applets, businesses only started taking Java marketing seriously after two things happened, Hotspot became a thing, making it more appealing than C++ for cross-platform server code, versus dealing with the mess of writing portable C++ code when most compilers were a mix of C++ARM and catching up to C++98, with C++ compiler specific frameworks being heavily used.

The second one was Sun's Distributed Objects Everywhere project being canceled, and the Objective-C code being reborn into the first J2EE proposal.

There was nothing else like that for business software other than Smalltalk and later .NET, however most Java vendors were ex-Smalltalkers, and in 2001 .NET was a no-go for anyone that would care about supporting UNIX deployments as well.

In 2001, we were moving away from scripting + write extensions into C, into Java, and only pivoted into .NET because being a MSFT partner with access to the "partner eyes only" betas from Microsft before .NET was announced, additionally there was some ideas to move away from UNIX customers.

However by 2006, while at Nokia Networks, a strong UNIX shop back then, the large majority of their applications were going into the Rewrite into Java phase.

139. pjmlp ◴[] No.41846978{6}[source]
Asterisk: As long as it is pure Go code.
140. pjmlp ◴[] No.41846984{3}[source]
Pretty much it.
141. pjmlp ◴[] No.41847003{4}[source]
Most companies don't have Google level staff, they have folks that don't even care sites like HN exist.
replies(1): >>41854378 #
142. j-pb ◴[] No.41847084{7}[source]
See my initial: > C++ is making a deal with the devil in exchange for speed.
replies(1): >>41853694 #
143. randomdata ◴[] No.41848063[source]
Programming languages are quite uninteresting and not particularly notable. What ended up being so horrible about the codebase that you couldn't take any developer and throw them at the code?
144. sfn42 ◴[] No.41851908[source]
I work in a team where we use C# for our backends and React/TS for our frontends. And of course a lot of other stuff, like Docker, Terraform, Azure etc. I would very strongly encourage anyone who suggested introducing different tools in our project, not to do that.

Not because I don't enjoy learning, but because it's a waste of time. I don't need to learn Rust, C# works fine. I don't need to learn Vue, React works fine. I don't see any value in learning yet another tool to do the same job, I'd much rather spend my time getting actual work done and getting better at using the tools we're already using.

145. LunaSea ◴[] No.41853694{8}[source]
That really doesn't matter when the price of the devil's deal is cheap.

ie: security is rarely a problem when selling software

146. ttfkam ◴[] No.41854378{5}[source]
Every company has folks that don't even care sites like HN exist.
147. phi-go ◴[] No.41855991{6}[source]
What's your point? Doesn't it only matter where things are now, not how long it took to get there? Or is this about more people knowing C++?
148. loa_in_ ◴[] No.41858900{3}[source]
It isn't necessary, that's true. But that doesn't mean it wouldn't be beneficial.