[rescue] Mozilla Firefox

Jochen Kunz jkunz at unixag-kl.fh-kl.de
Thu Apr 22 14:16:21 CDT 2004

On Thu, 22 Apr 2004 13:18:45 -0400
Kevin Loch <kloch at gurunet.net> wrote:

> There is no application that shouldn't be written in plain old C.
No. An application like a web browser needs a lot of things (e.g. libs
to display bitmaps) and becomes quite complex when it handles lots of
GUI stuff and and and... You can do this in plain, old ANSI C89 but you
get a very low abstraction level with C. You don't wane reinvent the
wheel, so you don't implement every detail yourself. You reuse existing
code e.g. libjpeg for displaying bitmaps or libwhatever to handle
peristent configuration data... You get a whole maze of dependencys.
Every lib has its own interface that you have to learn and you can't
"plug together" two libs from different vendors without interface
code... Or you use a toolkit / framework like QT/KDE or GNOME or WXgtk
or... that handles _everything_ for you with a lot of bloat and

And there you are. A lot of bloated C code your application depends on.
As C has a very low abstraction level you loose the oversight. "You
don't see the wood because of all the trees." like we say in Germany.

With a language like smalltalk you get a very high abstraction level.
You can do a lot of work in a few lines of code once you got used to the
system. That way you have to write fewer lines of code. The result is a
rather complex application out of a rather small source code. This is
much easier to maintain, extend and understand. The fewer lines the
fewer bugs you can make / the easier it is to find bugs.

Smalltalk is similar to GNOME in the sense that it provides you with
"everything" and it isolates you from the underlying hardware and OS.
But it provides a suitable tool, i.e. language, to handle all this
complex and abstract functionality. The language has the same high
abstraction level as its environment (== class hierarchy). This doesn't
GNOME as it is based on C. With C you have to switch your brain back and
forth from the high level environment to the low level language.
It simply doesn't fit.

C is a macro assembler and should be used only for tasks where assembler
is appropriate.


Homepage: http://www.unixag-kl.fh-kl.de/~jkunz/

More information about the rescue mailing list