views:

578

answers:

29

I have become very proficient in Java, and am pretty good at C++. What should my next language be? I'm looking to learn something that will be useful in the workplace, when i get out of college, or something that is easy and fun to tinker with. I know we all have our little favorite language we like to hold up higher than the rest, but what is the one you would recommend most while trying to hold back your bias ;) ?

+21  A: 

Python. It's a dynamic scripting language, implemented via C, and boy is it powerful. I often use it to supplement other code, automate simple tasks, and develop mock-ups of more elaborate solutions which I would develop in another language, because it allows you to code a lot with very little.

Eric S Raymond outlined in a recent blog post how Python has tripled in usage as open-source project language choice. It is increasingly popular and an apt addition to your toolset.

Beau Martínez
Python is certainly easy to like. The more I like Python, the less I like Objective-C. :-)
Nosredna
+1 Assuming you didn't sample everything in the medicine cabinet:)http://xkcd.com/353
Oorang
+13  A: 

For marketability, I would recommend learning one of the .NET languages, either C# or VB.NET.

If you want to expand your horizons, pick up a functional language. They're becoming much more popular, but will help you learn an entire different way of thinking.

Reed Copsey
If you're looking down the "Java-to-C#-Road", from the Java point of View, the languages are very similar. So there's not much point in learning C# if you already know Java well.I'd make your second choice my first one. Being able to think in functional terms sure helps understanding certain algorithms and programming paradigms.
kryoko
Hit the nail on the head Reed. Much easier to find a job slinging .net than python and as we all know developers gotta eat.
Hardwareguy
@kryoko: C# and VB.NET are nearly identical, conceptually. There are very, very few things that work in one and not the other - so once you know one (and, more importantly, the framework), you can pick up the other in no time flat.
Reed Copsey
+3  A: 

Boo

Write a few lines of code with it and you'll understand.

JTA
Why Boo rather than Python?
Nosredna
Mainly because I learned Boo before ever looking at Python. Plus, having the .NET framework is nice (no experience with IronPython). In general, I wouldn't say one is better than the other. I just prefer to use Boo whenever I can. I don't like trendy things either, so that may be part of it :)
JTA
I keep looking at Boo, because it does look nice. I like Python because it's everywhere, not just .NET (and--I know--Mono).
Nosredna
+8  A: 

Market wise I would say C# or just learning the .Net framework all together

TStamper
+2  A: 

Java and C++, I would have to say C#. Seems like the next logical step to me, I really enjoy that language.

Personal preference though...

Mark Kadlec
I think C# is even better than Java!
Beau Martínez
It isn't different enough. It won't teach him anything he doesn't already know, or give him any more capabilities, other than another bullet point on his resume. And with his background, it's something he should be able to pick up on demand (and employers should know that). It's better for him to learn a different class of language (a dynamic scripting language such as Python, or a functional language such as Haskell).
Adam Jaskiewicz
+1  A: 

PHP - its got its flaws, but you can be a web wizard in no time.

Perl - Impress your peers with obfuscated code no one can read!

TCL - Readers choice for most underrated language.

Byron Whitlock
Perl, haha!
Beau Martínez
The camel says *ptooeee*
Oorang
+7  A: 

There are 2 languages I could recommend, depending on which way you want to go.

For higher level languages, learning C# would be a definitely plus. C# is starting to gain widespread prominence in the workplace, so knowing it opens up your options a lot.

Learning x86 assembly language could also be useful, as it will better help you understand how things work from the lowest level. Also it's invaluable for reverse engineering and debugging code that interfaces with third party libraries where you don't have access to their source code.

Gerald
+1  A: 

Perl is great for many little tasks that Java or C++ are too heavyweight for.

I use it practically every day, and it fits very nicely into unix pipe commands.

Alex Brown
+3  A: 

RIA development seems to be getting stronger and stronger. I would learn a language for developing RIAs:

  • C# Silverlight
  • Flex/Flash
  • Javascript/Ajax
gonzohunter
+3  A: 

Tiobe keeps track of language popularity if you'd like something a little more in depth: http://www.tiobe.com/content/paperinfo/tpci/index.html

For my own 2 cents I'd say C# is the way to go. It's good for web or application development, it's flexible, Object oriented, and there free IDEs for it.

And if you learn C# you may be surprised to know you almost know Java:)

Edit: It's also occasionally beneficial to go out on monster and just see how many people are hiring for the language you are considering, who those people are, and what they are paying:)

Oorang
I agree with both checking Tiobe and learning C#. Microsoft has done some incredible stuff with LINQ and adding some functional capabilities to their imperative languages. After .NET, Java feels downright primitive. Working with lists without the IEnumerable(Of T) extension methods is not an experience I'd ever like to have again.
Daniel Straight
+2  A: 

I have been having a blast writing iPhone Applications using Objective-C for the past two years.

As someone coming out of college, you can build apps for the iPhone where the total scope of the project is smaller than other platforms.

Obj-C is currently a very marketable skill.

Brad Smith
+4  A: 

