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.