|
It depends if you want to build on your existing experience, or if you want to learn something completely different.
Personally, I chose to step into the Ruby on Rails world. It's like emigrating to China (or Japan): different language, but also different habits, conventions, norms, values and brand names ("Capistrano" sounds like a coffee brand).
It's hard at first, but fun as well.
There's a good free course CS169. Search Youtube as well.
|
|
|
|
|
I am in C# and F# for now, my next movement learn C++ for Win RT.
Sorry for my bad English
|
|
|
|
|
Haskel. Functional programing is the future. Seriously.
jdsIII
|
|
|
|
|
Learn Typescript, can't go wrong. Its the new javascript to be.
|
|
|
|
|
I know you said a MS standpoint, but what about getting familiar with Mono? You know C# and .NET already, so how about learning how to run it on other platforms?
I know if I had the time that is what I would do, even if it's just to see for myself what the differences are.
|
|
|
|
|
Personally, I think we've got enough languages. I'd rather become more proficient in C# and T-SQL (the languages I'm currently using) than to constantly change my tools.
I know it seems to be a badge of distinction to be able to list knowledge of 50 languages on your resume, but getting results with the 2 or 3 you know ain't too bad either.
If the art industry was the same as ours is, painters would be constantly trading in their pallets for the "new improved Paint Pallet 2012". You got to get this one, you'll paint your "Mona Lisa" in 1/3 the time!
I'm all for learning, but learning doesn't always have to be "horizontal". (I.E. instead of learning new languages every year, how 'bout learning the features of the one you're using. C# is incredibly rich). At some point you gotta pick your tools and stick with them for awhile! You just can't be an expert at two dozen things at one time. If you think you can, my hat's off to you.
I know some people who are so distracted by "upgrade fever" that they never really get anything done. They haven't got time ... they've got to be figuring out how that new tool works whether they need it or not!
Sorry guys for the rant. I know you were just excited about learning .Net. I'm just getting sick of the distractions of it. Everybody has something to sell!
-CB
|
|
|
|
|
True, there's no way you're going to become a master of all - jack of none. But putting the blinkers on and only going the C# route is no way to ensure your future. But there should be a balance - no need to "know" all of 50 languages, I'd say a handful is enough (especially if they're all extremely different from each other). I've used several langs since the 80's from GWBasic, through Pascal, C, C++, Java, Delphi, VB, VBA, VB.Net, C#, Lisp, JavaScript, VBScript, PHP, etc. That's more of a list of how the world changed over that time than what i wanted to learn. But I'm definitely not a master of all of them (perhaps not even some of them) - at the moment I use Lisp & C# extensively, but moving back to any one of those takes me about a week to come up to scratch again. So once you've gotten a lang behind you, it makes it a lot quicker to use it in the future: you're not as thrown into the deep end as when you have never used it before.
I've stated previously to "try" some other language. Preferably one which is massively different from what you know. I mentioned Lisp, Rob Granger's mentioned Haskell (for the functional aspect). IMO Haskell's nice (I don't know it, but I've looked at it) - but functional doesn't work well in ALL situations. That's why I like Lisp (in particular CL, but Scheme does well too) - you get the functional at least the same as Haskell, but you're not forced into it. When your situation calls for something else than functional, Lisp has you covered there too! Same as not everything should be made into OO, sometimes OO is cumbersome and inefficient. Your situation dictates what you should use. Perhaps parts of your program calls for ASM - for efficiency or using a CPU's special features, some languages allow a function to be written direct in ASM. Some implementations of CL allow you to code the function direct in C or ASM, or linked in later. Though these days C# is starting to introduce functional (or going with F#), but you should not just think functional is all there is out there. That's why I like the Lisp idea.
Most concepts (if not all) which has ever been invented throughout the history of programming (i.e. since the 40's) has been incorporated into Lisp & C together (there are others you could substitute, but these are what I know for myself - I'm not going to advise on something I don't "know"). Patbob mentioned C++ instead, perhaps that's more general than C yes - so possibly, because of the OO involved (though if you have Lisp behind you the OO in C++ looks like a child's toy - not as easy to use but as restrictive and incomplete). Though C++ is a bit more steep to learn, but it's up to you of course.
Grammar and punctuation is another thing to consider. For me I try to get something which uses less punctuation and more consistent grammar. C & C++ actually breaks this idiom, they're extremely inconsistent with their grammar, and has arguably one of the largest sets of punctuation (perhaps Perl is worse). Lisp on the other hand is the opposite: 2-5 characters used as punctuation (depending on dialect), but its grammar is consistent throughout (pre-fix notation in absolutely everything forces consistent grammar). So my suggestions give you a rather broad base in even this aspect. At present I'm starting with Python due to the different grammar (just to broaden my own knowledge).
As for libraries, some languages come with their built-in libs. E.g. Java has an enormous set (at least comparable to DotNet), and they're not always consistent, and there's overlap in a lot of it (e.g. AWT and Swing). CL has a huge hyperspec of built-in standard functions (similar to C's stdlib), where Scheme lets you design all that on your own with only minimal functionality built-in (that's why it's usually chosen for academic over CL). I feel though that you shouldn't choose a language based on its libs, libs can always be created for yourself (if you have the time), or gotten from all over the net, or using FFI's. So rather choose a language which fits your scenario better and link to the libs you need.
modified 17-Jan-13 0:55am.
|
|
|
|
|
Manivannan Ponnusamy wrote: am in to C#, VB.NET, VBA for now.
Where now means what? 2 years or 10?
Manivannan Ponnusamy wrote: Wondering what could be the best bet to learn from a MS developer standpoint ?
Presuming that you already have an in depth knowledge of one of the ones that you you mentioned the TSQL (the SQL in MS SQL Server) would be a good step. SQL, any SQL, requires that you think substantially different than versus the languages you know. TSQL has a significant impact on business applications and even if you don't want to do back end development understanding the requirements would help in most business development. And of course if you want to do smaller projects then knowing it is probably a requirement.
|
|
|
|
|
With the large number of Android and iOS devices out there, (and MS leadership's incompetency in the mobile market), it would be beneficial to learn Objective-C and/or Java.
|
|
|
|
|
Mathematica. Get the Home Edition. Why push into more of the same OOP when you can stretch out to the other corner. We know that functional programming isn't going away, and getting good at it within only the lightning-flash implementations in OOP languages is like learning Hebrew from a dreidel. And Mathematica opens up the engineering side of things, which I suppose Haskell might, but Mathematica has way cooler graphics!
JonShops -- Fun really begins with the words, "So what in the World do I do now?"
|
|
|
|
|
As many others have said, learn C++. It most likely won't be the most popular language at any given time in the near future, but if you can program decently in C++ you can master any memory-managed language.
|
|
|
|
|