@Matt: Python is easy, powerful, and fun. That should be first on your list; then make C# next. I personally don't care for C# all that much - but, if it floats your boat then go after it!
@povman: I didn't mention Haskell primarily because it's concepts are difficult to grasp - much more difficult as a beginner; whereas Python will introduce concepts very easily and accessibly, even some basic functional programming concepts.
I do agree, Haskell is a beautiful language.
@Dan: I'm so happy you asked - Python and Erlang are (IMHO) a match made in heaven.
Erlang for concurrency and distribution and Python for it's expressiveness and huge set of libraries.
There are a number of projects that use the Erlang 'ports' system to bridge data types between the two languages - also, the Disco project is one that uses Python and Erlang as a distributed processing system.
Write your algorithms in Python, refactor heavy algorithms in C as a Python module and use Erlang solely for its concurrency. You essentially get Erlang acting as a master node making calls to a Python script and passing the results from the script's computation to any other scripts being juggled by the Erlang parent. Wicked combo. Great for heavy computation and small messages.
I have also toyed with the idea of using Erlang & Python in a distributed web-application. Erlang comes with a 'built in' distributed database called Mnesia. There is also the Scalaris project which takes Mnesia to a whole new level...
|