Conciente Wrote:Hello,
I want to know more about the .NET platform. Things like:
- Which operating systems does it support?
- Which programming languages can be used?
- What combination of OS/Programming Language/IDE is best or recommended?
- For this OS/Programming Language, what kind of system support to the documentation is available?
I am trying to immerse myself in this world but I need to know a bit more about it before. A little bit of background would help a lot.
What operating systems does it support? In theory, it's cross-platform like Java. Code gets compiled to bytecode for a virtual machine to Just-In-Time compile to native code at runtime. In practice, mainly Windows, although there's Mono for Linux/Unix/OS X (and Windows too).
Mono is an open-source set of tools (C# compiler, runtime virtual machine, etc) for doing .NET stuff on those platforms. Naturally, Mono tends to lag behind Microsoft's .NET, but the bytecode format and C# are standards, so Mono doesn't have to reverse-engineer the platform. However, there are parts of .NET that are not in the standard, including the Windows Forms GUI framework. If you plan to write cross-platform apps, make sure you familiarize yourself with what is and is not part of the standard. Mono attempts to implement some of the non-standard stuff as well.
Some terminology: .NET and Mono are both implementations of the CLI (Common Language Infrastructure). The CLI is what is standardized.
What programming languages can be used?
1) C# - The primary language. C# is my favorite programming language. It's basically like Java (OO, everything is a class, only single-inheritance allowed but classes can implement many interfaces) but generally less verbose and has some rather nice additions such as:
Events: A class, like a GUI Button, can have an event like "Click". In your code, you can "subscribe" a method to the event. The Button class can "fire" the event, which will call all methods subscribed to the event.
Properties: Syntactic sugar for the Get*() and Set*() methods you see everywhere in Java. You can have something like myButton.Text = "Click here". It looks like a data member, but it's actually calling a function.
You can put primitive types like int's inside containers without needing to store them in a wrapper class like Integer!
Nullable primitive types:
Code:
int? x = 5;
x = null;
if(x.HasValue)
Console.WriteLine(x.Value);
else
Console.WriteLine("x is null");
2) VB.NET - C# with different syntax, preferring to use words instead of symbols. "End If"instead of curly braces, etc.
3) C++/CLI - Microsoft-only. An extension of C++ allowing you to mix native code and managed code. It's pretty useful for making a .NET interface to a C or C++ library.
4) IronPython - Python for .NET and Mono. I don't know much about it, but I think it can use code written in other CLI languages, but the opposite is not true until .NET 4 comes out with better support for dynamic languages. I think so, anyway - like I said, I don't know much about it.
5) F# - Functional programming for .NET. Don't know much else about it.
6) Boo - I dunno, some language, read the
wiki.
And more... (degrees of compiler and tool support may vary)
What combination of OS/Programming Language/IDE is best or recommended? Personally, C# with Visual C# on Windows. Visual C# Express Edition is free. I've tried SharpDevelop, but it lacked a couple features of Visual C# that I wouldn't want to go without (I can't recall exactly what, however). On other platforms, Monodevelop is the about the only IDE I think. If you have the option of developing on Windows, do so. The alternative IDE's may have made some progress since I last tried them, and might actually be worth using.
C#, being a properly designed language, has IDE's that can do powerful stuff you don't get with C++. Things like renaming a class or variable and having it update the name everywhere it's used.
For this OS/Programming Language, what kind of system support to the documentation is available? I don't entirely understand what you're asking here.
tl;dr - C# rocks your socks.