What are DLLs exactly? 

Why I like DLLs 

Popular DLLs: 

About this site 

Links 

My Homepage

Why I like DLLs

This will make a lot more sense if you have some vague idea of just what a DLL is.  If you don't, I suggest you read the What are DLLs exactly? section now.

So, at this point, you know that DLLs save memory.  My guess is this was one of the big reasons why the technology was implemented in the first place, but I don't really know. I do know, however, that many people consider this the only advantage of DLLs, and hence think they are an outdated technology. 

As much as I like saving memory, I would have to agree that if this was the only advantage, DLLs would not be worthwhile, due to all the problems they cause in Microsoft OSes (and they do cause problems, a whole lot of them).  I'm going to divide the rest of this page into three sections, why I think DLLs are good, what problems I see, and what I think Microsoft can do to improve the situation.
 

Good DLL

First and foremost, lets consider the space saving issue, which we were so quick to cast aside.  There is really some merit in DLLs saving space. For instance, how much space do you think is taken up by DLLs on your computer? On mine, I calculated 158 megs (find out for yourself by using filefind on *.dll, selecting all of the results, and then viewing the properties of the selection).  That's a lot, especially when you consider how many
applications you have, which use DLLs.  Every DLL in your system which is used by more than one app would have to be duplicated.   And remember, that's not just on your hard disk, but also in RAM.  Of course, some DLLs are used by only one program, but if there were no DLLs in Windows all that code could easily take up 3-5 times as much disk space!  Also, think about downloading software off the net.  Many modern applications use two DLLs from Microsoft, which together take up 600k compressed.  If the applications statically linked those libraries, their downloads would all grow by 600k!  That hurts if you have a 28.8 modem.

There is more than just space at issue here.  Another nice feature (when it works!) of DLLs, is that you can upgrade a DLL without having to change the program that uses the DLL.  In this imperfect and buggy world, that means that when a bug is found in a DLL, all you need to do us update that DLL. Then all the programs that use that DLL will no longer have that problem (well, it can be more complex than that, see below).

Another area where DLLs are important is hardware. While video drivers and the like are not strictly DLLs, they share the same concept: the operating system loads the functions at run time that are appropriate for your hardware.  Imagine a world where your word processor only works with one video card, and when a new one comes out, you are either out of luck, or you have to get a patch that works with the new card.  Wait, no need to imagine, this is the scenario familiar to any person who has played high performance games for DOS.  Wow, wasn't that a big pain? (Of course, it had its good sides too, but this is not the place to discuss them).
 

Bad DLL

I feel there are other small advantages to DLLs, but I think the ones outlined above are enough to give you an idea. Now, lets get our heads out of the sky, and back into the real world of Windows.

DLLs are just big pains, many a time. Remember the part about fixing bugs in the DLLs and thereby fixing the apps that use them? Well, programmers often find bugs in DLLs before the patches are available, and hence code around the problem.  Then when the problem is fixed, the program, which was working fine, now gets different results (in a stick sense, more correct), and now may start failing.  Microsoft Office apps are famous for these sorts of problems.  One version of Word will often only work with one version of a corresponding DLL, etc.  The best solution so far is to just keep the DLLs with the application, with really defeats the whole purpose.  

Another problem is that DLL installation is not at all automated, and may apps will install older, more buggy versions of DLLs, overwriting the newer, better DLL already in the windows/system directory.  Now the app just installed works perfectly (or at least as it did for the developers), but other apps may break.  

And don't forget the orphaned DLL, installed by an app long ago removed.  Since there is no good way to tell if any program on your hardisk uses a DLL, most uninstall apps leave the DLLs they installed on your hardrive.  So in effect, the DLL is now making you lose space, not save it!

Those are big problems.  I've got some ideas to address them, but at the time, I do not feel like I should commit them to paper (file!) yet.  If you have any thoughts, email me.

 
I've been hit! Good thing I enjoy it.