First of all, C# is an elegant, simple, type-safe, object-oriented language that allows enterprise programmers to build a breadth of applications. However, I have 3 years of working experience in C++ and now I have understanding what this language can do, what it advantages, what pros and cons. When you look at the unmanaged C++ solutions and libraries, you see that the approach the best of breed solutions use is to develop their own specialized engine and then generate dedicated handlers for each pattern that uses specialized engine. You always need some libraries additionally for you project, for example: Boost, STL, MFC, QT, ACE and others. Different languages offer different capabilities. For example, in unmanaged C/C++, you have pretty low-level control of the system. You can manage memory exactly the way you want to, create threads quickly if you need to, and so on. Microsoft Visual Basic 6, on the other hand, allows you to build UI applications very rapidly and makes it easy for you to control COM objects and databases.
The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube, and Baidu, are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
One of the most pertinent features of C# is the whole IL emit scenario. Machine code is a lot harder to work with than IL: so saying you could do it in C++ does not count. The whole IL emit scenario has opened the language for some amazing frameworks; and these frameworks allow the developer to gather momentum at the start of a project without the usual performance penalty to worry about. C# and .NET is so popular, because it's now Microsoft's first-class supported language, and Microsoft steers a very large ecosystem with a lot of inertia. Highest Rating (since 2001): 8.763% (3rd position, January 2012). Lowest Rating (since 2001): 0.384% (22nd place, August 2001). Paradigms: Object-Oriented. Type system: Statically typed. Best IDE ever (Visual Studio).
C# does not support real multiple inheritance, but C++ does, you can only have multiple inheritance from multiple interfaces in C#. Delegates are roughly similar to function pointers in C++, but they are type-safe and secure. We have to using the new modifier to explicitly hide an inherited member. The Main method is declared differently from the main function in C++. Also, compare the usage of the command-line arguments for each language. No global methods or variables in C#: Methods and variables must be contained within a type declaration (such as class or struct). Local variables in C# cannot be used before they are initialized. Destructors: In C#, you don't have control over when a destructor is called because destructors are called automatically by the garbage collector. C# does not support bit fields. Here is nice comparison with other languages too: http://msdn.microsoft.com/en-us/library/aa293030(v=vs.71).aspx. With .NET 4 version we have: Dynamic types and the DLR (i.e. runtime type binding, like python), Named and Optional arguments, Covariance and Contravariance, native asynchronous operators await/async and many more features.
With .NET it is very similar to this except that specialist engine is a sub set of Microsoft's.NET CLR. Actually .Microsoft profit equals Framework Class Library (FCL) + Common Language Runtime (CLR). This gives certain advantages; you don’t have to update engine for every hardware change, Microsoft does that for you, you have the full set of.NET features available for other modes of operation such as start up, and of course there is no overhead for communicating between the managed and unmanaged code if our end customers are using NET for other parts of their project.
Microsoft’s C#, Visual Basic, F#, and the IL Assembler always produce modules that contain managed code (IL) and managed data (garbage-collected data types). End users must have the CLR (presently shipping as part of the .NET Framework) installed on their machine in order to execute any modules that contain managed code and/or managed data in the same way that they must have the Microsoft Foundation Class (MFC) library or Visual Basic DLLs installed to run MFC or Visual Basic 6 applications.
The core features of the CLR (such as memory management, assembly loading, security, exception handling, and thread synchronization). In fact, at runtime, the CLR has no idea which programming language the developer used for the source code. This means that you should choose whatever programming language allows you to express your intentions most easily. You can develop your code in any programming language you desire as long as the compiler you use to compile your code targets the CLR.
Microsoft has created several language compilers that target the runtime: C++/CLI, C# (pronounced “C-sharp” - my favorite), Visual Basic, F# (pronounced “F-sharp”), Iron Python, Iron Ruby, and an Intermediate Language (IL) Assembler. In addition to Microsoft, several other companies, colleges, and universities have created compilers that produce code to target the CLR. I’m aware of compilers for Ada, APL, Caml, COBOL, Eiffel, Forth, Fortran, Haskell, LISP, LOGO, Lua, Mercury, ML, Mondrian, Oberon, Pascal, Perl, Php, Prolog, RPG, Scheme, Smalltalk, and Tcl/Tk.
You can always implement some legacy code in your Microsoft .NET application , for example COM code can be e asily i mplemented with RCW approach. The results achieved in managed code can be just as go od as those achieved with unmanaged but without the additional risks and associated costs of unmanaged code.
1) Active y manage any resources that are used in the steady state operation of the program. This is achieved through the use of resource pools. A number of resources are assigned in the startup phase and then these are recycled throughout the continuous operations phase.
2) Do not cause garbage collection in the continuous operation phase of the system.
Tight coding sta ndards and guidelines ensure that once in the continuous operating mode garbage is not created. Apart from the obvious approaches such as avoiding manipulating immutable objects, principle the.Net string data type, it also involves avoiding parts of the the.Net runtime that Rapid Addition knows create garbage.
.NET Framework it is a vast library of classes, as more you know from it as less you write code, and more you using from this library, and it just works. Microsoft .NET Framework™ and the Microsoft Windows, Unix (Mono) family of operating systems, also offers unbeatable cost‐of‐ownership, manageability, and flexibility. Also significant additional feature for using.NET it is Visual Studio IDE. I will explain why in another topic, BTW this is my favorite program in Windows for development.
What is your motivation for using.NET technology stack?