Ever since managed environments such as JVM and .Net CLR gained widespread popularity, they pushed the traditional native programming aside as Unmanaged – as in chaos. While antonym of managed can indeed be unmanaged, the term doesn’t seem a fit description to the mighty performing native environment. I prefer to call it Self Managed. and here is why.
Let us first look at the managed environment. We need to answer a few significant questions like:
- Why we need a Managed Environment?
- What is Managed?
- Who Manages?
Then quest to answer these questions will automatically take us to a journey to the pre-managed world.
Why do we need a Managed Environment?
There are several motivations for a managed environment –
- With different OS having different capabilities and different ways (API) for the same capability, portability turned out to be real issue with native language which the managed environment sought to redress. In native languages like c/c++ programmer needed to create their own mechanism to address the same.
- How do we ensure that the code which is downloaded (embedded in html) from a remote (unknown) terminal is safe to run? The built in and Code Access Policy takes care of it.
- Probably the most important aspect of the managed environment. The memory management attempts to relieve you from the botheration of clearing off the no more needed memory. In native world the burden of freeing up the memory was with developer and the problem can be summed up as.
With Memory de-allocation; weather you remember to or forget to free the memory. Both ways you can go wrong. First leads to dangling pointers and the second to memory leak (see: Pointers vows and concerns ).
But the bottom line as native language (c/c++) programmer we wrote good and efficient codes with portability and proper memory management. Only thing we needed to manage our own affairs rather than somebody (managed framework) doing for me. But then that is Self Managed not unmanaged. Right?
Disclaimer: I don’t mean to de-value managed environment but to emphasize that language c/c++ doesn’t deserved to called unmanaged.