|
|
Warp wrote:
> Most of what I have seen of these languages, especially the dynamic
> ones, seems to be completely incompatible with DLLs.
I don't follow. Both Java and .NET are basically 100% dynamically
loaded. Javascript and Python and such are also 100% dynamically loaded.
> DLL files in Windows don't exist because Microsoft got some fancy but
> braindead idea and decided to impose it on everyone. .so files in unix
> systems don't exist just because of the fun of it. They have a purpose.
Heh. I'm not sure why you think Microsoft and Unix have different
approaches to this. The only mistake Microsoft made was to have the
version number inside the DLL rather than part of the name of the DLL.
What lead to "DLL Hell" is two people updating the same system DLL with
incompatible bugs. Solved via the DLL Cache and side-by-side installs,
which is basically what UNIX does with .so's. I can't tell you how often
I've had to make a symlink from /usr/lib/libyadda.1.3.7.so to
/usr/lib/libyadda.1.3.8.so to make a compiled program run. So both
approaches have their flaws. :-)
> The amount of programs running at any given time can be counted in
> the hundreds. The OS starts all kinds of processes and services just to
> boot up. Every single one of them uses the exact same libc library, plus
> a bunch of other common libraries. Given that libc is rather large,
I suspect the amount of libc used by any particular program is somewhat
smaller, tho. The new Microsoft "Singularity" OS even inlines bits of
the kernel into your application - stuff like allocating pages of memory
doesn't even leave the subroutine doing it, let alone trap out.
> You wouldn't be able to build and entire OS created with that
> programming language only. You *need* dynamically loadable libraries
> for the system to work.
Check out the Singularity OS. Real live working OS, with one of the
fundamental assumptions being that once you start a process, *nothing*
in the executable can change. No dynamic loading, no plug-ins, etc.
> It just feels that people who advocate fancy languages just ignore
> this fact: They are dependent on an efficient dynamically loadable
> library system (almost always created with C), but they completely
> ignore the fact, and instead diss C as if it was a pestilence. They
> completely fail to explain how the system could work if they did not
> have that pestilent C system below, running the system.
I don't think that's what this lecture is about. It's about making the
run-time (and IDEs for that matter) of dynamic systems as efficient as
the run-time of static systems. For example, how do you inline calls to
a DLL even in a language like C? What if the overhead for calling the
floating point library in libc[1] is greater than the actual time used
to do the floating point ops?
[1] Remember - not all machines have floating point built in. Even the
8086 had the 8087 as optional.
--
Darren New / San Diego, CA, USA (PST)
Post a reply to this message
|
|