   C#
  If your job doesn't require you to know C#, is it really worth it to learn it if you already know C++ and JAVA? I'm looking at learning C++, Java, and Python (since my, hopefully future career, requires I know them), but was wondering if it'd be worth learning C# incase I end up working somewhere else (a place that requires it)? Is it easy to transition from C++ to C#? Is C# really that useful?   
  Yes.   ;  Anyone else care to chime in?   ;  In my case I already knew C++ and when searching for my last job (the one before my current job), I looked at the job postings and they all wanted either C# or Java.  As a Microsoft MVP, I had some funny money to spend at the MS company store, so I bought books on .NET and C#.  My next job wanted C# programmers, so that's what I did for about 4-5 years.  Having spent that time becoming proficient in C#, I'd say that the differences between C# and C++ are similar to the differences between Java and C++.  C# is not "Microsoft's version of Java" as some people (who haven't used C#) seem to think, but the languages have more in common with each other than they do with C++.Since you already know Java, I would say that your time is better spent by investing in learning about refactoring, unit tests and Fitnesse than spent learning C#.   ;  Using C# you can write a program that can measure how long a piece of string is.C# is easy to transition from C++. Knowing Java, C# will be quite familiar to you. You will probably spend more of your time learning .Net than C#.   ;  The language isn't the hard part when learning C# (or any other language for that matter). In the end everything comes down to 'if', 'else' and 'for'-loops anyway. I've written in half a dozen languages the past few months, and they all had if's else's and for's.Just saying that most languages have a lot of concepts in common. If you understand the concepts then it should be relatively easy to carry them over to a new language.The bulk of C# is, as Daerax already stated, the .NET library and learning what's in there and how to use it.How important it is to know the .NET library from the inside out depends on your situation. Are there colleagues who can quickly get you up to speed? Are you capable of learning a new API quickly?Also, it might be handy to know some C# before applying for a new job in order to get past the shortsighted recruiter who thinks that knowing a language reflects how capable you are at writing working code."Is C# really that useful?"It has its place... like every language/tool has. If you are mainly developing for MS Windows (and Mono is a viable solution for beig cross-platform) and you don't have too much legacy code that was written in C or C++ then C# may very well be your weapon of choice.   ;  If you want to broaden your perspective and learn a new language you should start with a different paradigm, as Structural said languages like Java, C++ and C# which are similar in structure are all fairly easy to transition between, it's just a matter of semantics and adapting to a new API, where as Haskell (for instance) is a whole new way of thinking, not just the syntax, but the modeling of problems is done from a different perspective:factors :: Int -> [Int]factors n = [x | x <- [1 .. n], n `mod` x == 0]compared to:List<int> factor(int n){  List<int> counter = new List<int>();  for (int i = 1; i <= n; i++)    if (n % i == 0) counter.Add(i);  return counter;}I haven't been using Haskell for very long now, a month at most, I definitely don't have any practical skills with it (and I have been told it's mostly an academic language), but due to its paradigm it supports concurrency, I can see use for it, however I can't quite see how to use it :)   ;  To me, C# is the language which has the best balance between versability, readability, feature set and ease of use. It combines the positive aspects of many other languages. Combined with the power and effectiveness of the .NET runtime and class library, development has never been more fun for me. No joke.   ;  If you already know java and C++ then you more or less already know C# upto about version 2 in 3 they added a bunch of stuff, linq and lambdas come to mind.  If you really want to explore a language that will help you think about programming instead of more of the same try Forth, or Haskell, or heck anything not Object Oriented.   ;  Yes.  The language is becoming more and more popular, you're bound to run into it at some point.Also I think it's the most convenient language to use to write small personal utilities and apps.   