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]