Programming Languages: Managed versus Native
(Page 1 of 4 )
If you're ready to learn how to code, you have a tough choice ahead of you: which programming language to learn first. While there are a plethora of languages to choose from, the vast majority approach coding from one of two opposed philosophies: managed or native. This article will help you decide between the two.
I frequent a number of forums, and periodically someone always brings up the question of whether C# or C++ is the better language to use when learning how to program. This illustrates the battle of native coding, represented by C++, and managed coding, used by the Microsoft-made C#. I will not observe the question from the point view of what differences are between the two and which can be learned with less headaches.
Rather than fall into that trap, we will explore the war between native and managed coding, examining it first from the side of the market, and later consider the advantages you gain while coding.
Finally, we will sum it up in a stylish manner by giving to you some advice that will point out when to use one or the other approach. Remember that this is just for the purpose of guidance, and may be subject to change based on the details of your own project.
Coding languages are divided into two or three different groups depending on the level of their complexity. "Level of complexity" in this case indicates how abstract they are, and at which level they communicate with the hardware.
First there are the low-level programming languages. These have only a minimal level of abstraction, and no concept of Object Oriented Programming (OOP). They interact directly with almost every level of hardware you possess. Assembly belongs at this level, as does any native code that does not require a compiler or interpreter to run.
On the other side of the coin, you will find high-level coding. Anything in this category features a very high level of abstraction. OOP is at home here, and you are completely separated from the hardware. Instead, you receive at your disposal a multitude of functions, and each one internally handles hardware-related tasks.
Furthermore, at this level you will not find anything like pointers; nor will you work with the memory directly. You just create the objects and let the Garbage Collector take care of this task. Languages that work like this include C#, Java, Python and Perl. They are called managed codes.
Of course, these distinctions are made purely on the level of theory. In everyday usage, some languages can move slightly towards one or the other direction. The third road is in the middle between the two; not surprisingly, it is called middle-level coding. This is the most low-level high-level coding, to be more exact; here we are talking about the C/C++ group. Although this group has a minimal idea of management, it is still strongly native code, with everything that implies (i.e. leaving many tasks to the user).
The languages of middle-level coding know about OOP, and maintain a good level of readability and direct memory handling with the help of the pointers. In return, though, middle-level coding loses a lot of direct hardware access. There are languages that are between even these languages, so think of these terms as a representation of the general concept, not a rule and point of reference.
Next: The Marketing >>
More C# Articles
More By Gabor Bernat