[Tustep-Liste] Endtags richtig zuordnen und aufloesen

Michael Trauth trauth at uni-trier.de
Di Jun 14 19:11:06 CEST 2005


Liebe Freunde, Kollegen, TUSTEPler,

es ist mir immer eine Freude, wenn Bewegung auf
die Liste kommt. Die Anfrage von Herrn Brunschoen
haette ja mit *einer* funktionsfaehigen KO-Loesung
ihr Bewenden haben koennen. Aber es gab so viele
Fragen, Tips, was man besser und anders machen
sollte/koennte, Loesungsvorschlaege und dazu wie-
derum so lebhafte Rueckmeldungen (leider wieder
etliche an mich persoenlich, nicht ueber die Liste),
dass ich denn doch noch etwas dazu sagen moechte.

Zuallererst vielen Dank an Herrn Schaelkle fuer
seine Makroloesung und an Herrn Derkits fuer die
Ruby-Loesung! Beide machen, wie ich finde, enorm
viel Appetit auf mehr davon.

NB: Da ich von Ruby nichts verstehe, wuerde ich
mich freuen, wenn bei Hilferufen an die Liste ge-
legentlich so exemplarisch wie geschehen anhand
von Musterloesungen gezeigt wuerde, wie nuetzlich
(und einfach zu bedienen) dieses Werkzeug sein
kann. Die Bereitschaft, sich drauf einzulassen,
waechst halt doch sehr mit der konkreten Anschau-
ung - sowohl eines Problems, mit dem jeder etwas
anfangen kann, als auch einer kleinen, schnellen
und eleganten Loesung dafuer. Eine Frage en pas-
sant an die Liste: Gibt es ausser Herrn Derkits
noch andere TUSTEP-Anwender, die Ruby regelmaessig
einsetzen und die von vielen positiven einschlae-
gigen Erfahrungen berichten koennen?

Meine eigene Loesung, die ich hier nicht wieder-
holen will, hat ein grundsaetzliches Bedenken:
Wer sie verstehen will, kommt, wie auch Herr Brun-
schoen bereits zum Ausdruck gebracht hat, ohne gu-
te KO-Kenntnisse mit den fuenf(!) Durchgaengen und
einer durchaus beachtlichen Sprungtabelle nicht
klar. Und ja, zugegeben, sie hat fuer KO-Aussen-
seiter sogar etwas Abschreckendes. An spontaner
Verstaendlichkeit sind die Loesungen von Herrn
Schaelkle und Herrn Derkits fraglos weit ueber-
legen. Folgerichtig kam selbst von KO-Kennern die
Frage: Das muss doch einfacher gehen?!
   Vorweg die Antwort: Es geht einfacher. Um in
einem in TUSTEP-Kreisen gelaeufigen Bild zu blei-
ben: In jeden vollen Koffer passt noch ein Taschen-
tuch - und in diesem Fall sind's gleich ziemlich
viele Taschentuecher. Ich hatte, weil's mir nur
um eine rasche Hilfestellung zu tun war, nicht
viel Muehe investiert, habe mir nur ein erstes
Prozedere ueberlegt und die Loesung rasch hinge-
schrieben.
   Wie Gottfried Reeg bereits erwaehnt hat, wurde
die Aufloesung geschachtelter Klammern schon ein-
mal (auf eine Frage von Peter Stahl hin) auf der
Liste diskutiert. In Anlehnung an eine der damals
besprochenen Loesungen hat Herr Bartz die bisher
kleinste, sehr pragmatische, KO-Loesung vorge-
schlagen:
-------------------------------------------------
#ko,Q,Z,,+,*
>nb       <%><<<>>
<nz       |<%||<<a|<</a>>|
aa        |<<p>>|
zf+       |<<a<>>[nb]>><><[nz]<</a>>|
xx        |<<a<>>[nb]>><><[nz]<</a>>|<<!>=(2-7)>=03>>|
spn        3
sp2       11
xxx       |<<!|<<|
*eof
--------------------------------------------------
Dieses Prograemmchen ist nur sieben Zeilen gross,
und es tut sicher in der Mehrzahl aller einschlae-
gigen Problemfaelle genau das, was es soll. Es hat
nur eine kleine, moeglicherweise aber doch erheb-
liche prinzipielle Schwaeche: Alle Tags, um die es
geht, *muessen innerhalb* eines Abschnitts (der mit
dem AA-Parameter definiert wird und maximal eine
Million Zeichen = 1 MB umfassen kann) geoeffnet
und geschlossen werden.

