[linux-l] Slightly off topic: Jagd auf Spam
Jan Krueger
jk at microgalaxy.net
Mi Okt 29 18:49:02 CET 2003
On Monday 27 October 2003 04:22, Peter Ross wrote:
> .. Benutzt Du vielleicht Programmiersprachen, die gewoehnliche
> Programmierer in Bonnies Ranch treiben?
Ich möchte hier einen Vergleich anbringen:
Vor vielen, vielen Millionen Jahren hauste der Mensch in Höhlen oder in aus
Bambus zusammengestekcten und mit Palmwedeln verbunden und verdeckten
Behausungen.
Irgendwanneinmal entdeckte ein Mensch den praktischen Nutzen des Faustkeils
Werkzeug. Womit sich nichts an den Bahausungen änderte. Paar Millionen Jahre
später kam jemand auf die Idee den Fauskeil an einen Stock zu binden und
geboren war
Der Hammer
oder die Axt, kann man nicht so genau einordnen.
Folglich hatte der Mensch ein geeignetes Werkzeug um sich stabilere
Behausungen aus Holzbalken zu bauen, Hütten, Holzhäuser, der Hammer war dabei
sehr nützlich und wurde unentbehrlich, standard sozusagen.
Einige Jahre später baute der Mensch Steinhäuser aus Ziegeln. Auch da war der
Hammer sehr nützlich, schließlich konnte man noch gut Nägel in verputzten
Ziegel-Wände schlagen um Bilder zu befestigen oder so. Auch waren die
Fensterrahmen und Türen aus Holz. Und schließlich wurde der Hammer verwendet
um Möbel zu bauen. Der Hammer eignete sich aber mehr schlecht als recht um
Zement auf die Ziegel aufzubringen oder die Wände zu verputzen.
Noch einige Jahre später schließlich erfand der Mensch Beton und konnte damit
sehr hohe und stabile Häuser bauen. Vorerst noch mit Holzfenstern und Türen,
später mit Plaste-Fenstern und Holz/Metall/Plaste/Glas-Türen. Der Hammer war
für die Errichtung des Hauses nicht mehr wirklich von Bedeutung, wurde aber
immernoch verwendet um Möbel zu bauen und ist nach wie vor in den meisten
Haushalten anzutreffen. Für das Bauen der Beton-Häuser jedoch hat man
geignetere Werkzeuge entwickelt mit denen es gelingt den Beton zu beherrschen
und ungewöhnliche Strukturen zu schaffen.
Zwischendurch hat mal jemand Stahl-Gebäude gebaut, Eiffel-Turm, auch da hat
der Hammer eine untergeordnete Rolle gespielt und es wurden dem Zweck
angepaßte Werkzeuge entwickelt und benutzt.
In heutiger Zeit nun beut man komlizierteste Softwaregebäude mit einem Hammer
und wundert sich dann darüber, daß diese nicht stabil sind oder komische
Effekte aufweisen. Klar, mit einem Hammer ein Loch in eine Betonwand zu
hämmern um ein Regal befestigen zu wollen ist nicht wirklich das selbe wie
eine Schlagbohrmaschine zu verwenden. Das Loch wäre zu groß, unförmig, und es
würde reichlich lange dauern es zu hämmern. So eine Schlagbohrmaschine schaft
ein wohldefiniertes Loch in wenigen Sekunden. Die Verwendung des geeigneten
WErkzeugs ist also für den ERfolg ausschlaggebend.
Wenn also ein Softwareprojet eine bestimmte Komplexitätsstufe überschreitet so
lohnt es sich durchaus gedanken zu machen, ob man sich weiter am Hammer
festhalten möchte oder ob man für die verschiedenen Bereiche jeweils
geeignetes Werkzeug verwendet, zum beispiel eben höhere Programmiersprachen
oder Sprachen in welchen man jenen spezifischen bereich effizienter und damit
fehlerfreier ausdrücken kann.
Wenn also jemand einen hinrecihend komplexen Netz-werk-server in C schreibt
muß er davon ausgehen, daß dieser danach Sicherheitslücken enthält. Oder er
beschränt die komplexität, so wie es djb tut.
Oder er wält ein geeigneteres Werkzeug, das könnte zb. Erlang sein, muß aber
nicht.
Spamfilter, welcher sich mit menschlicher Sprache auseinander setzen müssen
sind vielleicht auch besser in Sprachen zu schreiben in denen man die
menschliche SPrache am ehesten abbilden kann, zb. Lisp oder Prolog.
Oder Desktop-Umgebungen in Sprachen die ein verteiltes community-arbeiten und
bescherrschung der Komplexität unterstützen, zb. Erlang und Lisp in
Kombination oder Rebol
Der Betonhausbauer kannes sich aussuchen ob er zu Hammer oder Bohrmaschine
greift (Schon mal gezählt wie viele Verschiedene Werkzeige es im Baumarkt zu
kaufen gibt?)
Der Programmierer kann es sich auch aussuchen. Entweder er nimmt für komlexe
Sachen C, oder klarer noch wird es mit Assembler, oder höhere Sprachen.
Miot C und Assembler mag er einfache Sprachen haben, muß sich dafür später mit
Wust an Code auseinander setzen, mit Höheren Sprachen mag die Lernkurve etwas
flacher ausfallen (sicherlich sind die verschiedenen Sprachen auch nicht
jedermann gleichermaßen zugänglich, wie bei den menschlichen Sprech-Sprachen)
dafür kann er das komplexe Gebilde später besser beherrschen.
Gruß
Jan
Mehr Informationen über die Mailingliste linux-l