Scheme, to expose you to a new way of programming. (Maybe F#; I don't know much about that.)

This falls into the "fun to tinker with" category, but you'll find experience with it to be very helpful down the line.

David Thornley
+6  A: 

I'm surprised no-one's mentioned Ruby yet. That's definitely going to be my next challenge.

Chris Simpson
Is it just me or has the momentum gone from Python to Ruby back to Python in the last 5 years? Seems like 2 years ago all I heard was Ruby, Ruby, Ruby.
Nosredna
+1  A: 

I suggest something as different as possible from Java/C++. This has both direct and indirect value: employers who are looking for programmers will see that you're not Just Another Java Programmer, and it will show you new ways of thinking about programming even if you only ever write Java.

In that vein, I'd suggest languages like Haskell, Prolog, Lisp, Erlang, or Self.

Ken
+1  A: 

Since you only used imperative programming languages so far I'd say you should go for the long shot and learn a functional language next. Why? Functional programming will help you shaping your understanding of programming languages- and style.

So my recommendation would be Haskell or something alike.

kryoko
+8  A: 

JavaScript. First you think you're in C, then it gets weird. Closures, first-class functions, arrays that can hold multiple types at once. Functional programming. The home of JSON. It's like a carnival.

And it turns out that there are quite a few JavaScript interpreters out there in the wild. You're soaking in one now.

Nosredna
Javascript is a good one, there's a lot of use for it in reality too.
Riddari
Agree with Javascript, but add HTML and CSS to it. Javascript without them is pretty useless.
Arve Systad
@Arve: I disagree. JS has lots of uses outside of web scripting. But even ignoring that fact, it's such a useful language to learn just for the concepts. On the other hand, learning HTML and CSS is completely useless if you're never going to do web development.
musicfreak
JavaScript is now the interpreter inside a lot of apps. You don't have to learn it just for web.
Nosredna
+1  A: 

I have been using PHP professionally for the last 3 years, but I lean towards Python, Java and C#

TrinityByte
+1  A: 

since no one else has suggested it, Lua. It has very understandable syntax, tons of useful libraries, and is quite flexible.

RCIX
+2  A: 

looking at the tag stats on the sidebar of SO, questions on C# (approx 24750) far outnumber the next tag (.net, at approx 15600) . This might not be a good indication of workplace usefulness, but it does imply that there is demand for C# knowledge out there.

akf
+3  A: 

For me, Python is the one whose syntax is easiest to remember and most fun to play with.

SQL is something that will always be useful to know.

Erlang would be my vote for a functional language since it also addresses what will be an increasing importance of using multiple processors.

Hard to avoid the importance of knowing Javascript, too.

Anon
+2  A: 

Ruby (on Rails) is great fun and so quick to work with. And coming from a M$ .NET background I enjoy the feeling of freedom I get from finally using opensource tools and platforms! Sure, it doesn't scale like the big boys (or so I am told) but it's perfect for weekend tinkering :)

JS

John Schulze
A: 

Since you're proficient with Java already, I HIGHLY recommend learning Groovy. It's kinda like Java++. 100% Java compatible - in fact, it is built directly on top of Java, but is super sweet. Then, check out Grails (ala Ruby on Rails conventions). You can thank me later.

A: 

If you want to make sure you're miserable for the rest of your programming career, learn Smalltalk. Because once you've worked in it, you'll be ruined for the "industry standard" languages.

  • You'll be wondering why you have to cast a value when you know it's going to return the proper object.
  • You'll wonder why it's so hard to change code while debugging and immediately try it in the same session.
  • You'll hate how you can't pick up right where you left off the night before. I'm talking right in the middle of stepping through code in the debugger.
  • And a million other things that this little language from the 80's does better than the "modern languages" of today.
mamboking
A: 

C# and the .net Framework if you want to go the way of the Microsoft.

JavaScript is going to be your best bet if you want to do front end web stuff.

PHP is a good choice for free web development on the backend.

Jonathan S.
A: 

--- c# ---

alchemical
A: 

C#. Everyone loves C# (even the VB.NET developers lol), and from what I can tell, most of the web application developers are using it. It can be something that can make you money right off the bat if you can get some certifications online, or even a decent entry level job.

MattK311
A: 

I'd say it depends on if you want to learn the language for your own development, or if you need to find a job - and then it could depend on where you live. When I was looking for work 4 years ago or so, I wanted to know whether I should learn C#/.NET or Java, since it seemed those were the two "languages" at the time that I saw a lot on job requirements. After talking to some consultants in the area, the consensus was, "If you want to work on this side of the mountain (Salt Lake City), you need .NET and C#. If you want to work on the other side of the mountain (Utah County, Provo, Brigham Young University area), you need to know Java."

To cut my post short, I use and love C# :) The choice can depend on what you want to develop for and who you will develop for. Either way, it's great fun to learn a new language. Good luck!

Eddie
A: 

As I am currently living in the C# world I would of course suggest C#. I have to say that it is the most marketable language that I have ever taken the time to get proficient with! It is not a language that is limited to working in any one place either. It is not a web only language, a platform only language, etc. Once can just as easily build a web site, a server, a desktop, a windows service, a web service, etc. It is very powerful and has many features that make coding FUN and EASY. I have never been out of work with this language listed on my resume...even in the hardest of times. It is an ever growing and expanding language which leaves room for blogging, writing books, and interacting socially in various other ways (if you are so inclined). As many business are on the Microsoft bandwagon, C# is an easy sell. Many of the Microsoft products have been rewritten to work on the .NET framework which generally means that writing C# inside that environment is also generally easy. BizTalk takes C# in the form of inline scripts. SQL Server interacts with C# in the form of assemblies and can communicate with it directly via SQL (very nice). Of course there is the always nice aspect that C# can easily communicate with any other .NET language. And while C# can communicate with other non-.NET languages currently, the next version of C# (4.0) will be able to communicate even easier with external languages/objects by way of Dynamic Lookup feature (and new COM interop features). All of this not only makes C# worth learning...but exciting to be a part of! And did I mention that C# can be used on Linux platforms with the Mono project?

Andrew Siemer
A: 

You should take into consideration what's popular in the city where you want to live. I would normally recommend Python as a good next language, but here in Brisbane there are 10x as many job opportunites if you know PHP. Join a few meetup groups and see which languages have a strong presence locally.

too much php