Does being a .NET developer mean knowing C# or mean knowing something else?
What books should I read if I want to be a .NET developer?
.NET is the core framework behind a set of languages, such as C#, VB.NET and F#.
C# is the most used of those languages, and arguably the "best" one in terms of syntax, but knowledge of C# doesn't mean knowledge of the .NET framework, nor the other way around.
Search online for some primer about the .NET Framework, then take a language of choice and start learning. In my opinion, C# is the one that will repay you best in the long time, while VB.NET may seem more user friendly at first.
F# is more oriented for math operations. It is a functional language while C# and VB.NET are object oriented. The difference is deeper than that, but I think you don't need to dig that deep while you're taking your first steps.
Edit: I blogged in more detail about this. http://matteomosca.com/archive/2010/07/09/dot-net-primer.aspx
C#, VB.NET, F# and many others are all programming languages which can use the .NET Framework, and which require the .NET runtime engine in order to execute.
See:
Note this is three separate areas of the documentation.
Also, see Beginner Developer Learning Center [4].
[1] http://msdn.microsoft.com/en-us/netframework/default.aspxC# or not C#
.NET has several languages. Mainly C#, VB.NET, F#. C++ CLI
But in real life Microsoft bet for C#. All the main features are developed for c# and after included in VisualBasic.NET. So my advice is learn C#. Also if in the future Microsoft falls, a C# developer easily could move to Java or C++.
(Here you have the full list [1])
Books recommended
There are dozens of books for beginners. I have learned with this one:
C# Primer Plus of Klaus Michelsen [2]
[1] http://en.wikipedia.org/wiki/List_of_CLI_languages.NET Framework [1] is the name of the whole platform. There are several programming languages (C#, VB.NET, F#, and many more [2]) with their respective compilers. All these compilers produce Common Intermediate Language (CIL) [3](formerly known as Microsoft Intermediate Language (MSIL)) code - a hardware-independent code. The Common Language Runtime (CLR) [4] finally executes the CIL code by (JIT-)compiling it to native machine code.
The .NET Framework also includes a large set of assemblies with common functionalities called the Framework Class Library (FCL) [5]. The ECMA standardized subset of the FCL is called the Base Class Library (BCL) [6].
And to add some mor abbreviations with C - the specification of the CLR is called Common Language Infrastructure (CLI) [7] and contains among other parts the specification of the type system Common Type System (CTS) [8], some general rules called Common Language Specification (CLS), and the specification of the execution environment Virtual Execution System (VES) [9].
[1] http://en.wikipedia.org/wiki/.NET_FrameworkProgramming C# 4.0, Sixth Edition by Ian Griffiths, Matthew Adams, Jesse Liberty is a great C# book, as well as Beginning ASP.NET 3.5: in C# and VB by Imar Spaanjaars. I agree with John as well.
Programming languages are normally pretty basic and simple. C# only has 77 keywords and like writing english papers they have some language rules that you should follow. "Frameworks" make programming languages like C# a lot more powerful by providing ways to make common tasks easier. You should start learning to be a .NET developer by learning C#. It is the most widely used language in the framework.
I am a fan of Murach's series, more importantly the publisher is appropriate for beginners and the C# book [1] is well rated.
[1] http://rads.stackoverflow.com/amzn/click/1890774464C# is an object oriented programming language...some of the others Java,C++ so as different from C a procedure oriented language.....while some thing like F# or LISP is functional language...all of these mainly differ with their approaches...Read more about it here [1].
What are the different types of programming languages? [2]
While .NET is a framework that basically allows various languages to compile and execute using the CLR....Being a .Net Developer it does not necessarily mean you know C# you may be working VB or F# so a .NET developer is someone who works with .NET platform....know more about differences between asp and asp.net or C# here [3]
.NET is a Framework developed by Microsoft in order to develop Web, Desktop, Mobile etc.. applications. So in order to develop the application in .NET, we use languages like C#, VB.NET, J#, Java, C++ etc which can be compiled to an Intermediate Language (MSIL) that can be understandable by .NET Framework.
So .NET and C# are not the same, we use C# as the language to develop applications in .NET Framework.
.NET is a proprietary framework for a variety of microsoft languages, including C#, F#, J# and VB.NET. There are also a few other languages that run on it, such as IronPython, IronRuby and Boo.
C# is just one of those languages.
Point of note: C# was the (first? or possibly only) language designed specifically to use .NET. Visual Basic was modernised from VB6. Visual C++ is one of many implementations of C++ that happens to target .NET. I don't know of anyone who's ever used J#.
C# is Microsoft's flagship for .NET and you can't go far wrong in using it. Many new features appear earliest and most comprehensively in C# before other languages.
Some people will use the phrase "C# .NET" and others will shout them down. They are wrong and this nomenclature is entirely correct, yet almost always unnecessary. There's nothing to say that C# can't target other frameworks and indeed it does with Mono. It's just as valid to say "VB .NET"; I suppose it would also be correct to say "C++ .NET" though most people would probably say "VC++" for Visual C++.
Question for the OP: Do you understand the difference between a language and a framework?
/clr:pure
. The only two unsupported features are setjmp
/longjmp
(dunno why, should be implementable using exceptions) and passing a va_arg
to a vararg method. - Pavel Minaev
Does being a .Net developer mean knowing C# or mean knowing something else?
As .NET is a framework [1], or generally a collection of class libraries [2] which run in a common [3] runtime [4], you could "know Visual Basic .NET" and "know" .NET. You could also "know C#", or "know F#", and similarly "know" .NET. More precisely, you are programming for .NET, or perhaps against the .NET runtime libraries [5].
A few analogies: Java is a language. It is also a runtime, or a virtual machine [6], with its own bytecode [7]. You could program in the Java language [8], or the Jython [9] dialect of the Python [10] language. In either case, your source code is compiled to be run inside a Java virtual machine [11].
Alternatively, you could "know" C++ [12], but I don't know if you know the C++ standard library [13], or if you know the Qt Framework [14].
An important distinction lies among the relationship between programming languages and targets, as well as implementations [15] of frameworks and runtime libraries. If you start to learn .NET on Visual Studio Express editions [16], in Microsoft Windows, you will probably be programming in Visual Basic .NET, or C# (3.0 or 4.0) languages, targeting the MSIL bytecode [17] to be run in the Microsoft implementation of the .NET runtime. It would be perfectly conceivable to have an implementation of a C# compiler which runs in the Haiku operating system and targets the Qt Framework and C++ standard libraries. It just might not be standards compliant at every level, or feature "complete".
What books should I read if I want to be a .NET developer?
Start with some books that cover .NET 3.5 and Visual Basic and C# each, so that you can develop for both, at least through examples, but feel free to code in whichever language you like best. 90% of everything you can do in VB/C#, its similarly easy to do in C#/VB. Try comprehensive books from major publishers such as apress [18], O'Reilly [19] (and C# [20]), or ForDummies [21].
Link: Visual Studio Express editions [22]
[1] http://en.wikipedia.org/wiki/Framework_%28computer_science%29Applied Microsoft .NET Framework Programming (Pro-Developer) [Paperback] Jeffrey Richter
THIS is how I got started!
here it is on Amazon: http://www.amazon.com/Applied-Microsoft-Framework-Programming-Pro-Developer/dp/0735614229 [1]
Be sure to see what they say is also bought with this book!
[1] http://rads.stackoverflow.com/amzn/click/0735614229Listen to me. I am 12 years old and I know better. All those lyrics about .NET and C# are utter BS.
Get yourself a good C# book and it will give you enough knowledge about most used .NET classes so for you there is no difference between C# and .NET for 3 years to come (at least!).
As you have seen from other response, the .NET runtime can host many programming languages. The two most commonly used ones are VB.NET and C#. The library of .NET is very similar between all the languages, with mostly the same objects/calls just done in different ways for each language.... So no matter which language (unless you use libraries specific to that language ie the Python standard library), you should be learning the .NET libraries.
C# seems to be the language the Microsoft is championing so I would expend effort on learning that one. It is also more similar to Java which is probably the most similar competitor to the .NET runtime.
When I see .NET developer, I think of job ads and generally they will be referring to C# or VB.NET. Iron Python, F#, etc. will just confuse the good HR people....
Learn Lisp first, then you can go on and learn anything else quite easily (just a bit frustrating when you'll see that those shiny new and buzzy languages don't have a lot of features that Lisp has had decades back).
I started with BASIC, then assembler (Z80), then Pascal and then assembler again (80x86), then C and C++, then JavaScript then Perl/Ruby/Python, and then Lisp. And I'm really very sorry that I wasn't lucky enough to have started with Lisp (or Scheme) in the first place.
.NET is a framework more or less like the Java virtual machine. In .NET you have a set of classes to use and when you compile your code it does not go directly to binary. First is pre-compiled to a common language so you can program in many languages (C#, J#, VB, etc. any how builds a pre-compiler can) and even a mix of them and then compile all of them to the common language where all of them can use all the classes of the .NET environment.
So you can develop your software in all the languages supported by Visual Studio. But you have to understand the .NET platform to take advantage of it.
In MSDN there are courses for Latin America like "programador 5 estrella" or 5 star programmer and they are very good for getting started.
.NET is the technology which is generally programmed using C#, C++, Visual Basic, etc. The C# programming language is designed for use with .NET, but it itself is not .NET.
Okay, there are lots of answers here but I'll try to make things as clear as possible.
C# is a programming language, i.e. notation for expressing your thoughts and ideas to computer with special words and grammar. There are many programming languages out there. Each programming language has its own rules, some of them may seem similar.
You can say that C evolved into C++, then Java took much from C++, and C# took a lot from Java. However you must be aware that C# is developed by Microsoft, whereas C++, for example, has many different implementations. Therefore C# is mostly for Windows, although there are some alternative options if you want to develop for iPhone [1], Mac [2] or Linux [3] systems.
Of course mere language is not enough. You need something that transforms your code into real programs runnable on the computer, which is called compiler. Often you don't want to reinvent the wheel. For example, you don't want to write code that downloads information from the Internet each time you need this feature because it was implemented thousands of times before. So you need some libraries that contain ready-to-use code.
For C#, this set of libraries, compilers and special tools, is called .NET Framework.
It is a package that you need to install on computer so it could run C# programs.
When looking for a job, .NET developer usually equals C# developer, because C# is considered the main language for .NET Framework. You need to choose some language to develop with .NET, and C# is a great choice. However you can also use VB .NET, F# and other languages with the same set of libraries and model of execution. This is why .NET development doesn't mean C# development but includes it. .NET is great in the way it allows developers to choose language.
You can use .NET to build dekstop applications, websites and apps for Windows-based mobile devices. There are also projects to bring .NET to iPhone and Android devices but they are not free (about $400).
[1] http://monotouch.info".NET".Equals("C#") == false
For completeness, since equality should be a commutative operator: C# does not equal .NET since C# code can be be compiled for a Silverlight runtime.
".NET" == "C#"; // returns false
- Mark Rushakoff