Angespornt von der Lebhaftigkeit der Rueckmel-
dunge, die mich erreichten, habe ich darum etli-
che Versuche gestartet, um sowohl die Ver- wie
auch die Umstaendlichkeit der KO-Loesung zu ver-
bessern. Das erste Resultat war folgendes:
-------------------------------------------------
#ko,Q,Z,,+,*
<nz       |<%||<<a|<</a|
zf+   1   |<|><<><[nz]<<a|
ak1   1   |<<a|
ek1   1   |>>|
xx    2   |<|><<><[nz]<<a|>=01<<!a|
mtd   2   1
zf+   3   |<</a|
xx    3   |<</<<|<<!/|
mth   3   3
mta   3   |<<|
ete   4   |<</<|a|
spn       31  8  3  8
spj       12  8 39  8
sp2       27 24 44 32
sp4        8 11  8 10
sp9        8  8 46  8
xxx       |<<!|<<|
*eof
--------------------------------------------------
Mit dieser Loesung waren (bei exakt gleicher Lei-
stung) gegenueber der ersten Loesung immerhin sie-
ben Programmzeilen *und* ein ganzer Durchgang ein-
gespart worden. Das war schon mal nicht schlecht,
aber mit ein bisschen Nachdenken ueber den Einsatz
von KO-Neuerungen, die im Handbuch noch nicht be-
schrieben und in der aktuellen TUSTEP-Version auch
noch nicht enthalten sind, wurden noch ein paar
weitere Einsparungen erzielt:
--------------------------------------------------
#ko,Q,Z,,+,*
<nz       |<%||<<a|<</a|
zf+   1   |<|><<><[nz]<<a|
xx    1   |<|><<><[nz]<<a<><%>>><<><%|<<!/a>=04>>|
xx    2   |<|><<><[nz]<<a|>=01<<!a|
mtd   2   1
zf+   3   |<</a|
mth   3   3
mta   3   |<<|
mtp   3   |<</a>>|
spn       31  8  3
spj       12  8 39
sp2       27 14 14
sp9        8  8 32
xxx       |<<!|<<|
*eof
--------------------------------------------------
Das ist noch einmal ein Durchgang und weitere drei
Zeilen weniger. Wer aber glaubt, dass jetzt endlich
das Maximum an Einsparmassnahmen erreicht ist, der
taeuscht sich. Herr Schaelkle hat den magersten Vo-
gel abgeschossen mit der folgenden Version:
--------------------------------------------------
#ko,Q,Z,,+,*
zfs       |<<a|<</a|
vsp         17  19
rr        if (s8.eq.0) go to 3
xxb       |<<a|<<!a|
erz       1
mtd       1
xmt       |<%||<<a<><%>>><<><%|<<!/a>=03>>|
mth       3
mta       |<<|
mtp       |<</a>>|
sp2       11
sp7       12
xxx       |<<!|<<|
*eof
-------------------------------------------------
Das spart noch einmal sage und schreibe zwei
Durchgaenge *und* eine weitere Programmzeile
ein! Aber ihre Vorzuege bestehen bei weitem
nicht nur in der Fastenkur, die dem Programm-
code auferlegt wurde, sondern auch und vor allem
in der m.E. *wesentlich* verbesserten Verstaend-
lichkeit. Sie (und meine kindliche Freude dar-
ueber) ist letzten Endes auch der Grund dafuer,
dass ich sie hier publik mache.
   Freilich muessten dafuer die (bisher nicht
beschriebenen) Parameter ZFS, VSP, XMT, MTA und
MTP noch erlaeutert werden - am besten unter
Verwendung des hier vorgestellten Prograemmchens.
Interessiert sich jemand dafuer? Bei entsprechen-
der Rueckmeldung (das ist die condicio sine qua
non ;o)) liefere ich das gerne nach.
   Die Kenntnis der Parameter sind's aber nicht
allein, man braucht (natuerlich) noch die Pro-
grammversion, die damit umzugehen versteht. Nor-
malerweise sind die Tuebinger ganz zu Recht sehr
zurueckhaltend mit der Interimsverbreitung von
Neuerungen - in diesem besonderen Fall jedoch
koennen Interessenten eine entsprechende Test-
version von Herrn Schaelkle erhalten.

Viele Gruesse reihum von

Michael Trauth



---------------------------------------------------------------
Dr. Michael Trauth                  e-mail: trauth at uni-trier.de
Rechenzentrum                       office: Tel. 0651-201-3413
der Universitaet                            Fax  0651-201-3921
Universitaetsring                secretary: Tel. 0651-201-3417
D-54286 Trier
---------------------------------------------------------------



Mehr Informationen über die Mailingliste Tustep-Liste