Hacker News new | ask | show | jobs
by pdimitar 475 days ago
Rust is manual by design because people need to micro-manage resources. If you are experienced in it, it still takes a very little time to code your scenario.

Obviously if you don't like the manual-ness of Rust, just use something else. For what you described I'd reach for Elixir or Golang.

I was disagreeing with you that it's not easy or too difficult. Rust just takes a bit of effort and ramping up to get good at. I hated it as well to begin with.

But again -- niches. Rust serves its niche extremely well. For other niches there are other languages and runtimes.

1 comments

[flagged]
Downgrade compared to what?

One-liners work best in comedy, dude.

- I recommend reading the comment history of @neonsunset. He has shared quite some insights, snippets and benchmarks to make the case that if you do not need the absolute bare metal control C or Rust provides, you are better of with either .net or Java.

- Whereas in .net you have the best native interop imaginable for a high level language with a vast SDK. I understood that Java has improved on JNI, but I am not sure how well that compares.

- Programming languages are like a religion, highly inflammable, so I can imagine you would not be swayed by some rando on the internet. I would already be happy if you choose Go over Python, as with the former you win some type safety (but still have a weak type system) and have a good package manager and deployment story.

- Go was designed for Google, to prevent their college grads from implementing bad abstractions. But good abstractions are valuable. A weak type system isn't a great idea (opinion, but reasonable opinion). Back then .net was not really open source (I believe) and not as slim and fast as it is now, and even then, I think Google wants to have control about their own language for their own internal needs.

- Therefore, if you are not Google, Go should likely not be your top pick. Limited area of application, regrettable decisions, tailored for Google.

---

(Sorry for a reply all over the place.)

---

> if you do not need the absolute bare metal control C or Rust provides, you are better of with either .net or Java.

That, like your next point, is a relatively fair statement but it's prone to filter bubble bias as I am sure you are aware. I for example have extracted much more value out of Golang... and I had 9 years with Java, back in the EJB years.

Java and .NET are both VM-based and have noticeable startup time. As such, they are best suited for servers and not for tooling. Golang and Rust (and Zig, and D, V and many other compiled languages) are much better in those areas.

> Programming languages are like a religion, highly inflammable, so I can imagine you would not be swayed by some rando on the internet

Those years are long past me. I form my own opinions and I have enough experience to be able to make fairly accurate assessments with minimum information.

> I would already be happy if you choose Go over Python, as with the former you win some type safety (but still have a weak type system) and have a good package manager and deployment story.

I do exactly that. In fact I am a prominent Python hater. Its fans have gone to admirable heights in their striving to fill the gaps but I wonder will they one day realize this is unnecessary and just go where those gaps don't exist. Maybe never?

And yeah I use Golang for my own purposes. Even thinking of authoring my own bespoke sync and backup solution stepping on Syncthing, GIT and SSH+rsync and package it in Golang. Shell scripts become unpredictable from one scale and on.

> Go was designed for Google, to prevent their college grads from implementing bad abstractions. But good abstractions are valuable. A weak type system isn't a great idea (opinion, but reasonable opinion). Back then .net was not really open source (I believe) and not as slim and fast as it is now, and even then, I think Google wants to have control about their own language for their own internal needs.

That and your next point I fully agree with. That being said, Golang is good enough and I believe many of us here preach "don't let perfect be the enemy of good". And Golang symbolizes exactly that IMO; it's good enough but when your requirements start shooting up then it becomes mediocre. I have stumbled upon Golang's limitations, fairly quickly sadly, that's why I am confining it to certain kinds of projects only (and personal tinkering).

> I recommend reading the comment history of @neonsunset.

I don't mind doing that (per se) but I find appeals to authority and credentialism a bit irritating, I admit.

Plus, his reply was in my eyes a fairly low-effort snark.

> Java and .NET are both VM-based and have noticeable startup time. As such, they are best suited for servers and not for tooling. Golang and Rust (and Zig, and D, V and many other compiled languages) are much better in those areas.

For JIT-based deployments, it is measured in 100-500ms depending on the size of application, sometimes below. .NET has first-party support for NativeAOT deployment mode for a variety workloads: web servers, CLI tools, GUI applications and more.

Go is a VM-based language, where VM provides facilities such as virtual threading with goroutines (which is higher level of abstraction than .NET's execution model), GC, reflection, special handling for FFI. Identical to what .NET does. I don't think the cost and performance profile of BEAM needs additional commentary :)

Go also has weaker GC and compiler implementations and, on optimized code, cannot reach the performance grade of C++ and Rust, something C# can do.

> Those years are long past me. I form my own opinions and I have enough experience to be able to make fairly accurate assessments with minimum information.

The comments under your profile seem to suggest the opposite. Perhaps "minimum information" is impeding fair judgement?

> I don't mind doing that (per se) but I find appeals to authority and credentialism a bit irritating, I admit.

Is there a comment you have in mind which you think is engaging in credentialism?

> Is there a comment you have in mind which you think is engaging in credentialism?

The other guy who told me to inspect your profile. Not you.

> The comments under your profile seem to suggest the opposite.

Sigh. You seem to act in bad faith which immediately loses my interest.

You'll have to take your high and mighty attitude to somebody else. Seems like even HN is not immune from... certain tropes, shall we call them, generously.

Disengaging.

(I would note that EJB is something from the past. Like .net has also really grown.)

> that's why I am confining it to certain kinds of projects only (and personal tinkering).

You have a fair view of Go, I think. I could see that it makes sense to use it as a replacement for bash scripts, especially if you know the language well. Personally I am wanting to dive into using F# for my shell scripting needs. The language leans well into those kind of applications with the pipe operator.

If you ever have the appetite, you should take a look at it as it can be run in interpreted/REPL mode too, which is a nice bonus for quick one-of scripts.

https://blog.lucca.io/2022/05/19/fsharp-script