Windows software technology

This could probably become a book, but my modest and naive goal is to briefly outline some of the big concepts, acronyms, and subsystems that someone doing software development on windows will run into. Much of this gets tangled in windows history. One thing that quickly becomes obvious is that microsoft has bought heavily into C++ and does not provide C API's.
Anyway, here we go.

The Wikipedia is incredibly helpful in getting succint definitions of this alphabet soup of concepts and acronyms.

.NET

.NET is currently microsofts big push. Another acronym that will immediately pop up is CLR (common language runtime). The idea is that whatever language you program in (C++, C#, visual basic, ...) will share the same system library, which in addition provides a CPU independent virtual machine abstraction. The language compilers produce an intermediate language called CIL (or MSIL). This is a sequence of bytecodes which are handed to the CLR. The CLR can be a JIT compiler, or the bytecodes can be compiled to native code for faster execution. This unifies memory management, thread management, and who knows what else.

Applications written using this paradigm are called "managed", which some people see as an ominous pointer to a big-brother future where software is "pay per view", as the runtime meters how and how long software is run. Since the software is not complete without the CLR, this is entirely feasible, and perhaps intended.

MFC

Microsoft Foundation Classes. Although microsoft now favors .NET, this paradigm for development is still highly popular. Again, it is a set of C++ wrappers around the windows API. I have been told that there are both MFC (microsoft foundation classes) and windows foundation classes. This may be bogus, and seems to be. Don't ask me what the difference is at this time.

ATL

Active Template Library. This seems to be an old paradigm which wrapped the windows API in a set of C++ classes to simplify COM programming. COM is something that microsoft introduced back in 1993. "Component Object Model", a related acronym is OLE. It is intended to be a language neutral way of describing objects and using them for distributed computing. It has been replaced, at least in part, by .NET, so hopefully I can just ignore this whole business.

DLL

Dynamic Link Library. This is the microsoft implementation of a shared library. They have the same file format as a .exe file, and may have some extensions other than .dll (such as .ocx for an active X control library).
Have any comments? Questions? Drop me a line!

Adventures in Computing / [email protected]