An odd comparison?…
“What exactly is the Microsoft .NET Framework?” (Tip: Read .NET as “dot net” – stands for Microsoft .NET Framework (Fx))
=> A typical (basic) interview question you might’ve asked/been-asked, or as a non .NET techie, you would’ve pondered about this question, isn’t it? A curious layman – think of an octogenarian relative/contact (grandpa!) – who’s heard about .NET (or maybe even not!)… He could fox you with such a fundamental question… Especially after you just looked him in the eye & told him that you work on .NET, at the same time as you straightened your shirt collar, or ran your hand over/through your hair.
A (kinda crazy) thought just passed my mind last week, when I was chatting with my friend Hari Krishna, currently a (HSMP) C# developer in London (he hates VB.NET, so explicitly mentioned C#)… Well I thought that the .NET Fx was *just* like a ready-to-use gadgets-fitted James Bond car – specially made-to-order (as per the movie’s script ;-))! 🙂
I understand & agree (Yeah, I seriously do!), the .NET Framework is much much more than what it sounds above, but to a non-techie (or even to the interviewer), he/she gets the basic idea here. (I hope your octogenarian relative/contact (grandpa!) knows Bond as Sean Connery or Roger Moore… or if not, maybe he remembers the Bond girls, viz. Ursula Andress, Tania Mallet, Nadja Regin, Jane Seymour or Lola Larson! ;-)… Hey go easy, you could give him a hard situation at this age! 😉
Back to our interviewer, he/she could also be impressed that you have given ‘deeper’ (& philosophical?) thought to their ‘question’, than just reply with a (vanilla) textbook answer.
I’ll delve in a little deeper… Stick along…
C++ (my alma matter!), is like an old HM Ambassador. Powerful, but with a hard steering wheel & manual transmission. C# (of course, throw in your other favourite .NET compliant languages too) is like driving a nice (relatively) effortless & large Toyota Innova with power steering & auto transmission. 😛 (HK Sir always says he drives an ‘elephant’ in the city! :P)
Obviously, in contrast to the point above, though the Amby is not as fuel efficient as the Innova – increasing the ‘run-time’ costs; a binary built with a C++ compiler-linker is pretty small in size, as well as low & efficient on resources at run-time; in comparison to a C# intermediate language (IL) one. Let’s not get into the differences between a native binary & intermediate language code (IL is ‘supposedly’ OS independent. => ‘supposedly‘ because I’ve not tried porting, yet.).
So – while with a C++ program you have to spend a lot of time & efforts ‘plumbing‘ your code for optimal system resources utilization; C# allows you to focus on the functional issues of your program, rather than bother about the system resources. With the framework providing you with a host of goodies – it further alleviates your focus to the domain of the problem you’re working on through the program.
Isn’t that just like in the James Bond movies – where 007 has fantastic cars fit with special gadgets, specifically designed as per the movie’s script, because 007 uses each & every one of the gadgets it has? Though his cars don’t allow gadgets to be ‘plugged-in’ dynamically if required, he makes optimum use of the gadgets he has, i.e. his resources. He isn’t bothered about the car or the drive; he focuses on fighting the villains he’s chasing, or the ones chasing him, or even to charm his beautiful ladies. (OOPS guys -> Yeh Abstraction hai mere yaar! – Listening to Rahman’s ‘Yeh Delhi hai mere yaar‘ from Delhi 6 while composing this, hence the quote… nevermind!)
Similar to Bond’s cars – the “Framework”… “.NET Framework” (the name is “Bond”… “James Bond”)… makes the developer’s life easy by giving him/her ample ‘gadgets’ (ready to use classes/libraries/controls) – and even allows third-party gadgets (custom classes/libraries/controls) to be dynamically ‘plugged-in’ & put to use without any dev delays. These days the developers are reading more about theoretical concepts like Design Patterns, Architecture & Algorithms – rather than learning the programming language’s ‘grammar’, or as we techies call it, syntax & parameters. Aah, truly RAD! (RAD stands for Rapid Application Development, & not ‘radical’)
So, is this convincing (or pakau) enough now? (Yeah, & I could drag this crap this long to compose such a long post… Eh!)
I do hear the hard-core Java guys (Madhav [Jaba?], Manju, Sukesh!) squealing: “Hey, Java has always been like Bond’s cars!”! Well, Microsoft ‘innovates’ stuff and *markets* all of it sooo well [bang, bang, bang!] ($ rules :-(), can you blame me that I didn’t compare Java here, instead of .NET?