From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- usergrps/uktug/baskervi/5_2/kees.tex | 112 +++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 usergrps/uktug/baskervi/5_2/kees.tex (limited to 'usergrps/uktug/baskervi/5_2/kees.tex') diff --git a/usergrps/uktug/baskervi/5_2/kees.tex b/usergrps/uktug/baskervi/5_2/kees.tex new file mode 100644 index 0000000000..abf23d34f7 --- /dev/null +++ b/usergrps/uktug/baskervi/5_2/kees.tex @@ -0,0 +1,112 @@ +\title{One by one the guests arrive} +\author[Kees van der Laan]{Kees van der Laan\\ +\texttt{cgl@rc.service.rug.nl}} +%\blueabstract A plea is made for writing macros +% in plain \TeX{} sufficiently documented +% to be used with all flavours of \TeX. + +\begin{Article} +This note emerged from a request of Sebastian Rahtz +triggered by my message which I passed along with +my public appraisal for the 100 \AllTeX{} FAQs. + +This plea, this shout, hopes to awake +the notion that we are all better off +if we write macro {\it software\/} in the lowest common +set of all \TeX{} flavours. +At least it might initiate a discussion because I'm realistic +enough that not all involved share my views :-))). + +Of course I know that reality is more complicated, +and that a right balance is the best +we can opt for, so let us go for that. + +\section{Why,} + +would a \LaTeX{} devotee ask? Do you have concrete arguments? +Well, from my own experience I can say that there was a time I +needed to typeset number ranges. +Only the \LaTeX{} style of Donald Arseneau was available. +But, what I needed was a few macros to cooperate with plain, +so I had to write one of my own,\footnote{Who cares? It is estimated + that 80\% or more of the software is continuously rewritten, + that is a fact. My reply is that we can do much better, and we + should if we opt for the best.} +which by the way emerged as a much, much more compact suite. +After all the need has faded away because +I tackled the handling of bibliography references +more fundamentally. The point is that it would have been better +if there had been a kernel independent from the higher +layer which I could have taken over. The interface towards +the higher level, or let us say the user interface, +should better be built on top. +The paradigm is this example is the awareness of CISO, +as analogy of FIFO, meaning Collective In +and Smallest Out, which solves the problem. + +That this approach is beneficial in software engineering +in general is proven by the various numerical software +program libraries, which have the basic material written in the +lowest language feasible, FORTRAN, allowing stability, +optimization of the code, and confidence in use. +Similarly, I remember the PDE (partial differential equation) +packages which use common basic algorithms, but +differ in the jargon at the user level. +I hope that the macro/package/module writers have a feeling for +the savings of the costs which can be gained +over time, by this attitude. +As a volunteer organization one could shrug it off +and say I don't care, costs are not relevant. +Then there is still another nasty guy lurking around the counter +that the (All)\TeX{} community like various sects will +fall apart, will fragment. To continue the tune +\begin{center} +And no one knows where the night is going\\ +And no one knows why the wine is flowing\\ +O love, I need you, I need you, I need you\\ +I need you now\\ +\end{center} +Another example to the point is how to provide for headings? The +answer is that I don't care so much about heading macros because the +common part is so negligible, while it is highly intertwined with the +user interface. But --- there is always a but --- I for one am +strongly in favour of starting from two-part macros, which should +perform the essential functionalities whatever you may wish, and build +all the ornamentation --- i.e., the user-interfaces, eventually with +less functionality --- on top. This approach obeys the {\it + separations of concerns\/} principle, and pays off in maintenance, +if not that it spreads more easily.\footnote{Forgive me this joke, + with \LaTeX{} widespread.} To give you an idea of how I did it +basically in \texttt{blue.tex}: +\begin{verbatim} +\def\beginghead{} +\def\endhead{} +%with as one-part on top +\def\head#{\bgroup\beginhead + \aftergroup\endhead + \afterassignment\ignorewhitespace + \let\dummy= } +%or the tribute to manmac +\def\bluehead#1\par{\beginhead#1\endhead} +\end{verbatim} +The last tribute lost the processing on-the-fly functionality, +but most of the time I don't need that, at the expense of +simpler markup. But the latter is a matter of taste. + +If people like a \LaTeX-flavoured header, just go ahead and add it. +The fundamental functionalities have been provided already, just +a user interface has to be provided as variant. + +\section{Conclusion} + +The point I'm trying to make is that we are all better off +if complex fundamental parts are programmed in `plain', +perhaps after all it has proven to be a fundamental point. +To end Cohen's song: + +\begin{center} +The guests are coming through\\ +The open-hearted many\\ +The broken-hearted few\\ +\end{center} +\end{Article} -- cgit v1.2.3