tags:

views:

781

answers:

10

All you need to learn if you want to become a professional .NET developer is C# and VB.NET. However, there are several uncommon .NET languages in development, which includes F#, Delphi.NET, Boo, IronPython, IronRuby, Nemerle, A#, and about two dozen others.

I've seen a few job postings for F# programmers, and I worked for a company which used Delphi.NET in a small number of projects. However, what about the other languages? As near as I can tell, there is no commercial demand for these uncommon languages, the userbase consists of a tiny community of hobbyists, and several of these languages are no longer being actively developed.

This is a somewhat open-ended question, but is there any point to learning one of the uncommon .NET languages if there is no commercial demand for them? Or should the languages be considered strictly toy languages and unsuitable for any "real" development?

+14  A: 

Microsoft is bringing in F# as a full-fledged, supported language. It is already gaining a lot of traction and we can expect some great things in the near future with it.

There is a LOT of development going on now with the DLR, making IronPython and IronRuby much more interesting. They certainly aren't ready for prime time right now... interop with C# is very, very rough now... but in 4.0 with the "dynamic" keyword, I think they will become much more respectable candidates.

Brian Genisio
As an aside, I actually jumped on the F# train last August, before it was "cool" :)
Juliet
I used to listen to Kid Rock and No Doubt before they were "cool". That makes me "cool" ... :)All kidding aside, if it weren't for people like you (early adopters), F# wouldn't be where it is today. I think a LOT of people are going to know a lot about F# in the coming years. Kudos
Brian Genisio
+3  A: 

My feeling is that F# is only uncommon because it's so new. I also feel that there is a great amount to be learned about programming in general from learning F#.

Brian Knoblauch
+4  A: 

I wouldn't say toy languages. Obviously, depending on how much thought was put into building the language determines if it is really suitable for "real" development. At this point for me learning F# really won't net me anything at my current place of employment. Demand is really based off of your location. Here's an example, where I live there are really no jobs for Python and Ruby programmers. There are probably a couple, but most shops don't use it here. Are the viable languages? Sure. It's just that the demand here is low. Programming in F# is really specific, and if you want to do that, then you might have to move. It's a sad truth, but true none the less.

Is there benefit to learning it? You bet. Not often, but every once in a while you'll get an opportunity to make a key decision and get to try something new in an organization (really this depends on the organization). Most people will nay say an idea like using a new language, but sometimes, knowing that language and applying it to a hard problem will pull the team out of a tight situation. Not only will you help the team out, but you'll look good in the process. There are advantages to being the person who knows something no one else does in an organization. :)

Kevin
A: 

These languages are toys with or without .Net.

wizlb
Based on what? Your opinion? There's a rock-solid source of information.
ctacke
Ouch. Hell hath no fury like an out of work COBOL programmer.
James McMahon
Based on experience. How about you?
wizlb
A: 

I wouldn't say those languages are just toys, nevertheless some of them are neither created or supported by Microsoft.

I guess some languages just came up because third party companies wanted to take advantage of the huge success of Microsoft.NET, e.g. the Borland Delphi.NET. It was created on the seventh version of Delphi, but they only focused and gave it some highlight from the eighth version (Delphi 2006) because of the increasing visibility .NET was acquiring.

Anyway I think that a company would not endorse an entire language if it didn't have at least a single advantage compared to the others.

Pedrin
+1  A: 

Different programming languages emphasize different approaches to problem solving (if only slightly) because of their varying strengths and weaknesses, otherwise they are not truly different. The best reason to learn any new programming language is to gain insight into programming as a general practice. A language like F# or Python may encourage you to tackle a particular problem in a new way, and this experience can inspire good ideas even when you go back to working in C# (or whatever). Of course, this experience should not be carried too far or you will end up writing code too clever for its own good. :) Don't forget what Brian Kernighan says:

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

As for whether or not these languages are merely toys or will become useful for mainstream development, that is completely up to the community. Any software, including programming tools and languages, only reaches maturity through adoption by the community. In my opinion, each of these .NET languages certainly has the potential to become a practical enterprise-level tool. Languages like Perl and PHP started off as homebrew projects that were very much "toys" in their early stages, which just goes to show that you never know what language will become the next big thing.

Parappa
+3  A: 

Depends who you ask. :)

In all seriousness though, whether you use the languages or not, all these languages test the CLR and many of them dictate the direction in which .Net is heading. Case in point, the dynamic keyword in .Net 4.0.

I don't think we'll ever see job postings for Boo or Nemerle developers, but I could see a group using Ruby/Python/Boo (isn't Boo based on Python anyways?) for their scripting needs. Hell, and if these scripting languages can integrate with internal C# business libraries, why not?

That being said, a lot of the implementation in the list that you mentioned are not projects that I expect to be ever be used in production environments. They are research projects or dev side projects. You don't need to learn them. But, languages and implementations like this are invaluable for two reasons.

  1. Contributing on such a project is a great way to learn the CLR/DLR.
  2. Learning a new language will open your mind to different ways of doing things. Whether the language becomes commercialized shouldn't matter. The question that should be asked is: why were these languages created? What concepts do they bring to the table? If you like it, how can these concepts be brought into your code?
siz
When the first IronPython release came out, Boo's rise to popularity was quickly cut short. Its main appeal was that it was a "python-like" .NET language.
Barry Fandango
+2  A: 

I foresee lots of major projects using LOLCODE for .NET in the near future

rotard
Hai. Can Haz System.Windows.Forms?
Robert Harvey
+2  A: 

I've found IronPython to be very handy, since I already knew Python and it serves as a nice scripting tool to work with my .NET projects. So there was a "point" to learning it, in the sense that I find it useful in performing my job.

Some of these Answers seem to be focusing on whether we will see industry adoption or job postings for the non-mainstream .NET languages, but keep in mind there are more "points" than that for learning a language. Early pythonistas and rubyists, for example, learned those "boutique" languages because they're nerds and they got a kick out of it. For example F# would be a nice general-purpose introduction to functional programming if you haven't done that before.

On the industry adoption front, there seems to be an excellent fit between Silverlight and IronPython with a considerable community growing up around that.

Barry Fandango
A: 

About Boo, some usages that really fit the dynamic mindset of Boo, that you can use in production right now:

Of those, I'm personally using Brail and Boo.Nant.Tasks, and they work great. Boo is better suited for those tasks than C# or VB.NET. There's even a book about writing DSLs in Boo.

As for F#, right now I'm developing a specific parser using FParsec, I don't think there's any better parsing solution for .NET right now.

So the answer is no, not all of them are "toy languages", and they have real-world usages.

Mauricio Scheffer