tags:

views:

651

answers:

10

I want to learn C# because... It seems to be a pretty marketable language these days. More than C, not so much as PHP/MySQL in my area, but I'd rather be a software developer than a web developer. Anyways, I'm running linux, and I have no hope of working on a windows platform until I buy a new computer. So, are there any drawbacks to learning C# under linux? If so, are there any good lessons online for doing such a thing? Any good tutorials online for learning C# in general?


update

so what I'm getting is that the main drawback is that although the full C# language spec is implemented in mono, the full .Net framework isn't. But, until I can get a new system and run windows, I guess lacking the full framework will have to do.

+2  A: 

The main problem with C# on Linux is that your development system will not be as good, in most people's estimation. But you may get really good at vi(1)...

DigitalRoss
+1 this is my problem....mono is great for what I've needed to do with it.
kenny
you can concentrate on learning C# and not the IDE
KM
+4  A: 

The major drawbacks that I see are:

  • The latest .NET versions are not supported
  • Different tools between Mono and Visual Studio

In spite of that, I think you can learn a lot about C# on Mono.

Eric J.
+6  A: 

learning C# on linux may actually be good, when you start doing it on windows, you will know both. The IDE will not be as modern, but I'll bet there are not many people that can do it on both.

You'll be able to concentrate on the actual C# language and you can learn the microsoft IDE when you get to use C# on windows.

KM
+1 Perfect. (15 chars)
280Z28
+2  A: 

On MonoDevelop you won't have all the newest features of the .NET framework, it's somewhere between 2.0 and 3.5. It supports C#3.0 though.

Botz3000
+3  A: 

The language spec is fully implemented but the framework itself is not. So learning C# the language will be no different (ignoring the benefits of using visual studio as your IDE). Writing against the framework will be a bit different.

edit> It also depends on what kind of programming you intend to do. Much of the parts of mono that aren't complete are also often edge cases for beginners that you aren't likely to run into. So if you're just learning C#, there's a very good chance that you won't come across the parts of the framework that haven't been implemented yet (and I mean yet, they are very fast at updating mono from what I've seen so far, so by the time you're ready to really explore the framework and all that it entails, there's a good chance that it might be completed by then)

SnOrfus
I agree, from my experience, you won't discover much flaws. Linq and stuff works also well. Only on areas like GUI (ofcourse) and Ado.Net there will be more problems.
Dykam
+2  A: 

Learning the language should not hurt, I would not depend on it to land you a job. However, keep in mind that many of the runtime services that are accessed via C# may not be available. Knowledge of those services is perhaps just as, if not more, important the language itself.

Noah Campbell
+1  A: 

Mono is gaining traction very, very quickly. I've heard rumblings that MS is silently supporting Mono (see their approach with getting SL to run on Linux). In some cases, mono actually outperforms .net on a windows based server.

The downside would be the IDE and features, as many have already mentioned. Visual Studio is by far the best IDE out there.

It does support Asp.Net MVC IIRC though.

Chance
A: 

Mono overcomes the single biggest drawback to using .NET from Microsoft for many developers, the requirement to run on the Windows platform. By bringing the shared source release of the .NET Framework to multiple platforms and then building an open source project around extending it, The Mono Project has made the strengths of .NET available to a wide range of developers. The ability to develop using a variety of languages, all using a common interface and deployable on a number of platforms is a very compelling development strategy.

As far as the web services aspects of Mono are concerned, nearly all of the Framework is complete meaning a developer can begin developing web services today using Mono. Mono features nearly complete implementations of ASP.NET, ADO.NET and Web Forms, along with almost all of the SYSTEM namespace. For more a detailed visit mono's official site,mono-project.com check out these articles on Cool Solutions for Developers:

JJ
Mono is not based in any way on Microsoft's shared source release of the .NET framework (Rotor). It is a complete clean room implementation from the ECMA specs, MSDN documentation, and comparing output to .NET.In fact, if you've looked at the Rotor code, you are forbidden from contributing to Mono (to ensure clean room implementation).
jpobst
JJ
+3  A: 

Any good tutorials online for learning C# in general?

Here's a tutorial I wrote:

http://www.csharp-station.com/Tutorial.aspx

Feedback has indicated that all of the code in the tutorial runs fine on Mono.

Joe

A: 

Well there is nothing wrong if we learn something & probably we might end up improving it which will be more useful to the future users.Probably that is the power of open source.I think all developers will agree to this point :)

JJ