I’ve been working with a Javascript (+ TypeScript) + Java + SQL stack for the last 10 years.
For 2024 I’d like to learn a new programming language, just for fun. I don’t have any particular goals in mind, I just want to learn something new. If I can use it later professionally that’d be cool, but if not that’s okay too.
Requirements:
- Runs on linux
- Not interested in languages created by Google or Apple
- No “joke languages”, please
Thank you very much!
EDIT: I ended up ordering the paperback version of the Rust book. Maybe one day I’ll contribute to the Lemmy code base or something :P Thank you all for the replies!!!
Python seems to be a staple for as long as I can remember and it looks like it’s still gonna be going strong for a good while yet!
I’m thinking of taking the dive and finally learning it myself soon.
Python is especially great for quick scripts or PoCs. I’ve been using it a lot lately to prototype some things and it just makes it a breeze
Main complaint is the snake_casing convention. By far my least favorite
Hah I love snake case.
I also love python for distributed micro tasks and data pipelining
I am the only person that feels like snake casing belongs in declarative stuff, data serialization etc. (SQL, protobuf, JSON, YAML…) while camel case elsewhere?
I don’t hold any of that, I just find it the most readable for me.
Packaging solutions kinda sucks, but we’re about to get a JIT in the main CPython so that’s exciting.
When I used to work a lot with Python the packaging solutions available were the bane of my existence. I hope they’ve gotten better by now…
Python’s become very widely used in industry - it’s definitely a plus when looking for jobs these days. TIOBE now says it’s the most popular language in the world.
Id suggest rust, gets you a step closer to the hardware and a bit of a different paradigm than Java while still feeling high level.
Rust is definitely something I’ve been keeping an eye on. The syntax looks a bit scary, to be honest, but looks very versatile.
I’m a Rust noob. At first it’s daunting and nothing will compile. But it’s getting easier and I feel like getting over that initial difficulty is mainly a matter of internalizing a few basic rules, after which it feels more natural. So from what I’ve seen so far, I wouldn’t rate Rust as especially difficult. It certainly feels easier than C++.
For a really challenging language I’d suggest Haskell. That one nearly broke my brain because thinking functionally is really very different if you’re used to more procedural languages. Rust, it seems, teaches you new discipline, but Haskell teaches you a different way of thinking.
Anyway, that’s how it feels as a relative noob in both.
Definitely rust, and definitely use rustrover from jetbrains for an IDE. It’s amazing
C# is a great choice.
Incredibly versatile language and should be an easy jump from java.
These come to mind:
- Elixir to expand the way you think about problems (and maybe your career).
- D to bring familiar conveniences closer to the metal.
- C to understand (and maybe contribute to) a vast ocean of existing software.
- Python for development productivity.
When I first ventured into programming, I felt like a complete novice. With no prior experience, diving into the complex world of coding seemed daunting. That’s when I stumbled upon full stack development service. These services offered a comprehensive solution, covering everything from front end to back end development. It was like having a guiding hand through the intricacies of programming. With their expertise, I was able to navigate the complexities of software development with confidence. Full stack development services became my stepping stone into the world of programming, helping me transform from a novice into a proficient developer.
I would suggest Nim, I had a blast learning it and making a small project. It is not a mainstream language, nor is it a joke language.
Prolog.
It will free your mind.
Personally, the language that’s taught me the most to learn has been Haskell. It has a lot of very interesting ideas and a learning curve that plateaus after most other languages. There are several ideas that have trickled down from Haskell to other parts of the programming world and learning about them in the context Haskell is in my opinion better because you’ll learn about them in a context where they fit in with the rest of the language very well instead of being late additions that offer an alternate way of doing things.
Coming from Java and JS, Haskell has a very different approach to a lot of things so you’ll have to re-learn a lot before you get productive in it. This can be frustrating for some but you’ll learn more if you get over that hump on the other hand.
Haskell doesn’t see very much industry use and arguably isn’t very well suited for industrial application (I haven’t used it professionally so I don’t know personally) so it might not directly help you land any new jobs but it is in my opinion it’s a very good way to develop as a programmer.
Give Clojure a go.
It’s a modern variant of lisp that runs on the JVM and has deep interoperability with Java, so you can leverage your existing knowledge of Java libraries.
But as it’s a lisp, it will have you thinking about problems in a very different way.
I’m a huge fan of Haskell and (for pragmatic purposes) Purescript. Purescript is hard to find much in the way of documentation but it is so similar to Haskell in that the steep learning curve is worth it, IMO. I rarely find a project that I couldn’t accomplish with one or the other or both.
I can recommend Rust - I’m training a few people on it.
And a pure functional programming language like Haskell or Scheme, if you don’t know what functional programming is, or are not comfortable with it. Functional programming needs a different mental approach to traditional (imperative) programming paradigm. Some of the more modern languages like Rust, JS and Python incorporate a lot of functional programming constructs. So it makes sense to learn them.
And a lisp - Common Lisp’s popularity is a public secret. Scheme is also fine. This family is homoiconic (program and data are treated more less the same). The syntax is actually very close to its AST. This gives Lisp unparalleled metaprogramming capabilities - mostly through macros. Macros in traditional languages are nowhere near Lisp Macros.
If it interests you, study a stack based language like Forth or Factor. Though they feel very different from Lisps, they have similar underlying properties. And you get more or less the same advantages.
Learnyouahaskell.com is a good way to get started with Haskell. I’d recommend that as best for your mind expansion mission.
Rust, haskell, python, c++ are all interesting choices. I would argue that c# is too close to what you already know to be interesting.
If I were you though, I’d pick a project first, then decide what language makes sense for it.
This is my favourite list in here, but I’d throw a Lisp in too.
Lisp, Haskell, and Rust should all teach you something new and profound about programming.
I’ll suggest Elixir. It’s a language that runs on the same virtual machine as Erlang, which has proven to be great for ultra-reliable and excellent at managing many, MANY concurrent processes.
Elixir itself builds upon this great foundation with a syntax similar to Ruby, but entirely functional. It’s a delightful language to read and write.
C or C++, specifically with the use of compiler explorer so you can get a feel for how code actually runs.
Common Lisp or Haskell to get a taste of something really different.