musings-names.tex /size: 17 Kb    last modification: 2021-10-28 13:50
1% language=us runpath=texruns:manuals/musings
2
3\startcomponent musings-names
4
5\environment musings-style
6
7\startchapter[title={What's in a name}]
8
9\startlines \setupalign[flushright]
10Hans Hagen
11Hasselt NL
12May 2019
13\stoplines
14
15\startsection[title=\TEX]
16
17I sometimes wonder how much the fact that English is the language mostly used in
18programming environments influences the way one looks at a program. For instance,
19translating the names of an operating system \quote {windows}, an image
20manipulation program \quote {photoshop} or a text editing program \quote
21{wordperfect} to Dutch makes them sound kind of silly to me. The name can
22influence what you buy or are willing to use. These are examples of commercial
23programs but there are plenty examples of such naming in the open source universe
24too. I write this in my own bad English so that other non|-|English speakers can
25try to do a similar exercise.
26
27So, when I was reading an article about \CPU\ technology called \quote
28{thread|-|ripper} and after a while also saw the usual talk of yet another bunch
29of technologies marked as \quote {stack} and translated that to Dutch it again
30made me feel somewhat puzzled about such names. From there it was a small step to
31wondering about programming languages, and especially the ones I use: \TEX,
32\METAPOST, and \LUA.
33
34One can even wonder to what extent the quality of programming is influenced by
35the names of commands and keywords. A language name \quote {\BASIC} sounds less
36serious than \quote {C}. A meaningless \quote {\LUA} sounds different than \quote
37{\PYTHON}. Does using your native tongue make a difference? In Dutch and German
38words tend to get long. When I look at my French dictionary it is rather thin,
39but we might need accented characters. Words in a language like Polish can differ
40per usage. What if German or Spanish had been chosen as the language for what is
41now the United States? How would we perceive programming and what would look
42natural to us?
43
44\stopsection
45
46\startsection[title=\TEX]
47
48The \TEX\ language comes with a lot of so called primitives built in. Many of
49these relate to concepts in the program. For instance, a movement in horizontal
50or vertical direction that can stretch or shrink depending on what the boundary
51conditions demand, is called \quote {glue}. When discussing this in Dutch the
52word \quote {lijm} can be used and after seeing it a few times it might sound ok.
53We can probably use \quote {elastiek} (\quote {elastic}).
54
55This internal concept is actually represented to the user via the interface name
56\quote {skip}, take: \type {\abovedisplayskip} and \type {\belowdisplayskip}.
57Here the word \quote {display} refers to math that gets vertical space around it
58and is normally typeset in a somewhat larger way compared to \quote {inline}. The
59word \quote {skip} can be translated to \quote {sprong} (translated back we could
60as well get \quote {jump}). But how to translate \quote {display}? An internet
61translation can be \quote {tentoonspreiding} but apart from it being a long word
62it sounds pretty weird for something math. The combined translation of such a
63command will not work well I think so probably complete different words has to be
64made up to describe these quantities. Taco suggested that {\en \typ
65{\bovenuitstallingkortesprong}} might work for \type {\abovedisplayshortskip} but
66luckily no ordinary \TEX\ user will not set such parameters in a document source.
67
68In \CONTEXT\ we use the somewhat typographical term \type {wit} or \type
69{witruimte} for vertical spacing. Some parameters like \type {\baselineskip} can
70be translated directly to the Dutch \type {\regelafstand} which is a proper
71typographical term (\TEX\ has no concept of line height). Okay, it can become
72messy when we translate \type {\lineskip} by \typ {\interlinespace} as that
73could be seen as the baseline skip too (\quote {interlinie} comes to mind). Quite
74a mess. In many cases we probably would not handle the \type {skip} part in
75parameter: \type {leftskip} could become \type {\linkermarge} and \type
76{\parfillskip} can become \typ {\paragraafuitvulling}.
77
78Another concept is that of \quote {penalty}, or in Dutch \type {boete}. It's
79probably harder to get the combinations right, simply because they have no
80typographical meanings, they're more process controllers. I fear that most
81translations would sound pretty weird to me. So, how do they sound to a native
82English speaker? Words like \quote {club} or \quote {widow} can be translated to
83their Dutch gender neutral counterparts \quote {wees} and \quote {weduw} but how
84strange does {\nl \typ {weduwboete}} sound?
85
86The counter variables are easier. When they end on \type {char} that can become
87\type {karakter}. However, translating \type {\escapechar} with \type
88{\ontsnappingskarakter} might look a bit weird, but as that one is used very
89seldom, a weird one doesn't matter much. Operators like \type {\advance} and
90\type {\multiply} can become \type {\verhoog} and \type {\vermenigvuldig} which
91doesn't sound that strange in this context.
92
93There are \quote {rule}s and \quote {box}es. The first one can be translated to
94\quote {lijn} which sounds quite good. But what to do with the second one. We can
95use \quote {blok} (which translates back to \quote {block}) which is good when we
96start stacking things, but also with \quote {doos} which is more literal but
97sounds to me somewhat silly: \typ {\hdoos {whatever}}. I'm not so sure if I would
98have seen that in a book about \TEX, I'd looked further into the language. The
99optional keywords \quote {width} etc. can be translated well into \quote
100{breedte} etc., so no problem there.
101
102There are all kinds of very peculiar aspects that need a translation. For instance
103the (for new users intimidating) primitive \type {\futurelet}. The \quote {future}
104part is no problem as \quote {toekomst} isn't that weird but the \quote {let}
105will for sure become something very long in Dutch, so we end up with {\nl \typ
106{\toekomstigetoekenning}}, but seeing that long one, we can consider {\nl \type
107{kijkvooruit}} as reasonable alternative. It definitely leads to more verbose
108programming.
109
110Expansion is a tricky one. I have no clue what would make nice translations of
111the primitives \type {\noexpand} and \type {\expandafter}. The Dutch \quote
112{uitbreiden} simply is not sounding good here. Taco Hoekwater came up with a good
113alternative \quote {uitvouwen} for \quote {expand} and I like that one because
114we then can let bookmaker (a somewhat dubious term in itself) Willi Egger organize
115a workshop in unfolding (instead of folding).
116
117Talking of \quote {macros} is less a problem because there is no Dutch word for
118it. There are more words with no real translations: \type {\kern} for instance
119probably would need some thinking but there might be a typographical equivalent
120that can be used.
121
122The \ETEX\ and \LUATEX\ extensions introduce new names, like \type {\detokenize},
123\type {\boundary} and \type {\attribute}. The first one is hard to translate
124because again it relates to an internal concept: \type {tokens}. I get the
125feeling that translating each occurrence of \type {token} by \type {teken} kind
126of makes everything look less serious. To strip something from its special
127meaning, which is actually what \type {\detokenize} does can give weird
128translations: {\nl \typ {\onttekenen}} is not really a Dutch word so a complete
129different one has to be found that describes what happens, like \type
130{\ontwaarderen}. On the other hand, \type {\boundary} and \type {\attribute} can
131translate directly into \type {\grens} and \type {\attribuut} where the last one
132sounds mostly okay.
133
134Just to get you thinking: how would you translate \type {\looseness} (\type
135{losheid}, related to linebreaking), \type {\deadcycles} (\type {\zinlozelus}, in
136the perspective of building pages), \type {\pretolerance} (again line break
137related, here we can use something \type {tolerantie}) and \type {\prevgraf}
138(which is actually even in English a weird one but hardly used anyway, so Taco
139likes {\nl \typ {voorloopregels}})? The easy ones are \type {\omit}, \type {\meaning},
140\type {\number}, maybe even \type {\mark}. The for users often difficult to grasp
141\quote {catcode} can be simplified to \quote {code} which is proper Dutch.
142Concepts like \quote {align} translate well to \quote {uitlijnen}. Short ones
143like \type {\wd} could be a problem but any two letter combination can look bad,
144so \type {\br} could do. In the same fashion \type {\def} is ok as it is also the
145start of the Dutch \quote {definitie}. Mathematical terms like \quote {text},
146\quote {script} and \quote {scriptscript} can be confusing: \quote {tekst} will
147do but \quote {schrift} is strange.
148
149Conditionals are not the hardest part: \type {\if} becomes \type {\als}, \type
150{\else} becomes \type {\anders} and \type {\or} is \type {\of}. However, turning
151\type {\ifcase} into \type {\inhetgevaldat} can be over the top. The \type
152{\every...} register variables can also be translated quite well, by using the
153\type {\elk} or \type {\elke} prefix. They are seldom seen at the user level so
154no real problem there.
155
156The \quote {group} related commands are easy as \quote {groep} is a good Dutch
157equivalent. Even \quote {global} operations translate well (\type {globaal}). A
158dubious one is \type {\font} because we can use {\nl \typ {\lettertype}} but it's
159not really a translation. The internet translations tend towards \quote
160{fountain} kind of things.
161
162The concept of \quote {discretionary} again needs a decent typographical
163translation although \type {\hyphenation} can become \type {\afbreking},
164translating \type {\discretionary} needs some imagination. The concept of \quote
165{leaders} is again something that can best be bound to something more
166typographical because \type {\leaders} turned {\nl \typ {\leidinggevende}} is not
167an option nor is \type {\leiders}.
168
169The prefix \type {\un} as used in \type {\unhbox} can become \type {\ont} so that
170we get \type {\ontdoos} but I get the feeling that this one can be source of
171jokes. The more verbose {\nl \typ {\pakdoosuit}} (equivalent to \typ
172{\unpackbox}) would do better. To translate \type {\unvcopy} into the gibberish
173{\nl \typ {\ontdoosdecopie}} is simply ridiculous and {\nl \typ
174{\copieeruitgepaktedoos}} is a bit long. The \type {\lower} and \type {\raise} on
175the other hand translate well to \type {\verlaag} and \type {\verhoog}. Keeping
176\type {\relax} untranslated sounds ok to me, because \type {\ontspan} really
177makes a language silly.
178
179\stopsection
180
181\startsection[title=\METAPOST]
182
183The \TEX\ language is driving a macro system while \LUA\ is a procedural
184language. The \METAPOST\ language sits somewhere in between. It is still
185expanding all along but it looks a bit more like a programming language with its
186loops, assignments, conditionals, expressions and (sort of) functions. As a
187consequence some of what I mentioned in the previous section applies here.
188
189Translation of for instance \type {truecorners} into \type {echtehoeken} can give
190the language a bit less serious image. Words like \type {linejoin}, \type
191{linecap} and \type {miterlimit} relate directly to the \POSTSCRIPT\ language so
192translating them also relates to translated \POSTSCRIPT.
193
194The \type {primary}, \type {secundary} keywords can be nicely translated into
195serious counterparts \type {primaire} and \type {secundaire} which are words that
196are not really of Dutch origin anyway. The \type {precontrol} and \type
197{postcontrol} words relate to concepts but even there the verbose \type
198{controlepuntvoor} and \type {controlepuntachter} could do. However \type {punt}
199as translation for \type {point} can be confusing because we also use that for
200\type {period}. Translating \type {controls} and \type {curl} needs some
201imagination. Words like \type {tension} becoming \type {spanning} is still
202acceptable soundwise. However:
203
204\starttyping
205voor i=1 stap 2 tot 10:
206   .....
207eindvanvoor; % or: eindvoor
208\stoptyping
209
210Kind of interesting is translating \type {if} into \type {als} because \type {fi}
211then becomes \type {sla} which is \quote {lettuce} or, when see as verb, \quote
212{hit}. The \type {true} and \type {false} keywords becoming \type {goed} and
213\type {fout} is no problem.
214
215Turning \type {atleast} into \type {opzijnminst} at first sight looks strange but
216actually I can appreciate that one. And {\nl \typ {tussendoortje}} as translation
217of \type {interim}, I can live with that one too as it sounds funny. Concepts
218like \quote {suffixes} need thinking but {\nl \typ {uitdr(ukking)}} or more
219literal {\nl \typ {expr(essie)}} for {\nl \typ {expr(ession)}} are okay. The {\nl
220\typ {expandafter}}, {\nl \typ {scantokens}} and similar keywords share the
221problem with \TEX\ that they relate to concepts that are hard to translate.
222
223The \type {redpart} and similar keywords could be translated into \type
224{rooddeel} but {\nl \typ {roodkanaal}} (meaning \type {redchannel}) might be
225better or maybe {\nl \typ {rodecomponent}}. As with \TEX\ grouping related
226keywords are no problem.
227
228A \type {pencircle} becomes \type {pencirkel}, \type {odd} becomes \type
229{oneven}, \type {reverse} becomes {\nl \typ {omgekeerd}} (or {\nl \typ
230{andersom}} or {\nl \typ {tegengesteld}}). For \type {length} we use \type
231{lengte}, and so on. All these sound professional enough, just like \quote
232{corner} related keywords becoming \quote {hoek}, although there a clash with
233\quote {angle} is possible. I'm less sure about \type {clipped} becoming {\nl
234\typ {afgeknepen}} or {\nl \typ {begrensd}} but \type {bounded} then needs some
235thinking as these all are more or less the same. The concept of \quote {stroke}
236maps onto \quote {tekenen} or \quote {vegen} but lucky us that one is not really
237used, contrary to \type {draw} that can map onto \type {teken}, while \type
238{fill} and \type {vul} match well too I guess.
239
240The transformations are no problem but I'd use a directive instead: \type
241{rotated} or \type {roteer}, \type {slanted} or \type {schuin}, \type {scaled} or
242\type {schaal}, and \type {transform} or {\nl \typ {transformeer}}. As you can
243see, these have a reasonable word length too.
244
245The concept of a \type {picture} is known in Dutch as \type {plaatje} or \type
246{tekening}: not an easy choice. Using \type {kleur} for \type {color} is no
247problem at all. A coordinate \type {pair} becomes a \type {paar}: close enough
248not to give subjective side effects. The \type {inner} and \type {outer} keywords
249translate well to \type {binnen} and \type {buiten} but in code it might look a
250bit strange.
251
252So, in general, the translated commands are not that weird but still a graphic
253defined in Dutch keywords instead of English to me might look less serious.
254
255\stopsection
256
257\startsection[title=\LUA]
258
259We now arrived at a more traditional programming language. The \LUA\ language
260only has a few keywords. I suppose that it's just a matter of time before one
261gets accustomed to \typ {als ... dan ... anders ... eind} instead of \typ {if ...
262then ... else ... end}. The loops also translate rather well: \typ {zolang ...
263doe}, \typ {herhaal .. totdat}, \typ {voor ... in ... doe ... einde} are all not
264that verbose. Also, with proper syntax highlighting they stand out and become
265abstract words. But because examples for kids are normally in Dutch, using a
266Dutch programming language might give a toy language feeling.
267
268The \type {local} directive is a bit of a problem because it should be \typ
269{lokale variabele} in order to sound ok in a sentence. The \type {goto} should
270become \type {ganaar} which is also two words with no space in between. The \type
271{function} keyword can become \type {functie}. A \type {coroutine} is a challenge
272(also conceptually); we do have \type {routine} but how about the \type {co}
273part?
274
275Because \LUA\ is such a clean language it doesn't really end up bad. In \CCODE\
276there are some more issues due to the abbreviated \type {struct}, \type {int},
277\type {char}, \type {enum} and \type {typedef}. A literal translation of \type
278{void} to \type {leegte} to me sounds a bit strange. What to do with \type
279{unsigned}? Coming up with something (short) Dutch for \type {return} is not easy
280either. Translating \type {switch} into \type {schakelaar} looks like a bad idea
281but after consulting Taco using \type {keuze} came up. The \type {break} then can
282be \type {klaar} which roundtrips to \quote {finished} and \type {default} can be
283\type {anders} which roundtrips to \quote {otherwise} which is indeed what some
284languages provide.. But, there are programming languages out there that have
285plenty keywords and that are more challenging. But as I'm a happy \LUA\ user I
286don't have to worry about them.
287
288\stopsection
289
290\startsection[title=Conclusion]
291
292Looking at a program source in Dutch the general feeling probably will be
293different. A low level bit of \TEX\ is the worst. For \METAPOST\ it's bearable
294and for \LUA\ it is kind of okay. But in all cases, I'm not convinced that it
295would give me the same feeling. The abstraction of the language due to it not
296being my native tongue makes a difference. This problem is not much different
297than what we have with popular music and songs: for non|-|native speakers it's
298basically sounds, but for a native speaker it is more clear when nonsense is
299sung. The same can happen to me with movies, where watching some scandinavian
300series is different from watching a Dutch one. In the last case one picks up
301different nuances, not necessarily for the best. But it can be worse: post
302synchronized (audio) translations can be pretty unbearable and might compare well
303to programs translated to for instance Dutch. So let's not discuss the way
304Germans would deal with this.
305
306\stopsection
307
308\startsection[title=Side notes]
309
310We now see monospaced fonts showing up that provide ligatures for e.g.\ \type
311{<=} and I've seen examples where ligatures kicked in for \type {fi}. One can
312wonder about that but ligatures are definitely something to keep in mind when
313translating.
314
315The \CONTEXT\ macro package is normally used with the English user interface. But
316the design is such that one can provide different ones too; after all it started
317out Dutch. It is beyond the scope of this musing to discuss the problems with
318translating typographical concepts between languages, especially when there are
319no distinctive words. But it can (and has) been done.
320
321\stopsection
322
323\stopchapter
324
325\stopcomponent
326