If you’re just wanting a safer and faster Python you probably want Go or Rust. I’m very biased towards Haskell and love it so I’m going to recommend you at least read about its pros/cons (don’t get bogged down with syntax or monads yet, just read about what problems it solves).
I might go against the grain here, but if I've had nothing but pure bliss working in Java.
If you're just starting out, Head First Java is the way to go. Then expand your knowledge, look at things like Lombok, or go for one of the languages built on the JVM (Kotlin/Scala). Want insane performance out of the box? Look at Vert.X. There's a library for everything as the language has been around since '95.
Kotlin is fantastic. As a JVM language with excellent interoperability with Java you basically get all the benefits of Java. Its syntax is succinct and expressive, and it has great features which are not available in Java, such as nullable types, coroutines, extension functions and much more.
If Kotlin interests you, I've heard great things on Scala as well (but don't have first hand experience with it so I can't elaborate).
Introspectively, I found that I could achieve a large portion of the Kotlin features with Java8+JavaRX+Lombok but I could see a very strong argument for "Why do I have to learn 3 technologies when I can get everything for free with Kotlin".
Additionally, Kotlin is highly recommended from the folks at Google with regards to Android.
My go to plan is based on debuggers. So whichever language you can find a GREAT debugger in is the one to go with.
Second criteria would be a language which I knew an expert in. There are plenty of good languages, but when you are stuck or need advise, there is nothing like being able to call up your brother and 'discuss' how you plan to do things.
Portability is a nice feature, but with all the available virtual environments, it is less important. Although I must say to be able to occasionally program on my phone, during a boring meeting, would be nice.
If you want a safer and faster Python, use Nim. That's literally what it was made for.
If you want to learn functional programming, learn Rust or Haskell. Rust is more pragmatic and is used more than Haskell, but Haskell has more FP features.
I recommend against Go because it's not really FP, and it has a lot of language inconsistencies compared to Rust for example.
Go is probably the best candidate for a safer and faster python. However, if i had to choose only one statically typed language to learn that would be Java. The language is super popular, the tooling is great. There are tons of learning resources and books. It's used by big tech companies(amazon, google etc) for some serious engineering work. It opens up the door to the jvm world where you can also explore languages like kotlin, scala and clojure.
19 comments
[ 0.25 ms ] story [ 48.7 ms ] threadThere is a poll HN feature if you are curious
(Though I'm biased because I think Haskell is a terrible language for everyday usage :P )
If you're just starting out, Head First Java is the way to go. Then expand your knowledge, look at things like Lombok, or go for one of the languages built on the JVM (Kotlin/Scala). Want insane performance out of the box? Look at Vert.X. There's a library for everything as the language has been around since '95.
If Kotlin interests you, I've heard great things on Scala as well (but don't have first hand experience with it so I can't elaborate).
Additionally, Kotlin is highly recommended from the folks at Google with regards to Android.
Second criteria would be a language which I knew an expert in. There are plenty of good languages, but when you are stuck or need advise, there is nothing like being able to call up your brother and 'discuss' how you plan to do things.
Portability is a nice feature, but with all the available virtual environments, it is less important. Although I must say to be able to occasionally program on my phone, during a boring meeting, would be nice.
Debugging is also a bliss.
If you want to learn functional programming, learn Rust or Haskell. Rust is more pragmatic and is used more than Haskell, but Haskell has more FP features.
I recommend against Go because it's not really FP, and it has a lot of language inconsistencies compared to Rust for example.
ohh, f# or Haskell