Popular DLLs: About this site |
Why I like DLLsThis 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 DLLFirst 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
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 DLLI 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. |