6 ms·
C# is the past, the present and the future
- cageface 14y agoC# is a great language and Ximian has been doing brilliant work on Mono but I'm actually starting to wonder about the long-term prospects of Microsoft. Without a significant corporate sponsor I'm just not sure it has the momentum to endure.
- tonyedgecombe 14y agoC# and .Net exist to support Microsoft's enterprise customers, I don't see any signs that that side of their business is struggling.
- rjd 14y agoMost of the Microsofts revenue comes from server side stuff anyway, 60% from memory(?), it'll be a good 5 years at least before that market dents. I don't think you'll see c# going away anytime soon. EDIT : couldn't find 2012 but heres 2011 http://punchcut.com/sites/punchcut.com/files/win8_1-8_eb-msft-revenue-q42011.jpeg http://punchcut.com/sites/punchcut.com/files/win8_1-8_eb-msf... business + server looks around 60% which I guess is where my figure comes from
- smegel 14y agoI thought office was the cash cow...lot more desktops out there than (Windows) servers.
- josteink 14y agoBut lots of those desktops comes with cheap, sponsered OEM-licenses of Windows and Office. You don't get OEM rebates for your MS server-park.
- smegel 14y agoNot the ones in corporations, they don't get oem anything. MS can, and does, extort practically whatever it wants from big business who basically are incapable of realizing alternatives to office/windows.
- egeozcan 14y agoI like C# and I also think that it will keep evolving. But statements like "C# has adapted to the needs of the community over these 13 years or so very well" without explaining how makes this article sound too marketing-oriented.
- guard-of-terra 14y agoI would like to try it out but I'm not on Windows obviously, and I won't work to become a second class citizen ("What do you use? Mono? That's not supported"). Also, most of tooling seems to be proprietary, Windows-only too. So I'd stick to JVM.
- fekberg 14y agoI'd suggest you give Mono and MonoDevelop (http://monodevelop.com/ http://monodevelop.com/) a try! It's really good and at least most of the web stuff that I've developed have just worked out of the box on Linux (Apache + Mono).
- guard-of-terra 14y agoI don't want to be a second class citizen. I don't want to be a second class citizen ever. I don't want to be a second class citizen. I don't want to be a second class citizen ever. "Really good" is so much different from "The Most Awesome Edition" you get with languages like Java or Ruby. I can tinker with a "Really good" tech on home projects all right (except I prefer Clojure), but not in the workplace.
- mattmanser 14y agoCitizen. There is no alternative spelling. Sorry, you just used it so much!
- guard-of-terra 14y agoThanks for the correction because I always struggle with s/z in that position. It just makes so little sense! :(
- jinushaun 14y agoThere are real companies out there making real money off Mono. So it's not a toy reserved for weekend tinkering. Enough companies trust Mono to use it in production.
- jeswin 14y agoThe article is very scarce on content. This could have been a tweet. Also, saying "C# was here to stay from the beginning, we love it in the present and we will use it more and more in the future." wouldn't convince many people. In my view, the future of C# is hanging in the balance. Microsoft has lost significant mind share, and I am not sure if Windows is a good platform anymore to write new apps.
- benologist 14y agoI have to agree, it occurred to me the other day that my almost one year old daughter might never have a Windows computer, in the same sense that people 10 years younger than me simply never had an MS-DOS one, except this time Microsoft didn't build the next platform.
- WayneDB 14y agoTotally dude. Because C# only runs on Windows. You can't use it to build apps for the iPhone, Android, OS X or Linux at all. Nope.
- benologist 14y agoMono is an option for the current generation to learn one less language. Outside of Windows it's not the default language for anything except Unity3d so curious kids who grow up with tablets might not have much reason to learn it.
- WayneDB 14y agoSo, nobody should learn a language unless it's the "default language" for a platform? What is Python, Ruby or PHP the default language of? Should anybody be learning Perl, Haskell or Objective-C in your opinion?
- benologist 14y agoI'm not saying nobody should but I bet a shitload more people go with natively supported, which might be a better term than default. And yeah this isn't at all specific to C#. Anything not natively supported suffers - just ask Flash who in a handful of years have gone from a defacto standard to a dinosaur.
- camus 14y agoC# and .NET were designed to sell Microsoft Windows Servers, C# = Microsoft and any side project like Mono can be shut down any time. Microsoft did not become what it is by embracing open and free technologies unless it was to "extend and extinguish them", if you dont pay for a product one way or another there is no reason for Microsoft to support that product. C# is a good language but definetly not the future.
- brass9 14y ago>any side project like Mono can be shut down any time. RMS had been trying to spread that particular flavor of FUD for over a decade - albeit C#'s popularity has extended beyond Linux into mobile space. I am no friend of Microsoft, and not a huge fan of Mono - but I think together they provide a viable alternative to the cross-platform JVM.
- numo16 14y agoMicrosoft has been making some decent moves into open and free as of late. The biggest thing lately, that I can think of, was their open sourcing of the entire asp.net stack: http://aspnet.codeplex.com/ http://aspnet.codeplex.com/ http://aspnetwebstack.codeplex.com/ http://aspnetwebstack.codeplex.com/
- forgottenpaswrd 14y ago"I am a Software Engineer working with various techniques such as C#, WPF, WCF, ASP.NET MVC, ASP.NET and much more" "I spend most of my days working with the latest technologies from Microsoft." "In the darkest alley-ways we still have the people not wanting to touch C# with a pitch-fork because it’s behind Microsoft" In my opinion he lacks enough neutrality to make that statements(how he know MS tech is so great if he is totally ignorant of other options?). Instead of telling people to learn only Microsoft tech he could take his own advise and learn non Microsoft tech too. The world is much bigger than a single company. In my work as a software engineer I had to use what was good for my company, not what was good for Microsoft, Apple, or any religion(GNU or whatever). I had to use Java, C#, objective C, python, (and lisp and c and c++). We will never be in the hands of a single company ever.
- fekberg 14y agoYou left out some of the about page where it says that I worked as a tutor in Java and C++. You're right that my about page doesn't contain all my resume. For your information I've worked with Java, Objective-C, Python, PHP, C++ and used Gentoo as a primary OS (for years). The blog and my current job is mostly .NET though which is why I highlight that in the about page.
- WayneDB 14y agoOne problem with your statement is that C# is not only "Microsoft tech". C# is an ECMA language for crying out loud.
- taylodl 14y agoMicrosoft used Ecma as a standards repository, not a standards body. Ecma neither created nor endorsed C# - they received and recorded a standards submission from Microsoft thus making C# "Microsoft tech." Finally, neither C# 3.0, 4.0 or 5.0 have been submitted to Ecma. So we can hardly refer to C# as an Ecma language for crying out loud! :)
- WayneDB 14y ago
- damian2000 14y agoI love C# as much as any MS fanboy would, but when people like Charles Petzold start abandoning C# and .NET for native C++ - http://blogs.msdn.com/b/msdnmagazine/archive/2013/01/08/10383228.aspx http://blogs.msdn.com/b/msdnmagazine/archive/2013/01/08/1038... - to get more speed out of Windows 8 apps, then you have to start thinking maybe Microsoft is at least pushing C#/.NET out of the limelight - its not the be all and end all it used to be.
- jinushaun 14y agoThat's like saying Ruby is dying because some people choose to implement some gems in C++, which is a ridiculous thing to say. Pick the right language for the job: rapid development versus raw performance. They can coexist.
- barking 14y agoSecond question down in that interview in response to petzold mentioning C++ : Desmond: So should we be looking to move away from managed platforms and languages? Petzold: No, no, no, not at all.
- dromidas 14y agoNot everything needs native C++ performance. I use C# all the time on things that need easy maintainability and to be as secure as I can reasonably make it.
- damian2000 14y agoTotally agreed ... horses for courses etc. I also use C# the majority of the time ... but it seems like it will now be sharing the stage with C++ and possibly HTML/JS in terms of the recommended languages by MS.
- jinushaun 14y agoHe clearly works for MS and probably on the team that works on C#, which is why I find it odd that he touts Mono as a feature. If MS was serious about .NET everywhere, they'd sponsor Mono/Xamarin, or offer native .NET support for OSX and Linux instead of using the Mono community's hard work to toot their own horn. C# is a great language and has evolved beautifully, but many people will still continue to avoid it because it's owned by MS and stuck on Windows (without the help of Mono). The next Google, Facebook or Twitter won't be written with C#.
- teh_klev 14y agoHe isn't MSFT staff, read his "About the Author" page, he works for a Swedish company. Also he's a MS MVP, you can't be a Microsoft MVP and work for Microsoft at the same time.
- jinushaun 14y agoYou're right. His use of "we" had me confused.
- jsmeaton 14y agoNothing about that article suggested he works for MS and the style of writing alone is enough to convince me he doesn't. Does Sun/Oracle sponsor all the different implementations of Java? Does the Python Foundation sponsor the various implementations of Python? I'm guessing the work Microsoft are currently doing with Roslyn (compiler as a service) will benefit the various implementations also. The C# spec is open and standardised, and if a particular group wants to pick it up and implement it, I find it a very weak argument to suggest that any company should throw money behind it.
- jinushaun 14y agoBut Java and Python are cross platform out of the box.
- mahmoudhossam 14y agoCan you please rewrite this so it doesn't look like an ad for Microsoft?
- yellow2blue 14y agoHe's a junior MVP, of course it has to look like an ad :)
- 7D8 14y agoDO NOT mention Windows in a good way on HackerNews, its just taboo around here. (sarcasm)
- merlish 14y agoThis article has a great title. Would have been nice if there was a bit more content to it; maybe we wouldn't have ended up with a bunch of hostile comments with spelling mistakes. So let's give it a go. An opinionated past, present, and future for C#: The past: .NET emerged seemingly in 2002/2003 with a feature set similar to Java. This was pre-generics, and all code written in C# in this era is alien and involves a bit of casting. Microsoft released Visual Studio 2002, containing support for (at least) Visual C#, VB.net, Visual C++ .NET (of course. let's blend two completely different object systems. my actual favourite: Objective-C++ .NET), real C++, and Visual J#, the successor to Visual J++ (which Sun had sued the crap out of them for). Of course you're not jealous of the JVM, Microdollar! We believe you. C# did have structs at this point, distinct from classes, which are a pretty cool feature. They're more lightweight than classes, and I believe are passed by value rather than by reference like with classes. Also, unsigned integer types. As a man who had to make a small machine 'emulator' in Java as part of a not incredibly well thought-out practical, I appreciate not having to bend my mind around poking the sign bit to try and get the real number I'm actually after. And automatic unboxing and boxing of types was cool too. Int basically the same as int. So they did have a few original thoughts. Event handling also deserves a mention, so there we go. I personally was coding in VB6 at this time, and viewed VB.net with a mixture of bewilderment and contempt. So many keywords! Although the My.* namespace looked really cool. Actually being able to find out and change things about the current system, without being e.g. only allowed to change registry settings in a VisualBasic area of the registry. That was about the time that I was messing around with threads thanks to the AddressOf operator, so really, a move was probably on the cards. (You had to bind the Windows threading API yourself, and when you tried to pause in the IDE it would only pause one thread, get confused, and crash.) I eventually moved to VB.net (in the 2.0 era) and turned to treating C# with a mixture of bewilderment and disgust. (Clearly, I'm a quick learner.)
- merlish 14y agoThe 2.0 era Java and .NET got generics around about the same time, a few years later. Java (sanely, to be honest) implemented generics via type erasure - so the compiler does the type checking, and then emits code that has no type information for generic containers - whereas the .NET team elected to break backwards compatibility* and make the runtime understand generics. I think Mono appeared around this time. This is the time when .NET started to get going, to be honest. Never settle for writing < 2.0 targetted code! Not that you can, unless you're running Visual Studio pre-2005. XNA ran 2.0, although Microsoft's bored of trying to get people who aren't amateurs to use that now. Running my own code on the Xbox 360 was pretty cool though. But they seriously needed to put a better garbage collector on that thing. It was, er, rubbish. * An annoying but possibly necessary decision. To this day, .NET 1.0/1.1 and 2.0+ apps require two separate runtimes to be installed, on Windows. Although Mono just deals with it, I think. Still, coming across the odd remaining 1.1 program can be a nasty surprise.
- thebluesky 14y ago> C# was here to stay from the beginning, we love it in the present and we will use it more and more in the future. This article would have received a bit more respect if it had been a bit more subtle about the C# cheerleading.
- j_s 14y agoFrom my limited perspective, C# hasn't changed much apart from syntactic sugar (less typing!) since generics were added in v2.0. This is similar to all the stuff Microsoft throws into their C++ compiler to make COM more user-friendly. Most of the additions have been to the CLR, where Microsoft has earned a reputation for changing behavior in the 'green' bits (meaning: supposedly unmodified) when updates are installed. Also, Windows 8 brings the new WinRT; it's impossible to know how long either runtime will be 'the one true way' (see Silverlight). It's hard to get behind a software development tech created by a company that makes its money selling new versions of operating systems and development tools (the cool stuff always requiring the latest versions, of course!). Microsoft is always moving the cheese.