A tale of a programming conlanger
|From:||taliesin the storyteller <taliesin@...>|
|Date:||Wednesday, August 18, 1999, 17:00|
Once upon a time there was a conlanger that also liked to program. It was
just before the start of the semester and our conlanger, who incidentally
was a student as well, had some time to kill. Browsing through the voca-
bulary and despairing a little when noticing what letters were dominating,
our conlanger saw the light: "I will program a letter-frequency analyzer!"
And the crowds rejoiced.
The conlanger already had a module for working with the specially format-
ted vocab-files, but realized that invoking it would be severe overkill.
And thus, the conlanger hacked something to extract only the interesting
words from the database. And the conlanger saw that it was good.
The conlanger meditated a little, and got the following insight: simple
frequency-counters seemed not to care for what letter a word started with.
As the conlanger wanted to avoid more than half the vocabulary starting
with the same letter, the analyzer had to count what letters would start a
word separately from of what letters a word would comprise. And the con-
langer spent no more than ten minutes writing a frequency-analyzer that
would count both each time a letter would start a word, and how many times
that letter had been used all in all.
Then the conlanger had an insight: the frequency-analyzer knew not of di-
graphs! And the conlanger blushed and hurriedly added digraph-support.
But wait! The combination of letters that the conlanger decided to be di-
graphs might not be what other potential users considered digraphs! There-
fore, what comprised a digraph should be user-defineable. And the conlanger
sketched a framework for the defining of digraphs. This was the conlanger's
Thinking even more, the conlanger thought it would be good to also be able
to count what was not officially digraphs, and therefore useful for adjust-
ments of an musings on orthography. This was the conlanger's second, most
But the conlanger realized that sometimes, counting only single letters was
just what was needed. The conlanger therefore added user-definable switches
that chose whether to count only single letters, or digraphs, or both at
the same time. This was the conlanger's third error.
For now, the conlanger was flooded with ideas, and feverishly implemented
all of them, using switches to control when to do what. And the if-then-
else structures grew to unimaginable sizes.
Looking over the code while debugging, the conlanger felt the hunger for
spaghetti, and started, frustrated, to sort out the snippets of code that
were used many times over, and defined them as functions. This was the
conlanger's fourth error.
Much later the same coding session, the conlanger finally looked up from
the monitor and saw that someone had painted the big blue room black, and
that the light hurt no more. Looking back on the more and more unmanage-
able heaps of code, the conlanger opened the closest printer and took some
not-yet-used sheets of paper. And the conlanger huddled in the sofa with
the sheets and a pencil and paid tribute to Backus-Naur and its friends the
finite-state machine and the chart-parser.
And the conlanger realized all errors made and wrote to the local CA
(Conlanger's Anonymous) to blow off some steam.