Satisfying programming languages to learn?

laura

New member
You know that hit of dopamine you get from seeing elegant, efficient code? Or using a language/framework where all the tools you need are there, and it just works? I would like more of that (PHP isn't cutting it, shockingly! Nor is jQuery).

Some that looked interesting:
  • Rust. Sounds like it has a pretty high satisfaction rating, based on Stack Overflow's developer survey, on top of a general cult-like following,
  • Clojure. Also highly rated in Stack Overflow's survey. I watched a video on "hammock driven development" from Rick Hickey, creator of Clojure, and how could I not want to try it after that talk? Also, I used Racket in college, and I kind of miss those lil parentheses.
  • Elixir/Erlang + Phoenix. Yet again, high ratings in the Stack Overflow survey.
  • Svelte, as opposed to Vue, for front-end JS frameworks?
  • Ruby?

Any thoughts on those above, for anyone who's used them? Or any others that I should try? Bonus points if they have a robust job market, but I'm more so looking for something that I can mess with in my free time.

Thank you :)
 
For a full "batteries included" type of experience, C# with .NET is great.
Go is fun to learn just because it's so darn opinionated.
 
For me it's hard to top the first boot of a nice, clean C program running on hardware you built...wait, why the hell is it running backwards!?!
 
For a full "batteries included" type of experience, C# with .NET is great.
Go is fun to learn just because it's so darn opinionated.
I'm not a C# dev but can vouch that it will lead to more opportunities than any other in this region.

That feeling you describe was true of Ruby on Rails around 2015, leading it to be the hotness for several years. I wouldn't say the current RoR feels as smooth (been a ruby dev for 12+ years). C# would be the better time investment imho.

I went on a Rust binge a few weekends ago playing on Codewars. I love how precise and strict it is, and the error checking is fantastic. I would rate it highly for coding puzzles like codewars and leetcode, but I'm not sure it would be as pleasant to build CRUD apps with - granted my experience is minimal at best.

TLDR: It sounds like C# would be a safe bet for this.
 
Small caveat here: I've been bit by developer surveys having a honeymoon period with FOTM -- it's taught me that the wider developer community can sometimes really over-hype something that under-delivers.



For me it's less specifically languages, but what I'm doing with them, I write C# day in and out, it's a decent language, but slogging business logic isn't super rewarding (and I don't think any language would make it rewarding).

C# on a Pi doing GPIO and working with hardware? Oh man it's a powerful language for having low-level access, I end up with little compromise that would either normally be painful in lower level languages (good efficient high performance ORM database access, really solid DI), or clunky and slow in higher level languages (*gestures at all the physical ports on the pi*), I got a lot more to do on this front but being able to build rich modern apps that interact with hardware in a single stack with little compromise is so fun.

Vue and Typescript has made me love the front-end again, everything hybrid was a nightmare, React has the problem of showing Facebook engineering isms in the design, Angular is okay, Vue3 had me hesitant at first but things make sense and aren't super convoluted. TypeScript remedies a lot of things that make Javascript frustrating. We have some rules that set some really good code boundaries for responsibilities and it makes the project layout scale extremely well and everything make sense with less having to keep track of complex context.

But I couldn't write Typescript on the back-end, I find node miserable on the back-end (I've been working in it since 0.10), I'll do it but I won't enjoy it.

Sometimes I do just like banging out a little bit of Ruby/Python for ETL or some system automation, I'm not a huge fan of either language but sometimes when I just need something super small it's the right tool and the available libraries for Python (and similarly for PHP) is extensive.

For me it's hard to top the first boot of a nice, clean C program running on hardware you built...wait, why the hell is it running backwards!?!

C can be really fun, I struggle with the fact that the Arduino system has a terrible IDE and compile times for C (which are known to be long to begin with) are stupidly long on the Arudino, it sucks a lot of the fun out of it for me (I need to try some newer tooling for this though).


Go is fun to learn just because it's so darn opinionated.

I got burned by Go hard when ChaDev used it for a chatbot, felt my hands were constnatly tied by limitations of the language (which has improved since then) -- but I could see the usefulness of the language.
 
Depends by what you mean by satisfaction. I have a good bit of experience with many many languages, but if it means "pleasant to build production apps with" then here is my personal shortlist:
  • Ruby
    • IMHO has the best developer ecosystem around. Pretty much every popular language has stolen from it (in a good way). Except python which still has like 20 thousand package managers to install a package.
    • If you know what you are doing it can be as fast as Rust. I'm porting a ruby program to rust (long story) and performance is basically the same.
    • The standard library is good with exceptions.
  • Rust
    • Dev ecosystem is as good as Ruby's.
    • Best compiler around. Never had a compiler just tell me how to fix my problem.
    • Biggest complaint is the standard library, which is good, but seems like you need a lot of dependencies to do stuff. Reminds me a lot of the problem the node/npm has where gaps in the standard library are filled with a ton of extra libs.
  • Clojure
    • It's a real lisp!
    • Not as good dev ecosystem story as Ruby or Rust but is backed by rock-solid (but kind of long in the tooth enterprisey tools) glued together with stuff like leinengen, which is great.
    • Java, but pleasant. Also Java interop faculties are great.
    • Because it uses the JVM you instantly get access to huge, decades old, ecosystem.
 
Last edited:
I really appreciate all your responses, this is super helpful!

Sounds like C# with .NET would be good to dig deep into, with some smaller projects using Ruby, Rust, Go, Clojure, etc., whenever I can find the time.

For me it's hard to top the first boot of a nice, clean C program running on hardware you built...wait, why the hell is it running backwards!?!
Never really liked C that much, but then again, it's been a few years and I didn't use it for lower-level hardware tasks. Getting an Arduino and actually using C for its intended use would probably be a different experience, lol.

Small caveat here: I've been bit by developer surveys having a honeymoon period with FOTM -- it's taught me that the wider developer community can sometimes really over-hype something that under-delivers.
This is a really good point, and I think one of the reasons why I overlooked C# and .NET.
 
I would also say ruby. It isn’t fast but it’s a joy to use. The language is easy to learn and very satisfying to master. Great ecosystem, good language design for the most part, and most rubyists actually give a shit about writing “beautiful” code. Also being _completely_ object oriented is fun.
 
Back
Top