Ok, so this GAIM converstation isn’t 100% acurate, but for explaining something to your non programmer friend, your mom, or you dog, it is good enough.
(09:38:29) yonoshe_steckler: what’s the diff between managed and unmanaged?
(09:38:47) sillyevar: managed is something that runs in a runtime like .NET or Java (or perl or python for that matter)
(09:39:10) sillyevar: unmanaged is something that runs right on the hardware/CPU of a machine, like compiled C,C++ and traditional programs
(09:40:02) yonoshe_steckler: but wait… i thought that java was a compiled language
(09:40:56) sillyevar: its compiled to java bytecode, not native bytecode(machine language)
(09:41:23) sillyevar: C# and .NET is the same way, it is compiled to .NET bytecode (called CIL, common intermediate langauge)
(09:41:42) sillyevar: then the JVM interpretes those bytecodes (or in the .net case, the .net runtime interprets them)
(09:41:51) yonoshe_steckler: oooooh
(09:41:53) yonoshe_steckler: ok
(09:42:20) sillyevar: that is why you have things like a JIT (just in time)… it supposedly does the JVM interpretation to machine code fast enough that you can’t tell the difference, and that may be true… BUT!!!
(09:43:38) sillyevar: both of these systems manage memory usage within the VM, and that means programs are allowed to write code with memory leaks (sometimes huge ones, think azaurus), and the VM will clean up the memory leaks, but that cleanup takes time. Sometimes it can take lots of time, like 50, 70, even 90 percent of the CPU time can be spend managing memory.
(09:44:37) yonoshe_steckler: yikes
ouch… you lumped me in with your mom and your dog? i’ll remember this the next time you have a front-end question, jerk…