views:

616

answers:

11

I went to school for programming years ago and when I got out I found a job in system administration and that is the direction my career took. I'd like to get back into development of some sort and have been 'playing' with C# and ASP.NET, but I've been hearing lots of buzz for other 'new' languages (by new I mean that they are new to me) like Ruby and F#. I guess I'm wondering if I'm wasting my time with learning largely MS languages instead of being more of a generalist. Having not been apart of the development community for a long time (if ever I was) has me floundering with trends and I'd like not to be left behind the times.

Any thoughts to if it's better to follow the "latest" languages or stick with what is more tried and true technologies?

+2  A: 

see http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html for a complete index of language popularity

mm2010
http://lui.arbingersys.com/index.html also provides some interesting data
stimms
While popularity isn't always the best reason to choose a language, it's certainly something to consider. Two great sources of info! ++
JavadocMD
+9  A: 

You should learn at least 1 compiled language (like C# or Java) and 1 Script Language (Python, Ruby, etc). This is usually enough to help most developers succeed at what they do, regardless of the age of the language.

As for new vs old, I'd stick with C# for now as it's pretty popular. Learning a new language wouldn't be too bad though.

apandit
I would add that you should learn at least one language that can be run directly in the OS instead of relying on a CLR or a VM.
Schnapple
C# is also good because the syntax is similar to Javascript, Actionscript, PHP, etc.
craigmoliver
A: 

This is a bit of a loaded question, but you'll find that folks here are passionate about their tool choice while believing in flexibility that a choice provides.

That said, if you don't mind "vendor lockin," the Microsoft stack is an excellent way to get into programming and find gainful employment for years to come. Microsoft is both "tried and true" and "latest." The Microsoft stack is traditionally geared toward building business applications, but you're not limited to that (ASP.NET MVC, for example, was used to build this site).

I don't know a whole lot about the world of Ruby on Rails and such, so I'll defer to a more knowledgable person.

My real advice is to go with what you like. Learn C# and F# if that's what you're into.

Robert S.
trouble is, people said that about IBM once upon a time, MS may be increasingly irrelevant in the future as open source, Google, web and mobile becomes increasingly important.
gbjbaanb
+1  A: 

I'd say learn what is easiest, and grab hold of the fundamental concepts behind them. Syntax is an easy hurdle to get over, the difference between languages are a little more tricky.

However, since C# seems to have a wide base of help on the net and here on SO, I would start there, and learn about the ins and outs of Object Oriented programming. Then, ideally, you should be able to switch to most any other OO language you need at the time (like ruby, Java, Obj-C, or even the dreaded C++) jk, C++ people.

A language like F#, while popular, is quite a bit different than C#, as it's functional. If you are used to writing functional style code, F# may be a good place to look. But, even then, learn what it's like to write functional code, and grasp the fundamentals of the language.

casademora
Sorry, it's not clear from your post - are you claiming that F# is procedural? It's a functional language, not procedural.
Jon Skeet
F# is functional, not procedural. Its more akin to Haskell than C...
jacko
A: 

Well, if you keep up to date on the latest languages, you will always be employable by companies that are looking to increase their marketing buzzword count. Not saying that this is the only use for the languages, but it is definitely a use.

On the other hand, there is also always a market for older technologies with either companies that want to build on top of more reliable and tested older tech and to maintain said older technology.

I guess it depends on how you want to progress. If you go for trends you may find you never have time to really learn a technology inside out, but if you go for older languages, you may find that the more interesting projects are being launched with newer stuff you aren't familiar with and you are left with maintenance. It's all about the trade off.

workmad3
+12  A: 

C.

Seriously, learn C.

If you don't run screaming for the hills pulling your hair out then you're cut out to be a developer.

Note that I'm not saying that people who don't know C aren't developers (Jeff, the founder of this site, doesn't know C and he's doing just fine) but C will introduce you to a lot of the less glamorous and sugar coated aspects of development.

As a second choice, pick C#.

Schnapple
I learned a little C back in school and have done the trudging with pointers and arrays and such-most of the concepts I still have was taught to me through C.
Jayson S
why stop at C? Assembly baby!
craigmoliver
+6  A: 

The language you choose is not important. When you understand the concepts you will most likely be able to pick up a new language pretty fast.

daddz
A: 

My own take would be to think about what kinds of work do you want to be doing and what kinds of requirements for those jobs would be helpful to have. For example, do you know about design patterns? How about modelling out a system using classes and inheritance? If you want to get into Rich Internet Applications there is AJAX and other Javascript elements to learn as well as HTML and its various offshoots like XHTML and DHTML.

I don't think there is anything wrong with knowing just the Microsoft technologies, if they didn't bump into other ones that may be needed should you want to apply for a developer job and they require Javascript or CSS that you don't have.

Another point is to be aware of changes to tools over time as there will likely be more changes to come as the Web evolves some more, e.g. what Visual Studio 2010 will have may be a lot more changes than the current Visual Studio 2008 looking at some of the recent announcements around jQuery and the MVC framework.

JB King
A: 

I have used C#, Ruby, Perl, JavaScript and PHP professionally over the last year and they've all been useful in different ways. I would suggest that if you want an easy way to get caught up with the basics of programming Ruby is a great language to do that with- it has simple, easy to follow syntax and it makes it very easy to think in an Object-Oriented way, something that can be harder with a semi-OO language like C# or Java.

C# is well worth learning because it's useful to know a language in the C family - the fundamental idioms are so common that it is well worth using them - but I would avoid C or C++ simply because I don't really see the need to manage one's own memory - it makes life very hard, introduces a lot of unnecessary bugs and confers few benefits until you are really excellent at it. Get good at something that handles memory management first and then you can go on to the tougher stuff should you need to.

I would avoid functional languages like F# to start with. They are quite hard and quite different although by all accounts understanding them makes you a better programmer.

glenatron
+1  A: 

C# is my language of choice, Java and C# are similar enough, I don't think it's a big deal to learn Java once the c# fundamentals are understood... but c++ is another beast altogether.

I think c++ is one of the better general tools and will be easier to tackle once c# is understood well (It has a LOT of documentation and help forums). The experience in c++ isn't limited to Microsoft, though - most popular platforms will run c++, so with this experience, you won't be limited to windows. It's also good because it's not as candy-coated as c# or Java and not as gritty as pure c, and it can interop fairly easily with c# (which is one reason a transition is easier)

So c# is a good choice, and imho followed closely by c++

Fry
+1  A: 

I have to agree with many of the above: the language isn't important. Largely, the language just matters for the following:

  1. Features. If you need multiple inheritance, you'd better go with C++. If, like 90+% of developers, you don't need anything that's specific to one (or one small subset of) languages, this doesn't matter.
  2. Syntax. Do you hate whitespace? Go with C#. Hate curly braces? LISP is your friend. Don't care one way or another? This doesn't matter.
  3. Compiled or Interpreted? This matters. Go with compiled (or partially compiled, like .NET) and it'll be faster...but the speed gap is closing.
  4. Local job opportunities. Sure, you may be a whiz in C#...but if everyone near you who's hiring is looking for PERL programmers, it won't do you any good.
  5. Community support. If your language hasn't been used seriously in 20 years (or ever), don't expect much of a lifeline on Google. QBASIC, I'm looking at you. StackOverflow will be here though...

In the end, we can discuss things until we're all blue in the face. Pick a language with a featureset you like, with syntax that won't drive you bonkers, a decent community, and hopefully job opportunities in your area.

As to new or old...both are good. The newer languages MAY tend to be easier to pickup, but there's more widespread documentation and use of the older languages, though that may be phasing out.

Jeff
+1 for your #4 -- its a common sense notion that usually gets ignored. It doesn't do you a lick of good to learn language x if nobody is hiring for language x.
ajax81