summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/5_2/kees.tex
diff options
context:
space:
mode:
Diffstat (limited to 'usergrps/uktug/baskervi/5_2/kees.tex')
-rw-r--r--usergrps/uktug/baskervi/5_2/kees.tex112
1 files changed, 112 insertions, 0 deletions
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{<the required functionality>}
+\def\endhead{<the required finishing off>}
+%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}