views:

117

answers:

5

Ok so I know the basics of programming languages, I've studied python and liked it a lot. I'm studying now the intermediate parts of python and I'm catching the concepts already. I'm working with a project and at the same time solving computer problems that practices algorithm use. I've learned that python has limitations and wants to compensate that limitations by learning another programming language.

What programming language do you suggest that synergizes well with python? I want something who can give me their actual experience while working with python and the language that complements well with it. Answers like "try iron python or jython blah blah blah" won't help, if you can give me it's pros and cons, it's maturity it's problems then that's good enough for me... Thanks a lot

EDIT - Sorry guys, I think I need to add some details in this. I'll be using python mainly for web programming or game development. So if you think this language A would help me in python for web programming then that's it.

A: 

Haskell or Ocaml, or maybe a Lisp dialect such as Common Lisp or Scheme.

Philipp
+1  A: 

What is wrong with IronPython or Jython? You can learn how to write libraries in Java or .Net to alleviate some of Python's speed problems. Learning to write your own Python libraries will certainly help you better understand and overcome the limitations you mentioned.

mvid
+1  A: 

For me, the obvious choice to learn after Python is C. C is a lower level language, so you're dealing with more elemental computer concepts than objects, but it will give you the understanding necessary to write extensions to Python.

That way, it will be easy to write your programs in Python, and then migrate parts to C for speed--either by writing an extension or by using a bridge language like Cython.

Chris B.
+1  A: 

If you run into performance problems (which might be an issue in game programming), C/C++ programs can be integrated well into Python scripts and vice versa:

But I haven't yet seen the need to do so myself.

Tim Pietzcker
+1  A: 

When you're quite comfortable with Python, Common Lisp and Scheme are good languages to learn about functional programming. I've been learning CLisp myself lately and there are a lot of "ahah!" moments that make it a lot of fun.

IronPython and Jython are great tools to learn if you plan on entering the professional world - there is tons of development right now in C# and Java - they're pretty much the hot languages of the professional world. IronPython integrates with all of the .NET languages, while Jython of course integrates with Java. So your choice there should reflect your desire to work at a .NET company, or not. Both IronPython and Jython are well matured languages.

Others have already mentioned C/C++ which are good choices if you're not familiar with them, and if ~30-40 years of programming life, and Top 3 rankings for July 2010 on the TIOBE index is not a strong enough reason to learn them... well you probably have other issues ;)

If you're looking at newer languages that haven't really been tested hard-core, you have languages like Ruby (which seems to be the new sexy), and Go by Google.

Perl is a bit like Ruby in that there is quite an overlap between Python and Ruby/Perl, and the areas they cover.

If I were to pick another language, already knowing Python, I'd go with a compiled language - maybe lower level like C\C++. I guess it really can be determined by what you want to do. If you want to work for a .NET company (which may or may not imply you really love Microsoft products), IronPython and a .NET language (C#, VB) is the way to go. OTOH, if you want to work for a company like Google (which happens to employ a certain individual), they extensively use Java and Python, so it's probably better to learn Jython.

I guess the question you need to ask yourself is, "Where do you I want to go today tomorrow?™"

Wayne Werner