Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Looking to learn a new language - what would you recommend?

Options
  • 08-03-2017 6:33pm
    #1
    Closed Accounts Posts: 85 ✭✭


    My background is in Java mainly. I have over 4.5 years writing it commercially. I was thinking of learning Python, but then I reconsidered as I only want to do it if it is worth my time. I know bash scripting and that helped me in my day-to-day job before but not in the job prospects front. I want to invest my time in learning a new language for which there is great demand at the moment. Would python be in this category? Or would python be another language that would help me as a software developer in day-to-day tasks (log file analysis etc...). Do Java and Python complement each other? What language would you recommend learning if you know Java based on the current job market?


Comments

  • Registered Users Posts: 580 ✭✭✭ddarcy


    InTheAttic wrote: »
    My background is in Java mainly. I have over 4.5 years writing it commercially. I was thinking of learning Python, but then I reconsidered as I only want to do it if it is worth my time. I know bash scripting and that helped me in my day-to-day job before but not in the job prospects front. I want to invest my time in learning a new language for which there is great demand at the moment. Would python be in this category? Or would python be another language that would help me as a software developer in day-to-day tasks (log file analysis etc...). Do Java and Python complement each other? What language would you recommend learning if you know Java based on the current job market?

    If you have a Java background, Scala would be a good addition. It uses the JVM and allows for java code to be compiled along with Scala code. It's a functional language and is quite powerful. You can use Scala to programme JavaScript and actually enhances it as well.

    You will find that it gets rid of what I call the verbosity of Java. You will see that it just makes life easier for the programmer.

    There is also a high demand for Scala programmers as well.

    I am the same as you I come from a Java background and quite frankly I won't go back. Scala is so much better.

    Python is also good if you are involved with Data Science. It is good to have, but I don't use it much tbh. But it is a good one to have as well. Personally I would go with Scala.


  • Closed Accounts Posts: 85 ✭✭InTheAttic


    ddarcy wrote: »
    If you have a Java background, Scala would be a good addition. It uses the JVM and allows for java code to be compiled along with Scala code. It's a functional language and is quite powerful. You can use Scala to programme JavaScript and actually enhances it as well.

    You will find that it gets rid of what I call the verbosity of Java. You will see that it just makes life easier for the programmer.

    There is also a high demand for Scala programmers as well.

    I am the same as you I come from a Java background and quite frankly I won't go back. Scala is so much better.

    Python is also good if you are involved with Data Science. It is good to have, but I don't use it much tbh. But it is a good one to have as well. Personally I would go with Scala.

    Scala sounds good. I'll take a look at it! Yes I agree, the verbosity of Java is soul-destroying at times. Thanks for the input.


  • Registered Users Posts: 580 ✭✭✭ddarcy


    InTheAttic wrote: »
    Scala sounds good. I'll take a look at it! Yes I agree, the verbosity of Java is soul-destroying at times. Thanks for the input.

    I forgot to add that Scala has a REPL as well like Python. So you can play around with it in terminal/dos.

    You should definitely search out examples comparing Java and Scala code. I've seen a few where you can literally in one line programme something that takes 10+ in Java.

    Again the best part is that you can use your current Java projects and it uses all Java libraries as well. I think it is a quick win per se as you will see it literally is Java code, with powerful additions and less verbosity.


  • Registered Users Posts: 6,120 ✭✭✭Talisman


    Choose a functional programming language like Clojure, Elixir or Scala. If you want to stay in JVM land then Clojure or Scala are where you want to go. Scala will be the easier stepping stone into the world of functional programming. Clojure is a Lisp so it can be a bit of a head wrecker initially depending on your background. Elixir is built on top of the Erlang VM (low-latency, distributed and fault-tolerant systems powering the telecomms world). I started using Elixir a couple of days ago and now I want a job where I can use it on a full time basis.

    Hello world examples:

    Clojure
    (println "Hello world!")
    

    Elixir
    IO.puts "Hello world!"
    

    Scala
    object HelloWorld {
      def main(args: Array[String]): Unit = {
        println("Hello, world!")
      }
    }
    

    My advice would be to give each of them a try before making a decision. Here are some resources to help:

    clojure
    How I Start - Clojure
    Brave Clojure
    Learn Clojure

    elixir
    How I Start - Elixir
    Elixir Recipes
    Elixir School
    Erlang Patterns

    scala
    Scala School


  • Registered Users Posts: 768 ✭✭✭14ned


    ddarcy wrote: »
    If you have a Java background, Scala would be a good addition. It uses the JVM and allows for java code to be compiled along with Scala code. It's a functional language and is quite powerful. You can use Scala to programme JavaScript and actually enhances it as well.

    Python also runs on the JVM: http://www.jython.org/

    Python also runs on the .NET platform too, it's called IronPython and it compiles down to your choice of bytecode or scripting.

    Finally Python also can be JITed into assembler, or if you restrict yourself to a subset of Python it can be compiled into assembler straight.
    You will find that it gets rid of what I call the verbosity of Java. You will see that it just makes life easier for the programmer.

    As does Python.
    There is also a high demand for Scala programmers as well.

    I am the same as you I come from a Java background and quite frankly I won't go back. Scala is so much better.

    Python is also good if you are involved with Data Science. It is good to have, but I don't use it much tbh. But it is a good one to have as well. Personally I would go with Scala.

    The global demand for Python far exceeds that of Scala, plus annual growth in demand is a full order of magnitude higher. In Ireland though, you're probably right they're about even right now, what Python demand there is here is mostly in Finance and Web. And don't get me wrong, Scala is a huge improvement on Java.

    However the OP didn't say what their interest was. If they're looking to burnish their CV, or if they'd like something totally different to Java so they gain an understanding of how awful Java is :)

    If the latter, I'd recommend Haskell for the mind warp and Erlang to get a sense of what's really, really wrong with Java and what Java should have been. Erlang is horribly underutilised unfortunately, I wish Google instead of inventing Go just had invested in making Erlang more popular.

    Finally, back to the CV building, I've started seeing increased recruiter approaches recently about Swift with some very big salaries being offered. Might be one to watch. I'm personally negative on Rust for the long term, I think Swift is going to eclipse it as the next gen systems programming language. I still wish Nim had gotten more traction, but it looks to be a dead end, not enough growth in the userbase.

    Lastly, I hate to recommend C++, but mastering its hideous complexity will make you into a better programmer. It'll take you a decade though.

    Niall


  • Advertisement
  • Registered Users Posts: 6,120 ✭✭✭Talisman


    14ned wrote: »
    If the latter, I'd recommend Haskell for the mind warp and Erlang to get a sense of what's really, really wrong with Java and what Java should have been. Erlang is horribly underutilised unfortunately, I wish Google instead of inventing Go just had invested in making Erlang more popular.
    Elixir has the potential to bring the Ruby on Rails level of hype and excitement to Erlang. Elixir is far more accessible but Erlang is in the background when you need it - you just have to remember to use single quotes for strings when calling Erlang functions.

    A simple example - Erlang has a function to perform a DNS lookup which takes 3 parameters:
    1> inet_res:lookup('google.ie', in, a).
    [{209,85,202,94}]
    

    In Elixir, the Erlang modules are represented by atoms. Calling the Erlang function from within Elixir is almost identical:
    iex(1)> :inet_res.lookup('google.ie', :in, :a)
    [{209, 85, 203, 94}]
    


  • Registered Users Posts: 11,979 ✭✭✭✭Giblet


    Learn python, then the next day learn F# :)


  • Registered Users Posts: 768 ✭✭✭14ned


    Talisman wrote: »
    Elixir has the potential to bring the Ruby on Rails level of hype and excitement to Erlang. Elixir is far more accessible but Erlang is in the background when you need it - you just have to remember to use single quotes for strings when calling Erlang functions.

    Thanks for bringing this up, I had never heard of Elixir before. It appears Elixir is to Erlang as Scala is to Java. Very, very interesting.

    Niall


  • Closed Accounts Posts: 85 ✭✭InTheAttic


    Thanks for all the input folks, it's really helpful!


  • Registered Users Posts: 6,120 ✭✭✭Talisman


    14ned wrote: »
    Thanks for bringing this up, I had never heard of Elixir before. It appears Elixir is to Erlang as Scala is to Java. Very, very interesting.

    Niall
    If you have time on your hands it's a great learning experience. I'm still glowing with new found love for the platform. I have begun to wonder when will the honeymoon period end and the horror of the lurking monster reveal itself.

    I suspect that deployment of a web application will involve some pain because Erlang doesn't suffer from the need to be containerised unlike almost every other technology stack.


  • Advertisement
Advertisement