Hello,

Lately I've been considering to make the move to C#. There has been a
lot of hype about it in the last 3-4 years and it just seems(is it
though?) the perfect modern language choice.

Let me tell you about my background. I only know C. I'm not a Windows
hater, but I prefer Linux and its simplicity. I also find the Win32 API
to be scary. I don't have the slightest experience with OOP or OOP
languages.

Questions
------------

1. How easy is it to learn and program in C#? From what I hear, it's
fairly easy to grasp the fundamentals of C# and that the most difficult
part will be to learn OOP (or learn to think in OOP). Is that correct?

2. What's C#'s strongest field? Is it Internet programming? Can you name
C#'s pros and cons?

3. Does C# have anything in common with C? Will anything look familiar?

4. From what I've heard C# is based on Java. There has been a lot of
craze with Java, but I never understood it. Like how most universities
dedicate most of their programming classes to Java. Anyway, I have never
seen any serious Java project yet. It's been long enough around but I
haven't seen a single thing come out of it. My question is: Why wasn't
C# based on a more successful language (I don't mean to start a flamewar
with Java programmers here) ?

5. Does C# beat Java? If yes, does it beat it in all field, or is Java
better for some things (portability comes to mind) ?

6. I'm very confused about C#'s portability. I've heard that it was
designed to be portable, but on the other hand, some say that it's
strictly for Windows (or else things don't work and/or break). Opinions?

7. What about C#'s speed? From my experience, Java programs are slow as
hell. Is C# like that too? How does C# compare with other languages in
terms of speed (not speed of compilation) ?

8. Does a C# program need the .NET framework in order to run? Does that
mean that I have to include the .NET framework to every program that
will run on a PC that doesn't have the framework installed? How big is
the .NET framework (size) ? Also, how big are C# executables? How do
they compare with those produced by other languages?

9. What about C#'s efficiency? Do C# programs take up a lot of system
resources (like Java) ?

10. Can you name some big C# projects that have been done so far?

11. Can you explain to m the process followed each time I compile a C#
program? I'm confused with MSIL, JIT compilers etc.

12. I've heard about the Mono and dotgnu projects. What's their
difference? Do they try to accomplish different goals?

13. Does Mono work perfectly? Is it fully compatible with the .NET
framework? How up to date is it? Does it cover .NET 3.0?

14. Can I program C# on Mac OS X?

15. Can you recommend any good tutorials on OOP and C#?

16. What about books? I've heard very good things about "Programming
C#", but that one is for programmers that already feel comfortable with
OOP. I've also seen "Learning C#" which they say to be more entry-level
but doesn't have the same reputation. Additionally, "Essential C# 2.0"
seems good. What do you recommend? Remember that I've got 0 experience
on OOP.

17. I think I should wait before purchasing a book, because the .NET 3.0
just came out and most books cover 2.0 only. What are the changes to C#
(the language itself) from 2.0 to 3.0? Also what changed in the
framework? How fast and easy can one keep up with the changes and the
updates each time?

18. Should I learn the basics of C++ and/or Java to get the OOP feel
first, or can I just go to C# directly?

19. I think I have misunderstood what the .NET framework is. Currently,
I think of it like some sort of higher level API that provides wrappers
to the Win32 API calls, in order to provide easiness and friendliness to
the programmer. Is that correct?


Sorry for the long post, but I prefer having all the questions/answers
concentrated rather than make a lot of small threads.

Thanks in advance.