4 ms·
Ask HN: If I only learn one static typed language, which one should I learn?
It all depends on what I what to achieve and I think I want is just a safer and faster python.
- JS2Java 6y agoGo or Nim.
- verdverm 6y agoGo There is a poll HN feature if you are curious
- mikecoles 6y agoGo for Go.
- ttymck 6y agoanswer, err := GetAnswer() if (err != nil) { return "Rust" } (but yes, you probably want Go)
- auslegung 6y agoIf 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 6y agoWell 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 )
- tmoaad 6y agoI 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 6y agoI'm actually thinking about Kotlin. What is your experience with it? Is it good?
- matanrubin 6y agoKotlin 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 6y agoAgreed on all points here, especially the interoperability which brings the benefit of being able to use the massive amount of Java libraries.
- tmoaad 6y agoIntrospectively, 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.
- sloaken 6y agoMy 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.
- photawe 6y agoI 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.
- cercatrova 6y agoIf 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.
- k0t0n0 6y ago> safer and faster python. ohh, f# or Haskell
- bjourne 6y agoLearn C or Java. Those languages will be around forever.
- smlckz 6y agoWhy no one talking about OCaml?
- yagodragon 6y agoGo 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.
- docflabby 6y agoC++