What language(s) to learn? (again)

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

errantlinguist
Posts: 1
Joined: Thu Dec 22, 2011 9:34 pm UTC

What language(s) to learn? (again)

Postby errantlinguist » Thu Dec 22, 2011 10:10 pm UTC

Hello fellow xkcders,

This topic never ceases to die on teh Internets, and I'd like to continue the grand tradition of answering banal, subjective questions on programming languages, namely which one(s) I should learn next.

My main goal is, in addition to gaining overall more and broader programming experience, to essentially add "pretty keywords" on my CV for post-uni job hunting in application development for commercial AI-related topics: This isn't the ideal way of looking at things, but it's rather practical, given that a person who already knows language x has a bit of an advantage for a project using x over an otherwise-equal candidate who doesn't know it.

Currently, I know Java and Python really well, having done some AI/search algorithm/constraint programming/machine learning-type stuff using them. I know a bit of C++ and am improving on this because it shows I'm not just some drone who doesn't know how computers work and there are loads of real projects still using it. I've also used Octave/Matlab/R a bit, but have largely forgotten them. I also had a brief fling with Perl I'd rather not talk about. ;)

I became very interested in Scala because it seem to be the intersection of everything I like about Java and Python (i.e. the functional aspects), without the annoying parts of each language. I'm also interested in (Common) Lisp and Haskell because they both are very functional, with Lisp being more "practical" and letting you basically program in any paradigm you want while Haskell forces you to think completely differently. I think Clojure is also cool because it's basically Lisp which can be used on anything with a JRE-- bringing me to my main point: I want to learn a new language which not only is very different from Java and Python, but also is USEFUL to have as a practical skill in the eyes of most software companies. I know that Haskell and Lisp are largely not used in commercial products, but I know nothing about Scala and Clojure in this regard. However, if I learn CL, will that knowledge not largely transfer over to Clojure as well?

Also, "all of them" is not an answer, because even looking for a job is quite time-consuming, and C++ is already a given, so I'd be learning at least 2 languages anyway.

BTW, do companies even care if you know Octave, Matlab or R or not?

Cheers for the advice!

P.S. No programming-language wars, please: I haven't got a favourite language and I don't want to acquire one; I like Java, Python AND C++, each for different things. *gasp*

xGeovanni
Posts: 36
Joined: Thu Oct 06, 2011 7:03 pm UTC

Re: What language(s) to learn? (again)

Postby xGeovanni » Fri Dec 23, 2011 1:17 am UTC

Good companies care about r/matlab/octave, because they like to know that their workers enjoy programming enough to learn uncommon language, same goes for the other languages listed, especially Lisp.

EvanED
Posts: 4331
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: What language(s) to learn? (again)

Postby EvanED » Fri Dec 23, 2011 5:17 am UTC

CL will definitely help with Clojure, but there are still substantial differences between the two. Scheme is roughly in the middle.

(Personally, with pretty minor exposure to all three, I like Clojure the best overall by a fairly wide margin.)

ewomack
Posts: 8
Joined: Tue Aug 23, 2011 10:56 pm UTC
Contact:

Re: What language(s) to learn? (again)

Postby ewomack » Tue Dec 27, 2011 4:27 am UTC

It all depends on where you want to go. If you want to work as a programmer and become a screen zombie, then C# or Java will help get you in the door in most businesses. Demand for .NET doesn't seem to let up, though some despise it like an evil sadistic aunt. If you're just hobbying around, then loads of languages exist to launch from such as Python, Lisp, Ruby, etc.
Ed Womack
Get Milked

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: What language(s) to learn? (again)

Postby Pesto » Wed Dec 28, 2011 7:57 pm UTC

I'm fond of Groovy, another JVM language, which I think compliments Java rather well. When I was job hunting not too long ago, I actually got one or two calls from companies specifically because I had Groovy on my resume, even though they were primarily Java shops. One of the companies decided to replace all their Perl/Python/whatever scripts with Groovy, because it can be used just like the afore mentioned scripting languages, but interoperates seamlessly with Java.

I've only briefly looked at Scala, but I think it looks spiffy, too. I was very happy to see that it has operator overloading. One of my gripes with Java is the lack of operator overloading.

User avatar
darkspork
Posts: 532
Joined: Tue Sep 23, 2008 12:43 am UTC
Location: Land of Trains and Suburbs

Re: What language(s) to learn? (again)

Postby darkspork » Mon Jan 02, 2012 3:26 am UTC

I'd definitely go with something... different if your goal is to improve your skills. Haskell and Prolog did that pretty well for me. I'd've suggested Ruby if you didn't already know Python.
Shameless Website Promotion: Gamma Energy
My new esoteric programming language: GLOBOL
An experiment to mess with Google Search results: HARDCORE PORNOGRAPHY HARDCORE PORNOGRAPHY

User avatar
Jplus
Posts: 1721
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: What language(s) to learn? (again)

Postby Jplus » Tue Jan 10, 2012 9:02 pm UTC

Something different you say?
If it improves your skills it is useful, regardless of the question whether companies ever use the language.

Serious: Haskell, something Lispy or SQL. Or Prolog, if you like to go into the dark depths of academic programming.
Fun: something esoteric like Brainfuck, unLambda, Piet or Zombie, or a game like CoreWars, RoboCom or Manufactoria.

Perhaps a very different API or framework from what you're used to may also be worth to take a look at, e.g. Qt, CUDA or OpenGL.


As for Haskell, Lisp and paradigms, I think you might be not entirely right about that. I know Haskell and C++, and I think they have some strong similarities with regard to typing system and generic programming. Haskell also has some strong similarities to Python with respect to appearance. Lisp on the other hand is a very different beast.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 11 guests