4 ms·
I'm going to go against the grain here and argue that yes, it's a mistake. An awful lot of novice programmers take years to progress from their "mother tongue"
by na85 13y ago
I'm going to go against the grain here and argue that yes, it's a mistake.
An awful lot of novice programmers take years to progress from their "mother tongue" to their 2nd and 3rd languages, if they even progress at all.
I think marrying yourself to a proprietary language like C# is a mistake, not because of any particular C# language feature, but because it's yet another product of Microsoft's extreme case of Not-Invented-Here Syndrome (see for example netbios, active directory, etc etc etc). They have a compulsion to create proprietary, non-compatible versions of things that already exist, and you'll be handicapped if you only know C# and ever need to work on Not-Windows.
C# is basically Java with some minor differences (differences that will be immaterial to the novice) and Java has a far better degree of platform-agnosticism and would be a far better choice for a first language than C#, IMHO.
- fleitz 13y agoReally? Linux, Windows, Mac, Android, iOS. Considering that Java won't run on iOS (nor can you deploy java apps to the app store), I'd say C# is far more platform agnostic.
- Alphasite_ 13y agoWell, there is RoboVM, and Java (or derivatives) run on just about everything wether it be you sim card or credit card to high end clusters.
- fleitz 13y agoSame with C# http://www.adafruit.com/products/336 http://www.adafruit.com/products/336 To be honest though anything non-x86/ARM is pretty esoteric these days, and realistically if you're going embedded C is a far better bet than anything else. (except maybe forth)
- foohbarbaz 13y agoIn practical sense .NET does not exist outside of Microsoft world. Most of those who mention Mon have never used it (or non-MS environments for that matter). Don't waste time on "Microsoft-Java". Either learn Java, or better yet start with Python.
- jsmeaton 13y agoCalling C# "Microsoft-Java" is about as accurate as calling Go "Google-C".
- computerslol 13y agoThe differences aren't so minor. I could write a list, but someone has already done that: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
- nahname 13y agoThat is a huge list that makes C# look amazingly better than java. Was this sarcastic?
- weaksauce 13y agoI have had my share of Linux, windows, and OS X. Currently I use OS X for the majority of my daily tasks but I am not dogmatic about it. I like all of them and think they are all good in their own ways. Right now the scale tips a bit to OS X but it could go any way. I have programmed in all three environments professionally and I know many different programming languages at least well enough to build a basic GUI. I say that to preface what I am about to say... Java is not the worst language I have used but it's up there. I was a professional c# programmer back when it was in its 1.1 days and now I have revisited it for another professional project and it has improved to the point where I wish it was native on the Mac and on Linux without mono. It's what c++ should have been. Edit... I have used java quite a bit and it's a terrible language.
- nullymcnull 13y agoC# is basically Java with some minor differences Just about everyone I see saying this stopped seriously following or working with C# back at 2.0 or earlier. The changes since then have produced a very different beast than Java. Whether it has origins in NIH syndrome is entirely besides the point - MS was bolder with the language and the framework than Java's sluggish committees, and at the end of the day has built the better mousetrap. IMO any novice who isn't Windows phobic would be better off learning it than Java, in part because it will expose them to a wider range of language constructs and capabilities (pseudo-functional bits, task parallel stuff, etc). That said, a total novice would probably be better off dabbling in a dynamic language like Python than taking on either Java or C#. Nothing like a REPL for getting your feet wet.
- na85 13y agoWill novice programmers be using pseudo-functional bits and running parallel tasks? IIRC we're talking about someone's first language, i.e. they're at the hello world stage. I don't see that person running parallelization schemes in their first 3 years.
- usea 13y agoThey will be exposed to higher-order functions very early on, as LINQ is one of the most popular features. You get early exposure to lambdas, functions as parameters, generators, and probably closures. These are valuable concepts to be exposed to, and IMO provide an advantage over learning Java.
- laureny 13y ago> I think marrying yourself to a proprietary language like C# is a mistake, not because of any particular C# language feature, but because it's yet another product of Microsoft's extreme case of Not-Invented-Here Syndrome That's really inaccurate. Mono aside, C# came up with quite a few innovations of its own, and I'm saying as a 15 year veteran Java developer who would love to see some of these be added to Java (at least we're getting closures next year). Also, learning C# will teach you a lot of constructs and concepts that will be readily available in other languages such as Java, Kotlin, Ceylon or Scala (and to some extent, even Haskell). The "proprietary, NIH, blah blah I hate Microsoft" nonsense belongs on slashdot, not here.
- mortyseinfeld 13y agoC# is basically Java with some minor differences That's absolutely not true, and everybody that has programmed in both languages know that's not true.