views:

380

answers:

10

I am a C# developer and have been programming in that for a long time. I have some experience using ASP 3.0, php, VB.NET and C. I would like to learn something else and am not sure where I should focus. I have done a little with Python but wasn't as "inspired" by the language as I would have hoped to be. Thoughts on what I should learn? I would like to go more open source based.

+2  A: 

I would say C++. That will get you a lot closer to the OS than your used to with C#.

I started with Borland C++ a couple of years ago and migrated to Java and finally to C#, it defiantly helps to have that lower level experience to understand exactly what your code is doing memory wise.

Ethan Gunderson
+1  A: 

If you want to stay in the .NET family, PowerShell might be an interesting study. It has a C# like syntax and access to the .NET Framework. There is a lot of open source work going on targeting PowerShell. Just search Codeplex and you'll find about 60 or so projects around PowerShell.

PowerShell has a comfortable, task-based feel, using verb-noun naming for the cmdlets (which are just .NET classes). Being a developer, you would be able to complement your exploration of scripting by having the capability to extend PowerShell as you need.

Steven Murawski
A: 

What are you looking for in a new language? If you want something practical, go with Python, Perl, Ruby, or PHP. If you want something interesting that will teach you something new, then go with something like F#, Haskell, Scala, or LISP

Chris Upchurch
+1  A: 

Something - anything - that involves memory management. I know this is a bit of a Joel vs Jeff flamewar instigator of a statement, but getting just that little bit closer to the metal would be very beneficial I reckon :}

moobaa
+3  A: 

I have experience with many years of C# with a lengthy background in ASP, VB and other languages and when I was looking for a language to learn I turned to Ruby. It is a dynamic language which has many great features you can pick up easily. Ruby is a joy to write in and has IronRuby under development for the .NET platform.

I think it is as least worth a look.

Rob Bazinet
+14  A: 

Why not try to specialize your experience instead of simply re-learning the same things with a new syntax.

Examples:

  • OpenGL or Direct X
  • Network programming in general
  • Learning protocols such as HTTP, FTP, SMTP, …
  • Neural nets / AI
  • More with XML XSLT / XPath / …
  • Image processing / Video processing

If you’d really like to learn a new language I’d recommend to learn a functional programming language such as Erlang, Haskell, ML, F#, Scheme, LISP. You will learn a lot from the different point of view. And functional languages have the nice feature of being easy to optimize (automatically for you) on multiple CPUs which is a more and more popular thing.

Brian R. Bondy
A: 

JavaScript - GOOD JavaScript programming is remarkably difficult, even with jQuery, et. al.

F# - Up and coming functional programming language from MS, still uses .NET

Spec# - Contract-based programming with strong static program verification - pretty interesting concepts that may bubble up into .NET later.

WPF - There is a TON to learn about WPF. It's not just about drawing pretty pictures. Especially if you can partner with a designer to add flare.

Good luck!

Andy S
A: 

You might want to try and take a look at Boo. It's inspired by Python but sticks to the CLR and still is object-oriented and statically typed.

Jon Limjap
A: 

If you haven't done Ruby and Perl, I suggest you pick up some books on each and maybe write a small application like Tetris. If you are used to writing somewhat structured application using C#, I am sure you'll be frustrated with those lightweight languages at first, but they do have some interesting ideas/concepts that may come handy.

To really get to know programming languages, writing your own language can be fun too. Using lex/yacc flavors like flex/bison (C/C++) and TP Lex and Yacc (Delphi), you can write your own language with some effort. w:Yacc lists more variants including one for C#.

Alternatively, some are using Ruby to write mini languages (buzzword is dsl, domain specific language). Google "ruby dsl" and you'll find some articles.

eed3si9n
A: 

Are you looking to stretch the mind or make your skillset more economically valuable?

The most trouble that I had learning any language was Prolog. As with the advice for going with a functional language, it is sufficiently different to procedural languages (even from event based procedural programming) to be challenging.

I can't say that I now use it for much practical, but it's good to have done it.

Unsliced