
Ask HN: If I only learn one static typed language, which one should I learn? - gtt
It all depends on what I what to achieve and I think I want is just a safer and faster python.
======
tmoaad
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.

~~~
gtt
I'm actually thinking about Kotlin. What is your experience with it? Is it
good?

~~~
matanrubin
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).

~~~
tmoaad
Agreed on all points here, especially the interoperability which brings the
benefit of being able to use the massive amount of Java libraries.

------
cercatrova
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.

------
sloaken
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.

------
yagodragon
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.

------
auslegung
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).

~~~
bnchrch
Well I mean you kind of have to get bogged down with monads since it's the
only way to do something with IO, i.e. useful.

(Though I'm biased because I think Haskell is a terrible language for everyday
usage :P )

------
photawe
I would recommend C#. It's really really amazing, you can do both OOP and FP,
and Visual Studio is quite well at handling really large projects.

Debugging is also a bliss.

------
ttymck

        answer, err := GetAnswer()
        if (err != nil) {
          return "Rust"
        }
    

(but yes, you probably want Go)

------
verdverm
Go

There is a poll HN feature if you are curious

------
JS2Java
Go or Nim.

------
bjourne
Learn C or Java. Those languages will be around forever.

------
smlckz
Why no one talking about OCaml?

------
k0t0n0
> safer and faster python.

ohh, f# or Haskell

------
mikecoles
Go for Go.

------
docflabby
C++

