5 comments

[ 3.6 ms ] story [ 24.3 ms ] thread
Kind of a follow-up to an earlier question I posted here, "What's the best 'higher level Rust' these days" [0]? Following that discussion, I figured it would be fun to dabble in several of the languages mentioned. I hope to get to still more in the future, but I'm nearing the end of my vacation, so I figured I'd wrap it up where I'm at for now.

A tl;dr of the languages:

* C# - Wow! The real highlight of the experience for me. I was surprised and impressed with how well it performed (dotnet apparently works very well even on my Mac!). The language was "fine", but maybe I should try out F#.

* Deno - I love TypeScript, though on the backend it seems to be only so-so, at this point. The single-threaded performance was good, though. I look forward to where this goes in the future. The docs could use some love, and I think the stdlib will eventually move into the binary once it has settled down a bit.

* Elixir - My darling. I love Elixir for a lot of things, but I was kind of sad to see how poorly it performed compared to all the others. But if performance isn't the most important thing for your use case, the language itself, OTP, and the developer experience can't be beat! And LiveView is so cool and pretty unique.

* Go - I went in kind of looking down on Go, but was surprised with how solid of an experience it is. I found I didn't mind its rudimentary type system as much as I expected, and the performance was good, if not mind-bending like dotnet and rust.

* Rust - A real star. I imagine someone more skilled than me can make it beat dotnet, since I did ample string cloning and other stuff to treat rust more like a high-level language. I was pretty surprised with how easy it was to get going. I'd used rust before a tiny bit, but was still a little scared of it going in.

* Scala - I learned... I don't like it! I enjoyed the experience for every other language, but Scala is too disjointed and in too much flux for me right now. Apparently there's a bit 2 to 3 thing going on, and a lot of the ecosystem that I had heard of (primarily the Play web framework, for this exercise) is still on 2. Beyond that, there seems to be a fractured ecosystem of haskell-style type astronauts and other "better Java" types. I've played with Haskell and Yesod for a webapp before and decided that style of programming is not to my liking.

What should I try next? I'm in progress on Swift, and would like to see just vanilla Java. I'm also curious about Nim, OCaml, Kotlin, and D. And I'm a GitHub sponsor of Zig, so I should probably give that a whirl eventually.

[0] https://news.ycombinator.com/item?id=32984776

I would love if you also added Vlang and shared your experience especially since you're already familiar with Go.
Looks cool! I don't know anything about it, but I'll add it to my list for sure. From the website it looks like it hits my type-desires. I can't tell - is it garbage collected or a manual memory language?
I believe they have a feature where the compiler adds free() calls on your behalf and where it isn't sure either:

- it drops down to GC/RC (you need to ask the dev team which one exactly) or

- you manually handle the memory with `unsafe`

Vlang is younger than the other languages mentioned and just went into beta this year.

It uses GC by default, but its optional (can be "turned off"). Can also manage memory manually. Autofree is to be another option, where the user doesn't have to know about memory management, but will have higher performance than GC. Which will be interesting. Because right now, Vlang with GC and tweaks by the developers, its performing quite well. As mentioned, for autofree, the compiler adds free() calls and the rest is handled by ARC/GC.

The goal, from comments by developers, is to have 3 memory management options. GC, autofree, and manual.