C und patch

Wolfram Schwenzer W.Schwenzer at nikocity.de
Die Nov 19 13:14:05 CET 2002


Auch wenn Christoph schreibt:

 >
 > umzug nach linux-users-discussion at Uni-Koeln.de , ja?
 >
 > \\// christoph
 >

moechte ich der OT Diskussion doch eine neue Wendung geben, die von der 
"Welche-Sprache-ist-besser"-Diskussion auf eine (hoffentlich 
fruchtbarere) Meta-Ebene fuehrt und die vielleicht die anderen in der 
Mailgruppe auch interessiert:

Christoph Kliemt wrote:
> "Jan T. Kim" <kim at inb.uni-luebeck.de> writes:
> 

>>Es ist mir (wie vielen anderen) relativ egal, ob eine Sprache auf den
>>ersten Blick "leserlich" erscheint, d.h. inwieweit die Semantik der
>>Symbole in der fraglichen Sprache irgendwie mit einer alltaeglichen
>>Semantik korrespondiert (Beispiel Ausrufezeichen).
> 
> 
> Mir nicht... Halbes Jahr mit der Sprache nicht mehr gearbeitet, und dann
> muß es schnell gehen...
> 
> 
Kann ich nur zustimmen und daher habe ich mir angewoehnt, mit einem Tool zu
arbeiten, dass von einem Veteranen (D.E.Knuth) der "free software" erfunden
und von Norman Ramsey weiterentwickelt wurde: NoWEB ist eine "literate 
programming"-Umgebung, die den gesamten Code bei "Erzeugung" bereits in 
seine Dokumentation "einbettet" und ueber zwei Filter daraus Doku 
("Weaving") und Programmcode selbst ("Tangling") erzeugt, also bei etwas 
Sorgfalt auch die raffiniertesten Regexps dem Autor und der Nachwelt 
noch nach Jahren verständlich macht (weil sie entsprechend dokumentiert 
wurden). Ich verwende das Tool seit ca. 6 Jahren mit wachsendem Erfolg & 
Begeisterung, wenn auch mitunter leicht zaehneknirschend, wenn es mich 
bei 'quick'n dirty' Programmierphasen "ausbremst", in denen ich das 
Schreiben der Doku verwuensche (drei Monate spaeter bin ich mir dann 
selbst wieder dankbar dafuer und drei Jahre spaeter richtig "happy").
Mit TOC und Index und Abbildungen versehe generiere ich damit 
.pdf-Dateien, die vollstaendig verlinkt sind, d.h. ich kann im TOC/Index 
auf ein Stichwort klicken und -Schwupp! - habe ich den zugehoerigen 
Codeteil vor Augen, an dessen Ende auch steht, wo er sonst noch genutzt 
wird. Ist auch 'ne feine Sache, wenn man jemand anders zur Mitarbeit 
bewegen oder ihm/ihr auch nur erklaeren will, was man wo, wie und warum 
gemacht hat ....

>>Dies Aussage kann man sogar umkehren: Wer sich beim Programmieren in einer
>>Sprache irgendwelcher Eselsbruecken bedienen muss, beherrscht sie noch
>>nicht wirklich.
> 
> 
> *Gnah* ... Programmtexte sollten *lesbar* sein, unabhängig von der Sprache.
> 
> (global-set-key 'iso-left-tab 'dabbrev-expand) in .emacs wirkt Wunder.
> 
Auch dem ist nur zuzustimmen. Es ist m.E. ein Zeichen geistiger Unreife, 
sich
eines Programmierstils zu ruehmen, der fuer "Aussenstehende" moeglichst
Unverstaendliches produziert so als gehoere man einer pubertaeren Gang 
an, die
sich "magischer Kuerzel & Zinken" bedient (manche Sprachen beguenstigen 
diesen
Hang leider mehr als andere). Donald E. Knuth, Larry Wall, John Ousterhout
oder Guido van Rossum - keiner waere stolz darauf, schlecht 
dokumentierten &
unverstaendlichen Code zu schreiben, wie er (leider allzu) haeufig 
anzutreffen
ist.
Eleganz & Effizienz ist nur EIN Merkmal guten Programmierens, 
Verstaendlichkeit und Wiederverwendbarkeit ein m.E. nicht minder 
wichtiges. Deshalb ist es auch nicht egal, ob die Kids BASIC oder LOGO 
(ein "kindernaher" Dialekt von LISP) lernen und ob ich in VBASIC oder Tk
programmiere. Und es ist auch wichtig, ob andere meine Programme 
verstehen, wenn ich mit ihnen kooperieren will, auch wenn ich mit 
"literate programming" (s. oben) nur ein Drittel des Codes in gleicher 
Zeit schreibe wie jemand, der seine Programme nicht oder nur 
unzureichend dokumentiert. Die "comprehensive archives" (wie CPAN , CTAN 
u.a.) sind ein echter Fortschritt; noch mehr Nutzen koennten wir daraus 
ziehen, wenn noch mehr ihrerer Sourcen als WEB-Dokumente vorhanden waeren.

     Wolfram Schwenzer

P.S. Wer Knuth's WEB fuer "outdated" haelt (einige Bewertungen von LISP, 
FORTRAN etc. in der Diskussion drueckten eine gewisse Geringschaetzung
"historischer" Sprachen aus, in denen ich selbst immer noch Brauchbares 
verfertigt habe ;-)...) der sei auf xmLP von Tony Coates verwiesen, das 
die Strukturen des "literate programming" in xml zu realisieren versucht 
und daher wohl als "zeitgemaess" gelten darf.