4 ms·
I couldn't agree more, but if I could make a recommendation. If you already know a mainstream OO language, you won't get much benefit out of learning another in
by leshow 8y ago
I couldn't agree more, but if I could make a recommendation. If you already know a mainstream OO language, you won't get much benefit out of learning another in the same arena. Going from Java to C# you will learn less than going from javascript to ocaml or Java to Haskell.
The best thing (for my own learning) I ever decided to do was learn Haskell. I have never been paid to write code in Haskell but it gave me such a confidence with languages that I don't think I've seen any language features in any other language that has ever surprised me or that I felt like I couldn't learn. Haskell and it's language extensions will expose you to many many different ideas. It helped me learn Rust, I feel like I can read ocaml, any other functional language doesn't feel like a stretch to read, etc
So, don't just learn many languages. My advice would be to pick languages across paradigms and learn them. Don't waste your time learning 5 object oriented languages.
- sus_007 8y agoOut of curiosity, if you were to point out the focal languages on each paradigm, what would they be ?
- fiddlerwoaroof 8y agoClassic OOP: Smalltalk Metaprogramming / what OOP could have been / interesting error handling: Common Lisp Static Types/FP: Haskell (or Ocaml) Logic Programming: Prolog Untyped FP: Clojure (or Scheme) Actor Model: Erlang (or Elixir) CSP: Clojure w/ core.async (or Go) GUI Development: Lazarus (or Delphi)
- deleted 8y ago[deleted]
- leshow 8y agoThe sibling comment did a great job pointing these out. I agree with most of the points.
- empath75 8y agoFailing to learn how to program in Haskell made me realize that I had absolutely no understanding of what I was really doing when I was coding and sent me down a deep rabbit hole learning all the computer science concepts I hadn’t ever learned as a self taught programmer.
- brendanmc6 8y agoWhat would you recommended first? I'm also self-taught, just JavaScript, typescript and react and a tiny bit of shell scripting. Job never asks for anything more, but I want to get better at designing, engineering, and building scaleable webapps. So more towards "full stack" I guess. Haskell sounds super cool, but it seems like nobody really uses it to build things on the web. They mostly just talk about how it "helped them think".
- programmerdude 8y agoHaskell actually could help a lot with JavaScript. Functional programming, writing stateless functions, function parameters, and generally manipulating functions, are valuable and useful concepts in JavaScript and React, and Haskell forces you to learn and understand them. Alternatively, F# could fill that niche if you prefer its syntax.
- kangax 8y agoReasonML is a good transition from JS to something like OCaml
- throwawayjava 8y agoI had the same experience with lisp, and it's one of the reasons I chose to keep programming (and eventually major in CS) during college. It's crazy how easy it is to learn how to pattern match well enough that you can build really useful stuff while still not really understanding what you're doing. Human brains are amazing.
- Const-me 8y ago> Going from Java to C# you will learn less than going from javascript to ocaml or Java to Haskell. Depends on how you'll use C#. If you'll write Java-style OOP, you'll indeed learn very little. But C# offers much more than Java: generics, FP, LINQ, async-await, dynamic, native interop, unsafe and pointer arithmetic..
- leshow 8y agoI disagree, regardless of 'how you use' c# going from Java to Haskell will be a paradigm change whereas going to c# is an incremental change