views:

975

answers:

6

I thought I'd be learning C++ at University, but it seems that they've now dubbed C# as an industry standard language.

I never thought I'd bother with it, but it's actually a very nice language.

The only problem I have right now is that I'm limited to the Windows platform.

So maybe, when I write Windows programs from now on, I should practice C# instead of my previous WinAPI and C++ experience?

I've also heard great news about the Mono project, and also the fact that C# is one of the scripting languages for the Unity 3D game engine.

Any insights?

Open discussion to anyone!

+5  A: 

With Mono, you can run on Linux and Mac. Mono is also doing a Mono Touch version for the iPhone. This has a lot of possibilities in the future. C# has been around for 9 years already and is part of .NET. with .NET also having C++, F#, VB.NET as languages also available, I think that C# will be around for a long time. C# became an ISO standard in 2003, so it definitely is a standard language. It does seem that it will always be a second-class language on Mac or Linux tho. One Windows I think it will be there and people will use it, but on the others there will be resistance.

The Unity game engine for the iPhone uses the new Mono Touch and C#, so it might be the way that it gets more people looking at making iPhone apps and using C# on a non-Windows platform.

SteveM
+1. I hadn't heard about Mono Touch...
Mitch Wheat
http://www.mono-project.com/MonoTouch
SteveM
Yes, C# is a "standard", but MS didn't implement that standard and apparantly isn't really interested in making more modern versions of C# into a standard.
Ira Baxter
+3  A: 

I think C# has a great future and will continue to grow in usage. On the other hand, I wouldn't be too quick to drop C++: it is an important industry language and will continue to be for a very long time.

See my answer to this question to see my more general thoughts on how to choose which languages to spend time learning. Keeping up with language trends is an important long-term skill for a developer.

Imagist
+1 for the general thoughts link.
Steve Gilham
+1  A: 

tl;dr version: learn both. then learn Scheme. learn whatever. There is no "one language that everyone teaches and that every employer will want you to use"

Before C#, a lot of universities were teaching Java. Lisp and Python are also commonly taught.

As higher level languages, C#/Java let students get to understand the higher-level concepts before they fully master the lower level ones, (so, for example, they don't have to get caught up about not causing memory leaks in their first Linked List implementation for intro to data structures.

In the end, a well-rounded CS education will cover lower-level concepts as well. I believe most students take at least an Intro to Computer Systems course, where C/C++ and reading disassembled code is required.

for the record, My first CS class was SICP in Scheme, followed by a series of classes where we were allowed a choice of C++ or Java (and sometimes Scheme/Perl/other).

Jimmy
+1  A: 

History suggests that C# will be in large use but probably with declining market share. Consider what has happened to all the other major languages you know about: at one point, they were among industry's favorites (COBOL, PL/1, Ada, Basic, C, C++, even Java) and now other languages are eclipsing them. C# will probably hold up pretty well; it is well designed and Microsoft has every reason to keep pushing it. OTOH, then needs of next generation computing (parallelism, distributed computing, security) may cause even Microsoft to replace it (witness IronPython, F#, ...).

Its probably worth your trouble to learn it, on the grounds you're not going to guess the replacement easily at this moment and it will still be useful in decade, if nothing else because of the huge code base it will have.

Ira Baxter
C# usage will probably grow further before it starts to decline. It has huge scope to become 'the' managed language on Linux, with a very complete open source implementation.
Daniel Earwicker
The question was, "Where will C# be in 10 years". Sure, there will be swell over the next 3-5 years. My point is after that it will decline.
Ira Baxter
+1  A: 

Learn both C# and C++. It sounds like "picking the right language" and therefore avoid the "wrong" ones will save you time, but it's a false economy. You should read up and play with all these languages:

Sounds like a lot of hard work for nothing, right? Wrong. First, it's fun. Second, the more you learn about other languages, the better you get at using your preferred language. It's quite likely you'll end up more expert in one language, but you'll be able to use knowledge from all the others in it - C# has done a great job over its lifetime of smoothly integrating ideas from other languages.

Daniel Earwicker
A: 

As a language, C# will continue to embrace and extend -- with the dynamic and functional extensions it's growing, it's becoming more like JavaScript than Java in nature. I would not be surprised to see it subsume the feature set of MSFT's experimental Axum language for highly concurrent use.

In response to the question behind the question -- I'll add a "me, too!" to all the posts about learning more languages. Just because you already know one Turing-complete language, that's no excuse to stop. Other languages will slice problem space in different ways, and give you insights on how to cast your solutions more effectively. And just having more tools in your toolbox is a good thing, rather than always using the same hammer.

Steve Gilham