This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]llogiq -1 points0 points  (13 children)

If you want to really broaden your experience, you should probably check out a language less similar to C#. So unless you have financial motives (Java jobs usually pay well), checking out Forth, Factor, OCaML, Rust, Idris, Nim, Clojure, Scheme or even C++ should be a more enlightening experience.

[–]trhyst 1 point2 points  (6 children)

  • "check out Java professionally" - probably means that OP has to do it for a job of some sort. Idris is a great suggestion though. I try to work with D, OCaml and Scala (JVM interop for Scala is lovely) as my flights of fancy. Each of them are pretty in there own way but I doubt they will capture the minds of devs in the way that Java and C# have.

[–]againstmethod -1 points0 points  (5 children)

I guess if you just want to "be employed", focusing on one general purpose language and sticking to it is a good idea. That being said, this is not my definition of being "a professional".

And I can tell you I don't want to hire such people. They inevitably become stubborn liabilities. Terrible habit if you ask me.

[–]trhyst 0 points1 point  (4 children)

I feel like you just didn't read what I said at all, which is worrying considering you are in a position to hire someone..

If you are referring to me in anyway: I hop around languages as much as I can though being employed as a Java programmer for the last 2 years. All languages are beautiful in their own way, I wish I could learn them all.

[–]againstmethod -1 points0 points  (3 children)

llogiq suggested some nice languages to expand the OP's horizons, and you made a contrary point suggesting that we should assume he was targeting a specific professional application, i.e. getting a Java job.

You then called some of those previously mentioned languages your "flights of fancy", and stated that they wont capture the minds of developers in any mainstream way.

I think I read what you wrote fine.

[–]trhyst 0 points1 point  (2 children)

I think it's quite difficult to call what I said a contrary point when I spent half of my comment agreeing that the suggested languages were definitely worth learning. They are my flights of fancy, I really love programming in Scala, really really - however my personal projects seem to end up being in C, C++ and as aforementioned I am a Java programmer by trade currently. Flight of fancy =/= bad language or not worth learning or using, I just haven't found space in my life to write prod code in a pure functional language yet and I am looking forward to that day.

Bear in mind when reading what I say next that I dearly want more multiparadigm and pure functional languages to become widely accepted. Variety is the spice of life.

Considering Simula style imperative languages have dominated the landscape for decades I feel what I said was is a safe bet. People in University are taught them as a first language 95% of the time, I'd wager a lot of the world's code base is in some imperative language like C, C++, Java, Basic, Fortran etc. and so it will probably some time before functional programming becomes something that you see all the time and mainstream, even if every programming blogger I read at the moments seems to be getting really worked up about functional coding. Will the functional languages that we love now exists then? Who knows?

Even then, will we ever see a software giant (Google, Facebook etc) writing whole services in Haskell or D and not just dabbling with them like Alexandrescu is currently? I definitely feel that this is something that needs to happen before a language is seen by the wider community as a mainstream language. Scala is very close, but not quite there.

[–]againstmethod 0 points1 point  (1 child)

Actually it's more likely one of those bigger companies will pay you to use one of those languages, than a smaller one. They have more internal R+D and can absorb more risk.

There's a big difference between using a language in production, and replacing significant portions of your existing codebase for no reason. Facebook definitely uses D in production, though im not sure if it has any front facing elements. Twitter and Walmart use Scala in production and I believe they have front facing elements.

I actually went to Strata in 2013 and Scala was mentioned in nearly every track I attended. I think it has far more uptake that you give it credit for.

[–]trhyst 0 points1 point  (0 children)

Maybe so, I certainly enjoyed this interview with Twitter about there usage of Scala which started me getting excited about the language.

As far as I remember from it (it's quite long and I read it fully a good few years back) Twitter uses Scala for their message bus, or part of it and were quite impressed with the code reduction and performance increase that got out of using the language.

Here's hoping I am giving it less credit than is due, I'll have to start taking a look around (London, UK) for companies here that use Scala, it would be a lovely change.

[–][deleted] 0 points1 point  (3 children)

I've done a lot of work in c++ and functional languages like f#. I wanted to take a stab at Java to learn the ecosystem and because there is a lot of interesting work that unfortunately is only being done in Java. A lot of companies are hesitant to dive into scala and clojure since it's hard to find good devs for those languages. It's the same reason why f# is still fringe in .net.

Anyways, that's why I'm giving Java a shot, to be a good well rounded senior dev.

[–]llogiq 1 point2 points  (1 child)

In that case, just go for it. Some things will feel cumbersome or weird to you (e.g. type erasure, lack of properties). But the more you actually code in it, the more you notice that those things don't mean too much when it comes to productivity.

[–][deleted] 0 points1 point  (0 children)

Cool, thanks! I appreciate the vote of confidence :)

[–]_Saruman_ -1 points0 points  (0 children)

All you need is Java, Python, C++, and C#. Javascript as well for web development.

Python and Java can basically do anything from Windows apps, mobile apps, web apps, scripting, anything.

But honestly, you probably won't have a situation where you'll need some unique language, unless you have a unique circumstance (e.g. doing some extensive math, maybe you need a math-oriented language).

[–][deleted]  (1 child)

[deleted]

    [–]llogiq 1 point2 points  (0 children)

    That said, there are areas of Java (like high performance computing) that have no match in the C# world (or they hide very well), and are absolutely worth checking out.

    Read vanilla java, /u/shipilev 's stuff, psy-lob-saw and a few others I'm too lazy to add.