views:

298

answers:

8

I know the topic I started is too subjective. But I just wanted some expert guidance learning new languages. I've been working with .NET languages (C#, VB.NET) quite a few years (around 4). And it's been years since I stopped experimenting with new laguages after settling down in a job.

Few weeks back I just started working on my personal project, which I am going to spend much time in the coming months. During the analysis I found that I just can't accomodate the luxuries of cost effective languages, programs and IDEs. So I planned to move to the wide spectrum of open source languages and tools.

And when I look at the current choices, I was just speechless. Hundreds of promising open languages and toolsets and I found it's hard to choose. And I can't even think of evaluating each language myself (it's a worst nightmare). Currently I started with Mono (for the sake of C#).

I felt this is going to be a good chance for learning new programming languages and models. So I am open to any language that offers me the following:

  • more functional
  • dynamic language features
  • better language elegance (like lambdas, Haskel like SQL syntaxes or C# LINQ)
  • better community support
  • must be open
  • easy interaction with the web
  • support for parallelism and concurrency (easy threading)
  • better in performance
  • proven web frameworks
  • better IDE support (I got this ease of use syndrome after using years of MS tools)

I love the Haskel and Erlang language programming approach. But I don't have a clue about these languages' web stack and concurrency mechanisms.

EDIT: i would appreciate few reasons along with your choices. It will be really helpful.

Cheers

Ramesh Vel

+1  A: 

In the .NET world sounds like you're talking either F# and IronRuby. IronPython might also suit your needs.

Will
yes more like... as i stated ealier i only interested in open tools...
Ramesh Vel
Well, depends on how open is open. If you want to compile the IDE, okay, not the best choice. But Express is free (I believe F# is being delivered as a standard language in 2010; IronRuby will be available in standard or above still), the framework is almost all open source, the runtime is open...
Will
+7  A: 

I think that all these meet your requirements:

My bet is that you'll get the groovier IDE experience with Groovy (and it's Groovy Eclipse Plugin).

Pascal Thivent
@Pascal, thanks for the response,, I have already gone throgh the links you have given... But its hard for me to analyze each of em , since am naive in open standards.. And please point me a single choice which you have great experience with and found fantastic... And few more points why you choose them is greatly appreciated..
Ramesh Vel
Good range of fashionable languages with web support (even if Lift's approach to web design entails darkish blue fonts on pastel blue backgrounds).
APC
Pascal Thivent
woo scala! love it.
geowa4
+3  A: 

Learn OOP, DesignPatterns, understanding of Algorithms... the rest is "just" language. You will find, if You learn 5th... 8th language there are some similarities, some prons and cons... what You need learn is to move business needs to some technical platform.

Rafal Ziolkowski
+250,000,000 for the "the rest is just language". The rest is only writings and "ready to go" features that a language brings
Clement Herreman
@rafal, thanks for the response,,, Rest is Language is great. I accept that... But i dont think each language offers similar set of functionalities and got similar frameworks to handle them..
Ramesh Vel
That's clue. But when You'll learn enough set of languages You will be more aware for looking for traps and boundaries of technologies You use. But if You can't understand what customer wants at all... there is no language which can help You.
Rafal Ziolkowski
No, you're wrong, it's not "just language". The difference Java/C# is "just language". If you do C++, you have memory management, which is somewhere in between "just language" and a real different. Then if you go to F# you have functional, and the difference between functional and procedural is a whole lot more than "just language". There are other languages, which are even more different, like VHDL.
erikkallen
@erikkalen, nicely said..
Ramesh Vel
Yes, but You will not use VHDL to implement WebSite.... or CRM software.
Rafal Ziolkowski
+2  A: 

Weird. I can't believe noone has suggested Python yet.

cletus
I always omit this sneaky one but it's fixed now :)
Pascal Thivent
A: 

Personally I'm going to give a vote for Python, Ruby and Mono.NET.

Of the three you were probably on the right track when you said you looked at Mono; it's C# (which you have previous experience with), there are good, free IDEs available SharpDevelop being one which makes it cheap and there's a really solid community behind it all.

Siyfion
@Siyfion, thanks for the response. But am more concerned with the mono licencing terms... am very confused with that... is there any commercial web apps running on mono???
Ramesh Vel
Richard Stallman (himself) gives his point of view on C# and Mono here: http://fsfe.org/documents/rms-fs-2006-03-09.en.html#q1
Pascal Thivent
Agreed, though http://www.mono-project.com/Licensing seems to suggest it would be ok. Otherwise, C# Express Edition? Or try Ruby, it's good too!
Siyfion
A: 

F#

Mahin
+2  A: 

These are not new languages, but I vote that if you have experioence with them, then you will be a better programmer in whatever language you choose to use:

  • Smalltalk (or Objective-C), otherwise you have not experienced OOP.
  • Lisp for functional, reflective, meta programming.
  • Prolog for logic programming.

All of these are quite far from your basic C-like language, both in concept and syntax.

Alan Kay invented OOP and Smalltalk, he is quoted as "C++ is not what I intended", and C++ is what most of todays OOP-languages mimics. C++-style OOP is merely syntactic sugar ontop of structs with function pointers. OOP can be so much more. Ruby is closely related, but you would miss out on interleaved method names.

Lisp has been around since 1958, and the fans keep saying that everything that gets added to any new language is just something borrowed from Lisp. Maybe not strictly true, but somewhat accurate, Lisp had garbage collection 50 years ago. Easiest way to experience it today would be to write something in Clojure.

Prolog is based on formal logic. Prolog is declarative, where you declare facts and rules and is executed by constructing queries on these relations. Kind of like puzzle games in some magazines :).

PeyloW
thanks peylow for your response..
Ramesh Vel
And add Seaside to the smalltalk, that is somewhat new. Otherwise you don't know how to program for the web.
Stephan Eggermont
A: 

You don't really say what kind of programming you want to do. Do you already know C/C++? If not, I'd really recommend learning those instead of anything new and fancy.

However, if it's new and fancy that you want and you'd like to be able to write native apps, then I'd have a look at:

D

It's similar to C++, but hopefully better in many ways. It has the advantage of out performing most other new and fancy languages and most of the features on your wish list.

Andrew Bainbridge
thanks Andrew for your response,. i have a good exposure with c#, so c++.
Ramesh Vel