# The Importance of Terminology's Quality

X

#### xahlee

I'd like to introduce a blog post by Stephen Wolfram, on the design
process of Mathematica. In particular, he touches on the importance of
naming of functions.

â€¢ Ten Thousand Hours of Design Reviews (2008 Jan 10) by Stephen
Wolfram
http://blog.wolfram.com/2008/01/10/ten-thousand-hours-of-design-reviews/

The issue is fitting here today, in our discussion of â€œclosureâ€
terminology recently, as well the jargons â€œlisp 1 vs lisp2â€ (multi-
meaning space vs single-meaning space), â€œtail recursionâ€, â€œcurryingâ€,
â€œlambdaâ€, that perennially crop up here and elsewhere in computer
language forums in wild misunderstanding and brouhaha.

The functions in Mathematica, are usually very well-name, in contrast
to most other computing languages. In particular, the naming in
Mathematica, as Stephen Wolfram implied in his blog above, takes the
perspective of naming by capturing the essense, or mathematical
essence, of the keyword in question. (as opposed to, naming it
according to convention, which often came from historical happenings)
When a thing is well-named from the perspective of what it actually
â€œmathematicallyâ€ is, as opposed to historical developments, it avoids
vast amount of potential confusion.

Let me give a few example.

â€¢ â€œlambdaâ€, widely used as a keyword in functional languages, is named
just â€œFunctionâ€ in Mathematica. The â€œlambdaâ€ happend to be called so
in the field of symbolic logic, is due to use of the greek letter
lambda â€œÎ»â€ by happenstance. The word does not convey what it means.
While, the name â€œFunctionâ€, stands for the mathematical concept of
â€œfunctionâ€ as is.

â€¢ Module, Block, in Mathematica is in lisp's various â€œlet*â€. The
lisp's keywords â€œletâ€, is based on the English word â€œletâ€. That word
is one of the English word with multitudes of meanings. If you look up
its definition in a dictionary, you'll see that it means many
disparate things. One of them, as in â€œlet's goâ€, has the meaning of
â€œpermit; to cause to; allowâ€. This meaning is rather vague from a
mathematical sense. Mathematica's choice of Module, Block, is based on
the idea that it builds a self-contained segment of code. (however,
the choice of Block as keyword here isn't perfect, since the word also
has meanings like â€œobstruct; jamâ€)

â€¢ Functions that takes elements out of list are variously named First,
Rest, Last, Extract, Part, Take, Select, Cases, DeleteCases... as
opposed to â€œcarâ€, â€œcdrâ€, â€œfilterâ€, â€œfilterâ€, â€œpopâ€, â€œshiftâ€,
â€œunshiftâ€, in lisps and perl and other langs.

The above are some examples. The thing to note is that, Mathematica's
choices are often such that the word stands for the meaning themselves
in some logical and independent way as much as possible, without
having dependent on a particular computer science field's context or
history. One easy way to confirm this, is taking a keyword and ask a
wide audience, who doesn't know about the language or even unfamiliar
of computer programing, to guess what it means. The wide audience can
be made up of mathematicians, scientists, engineers, programers,
laymen. This general audience, are more likely to guess correctly what
Mathematica's keyword is meant in the language, than the the name used
in other computer languages who's naming choices goes by convention or
context.

(for example, Perl's naming heavily relies on unix culture (grep,
pipe, hash...), while functional lang's namings are typically heavily
based on the field of mathematical logic (e.g. lambda, currying,
closure, monad, ...). Lisp's cons, car, cdr, are based on computer
hardware (this particular naming, caused a major damage to the lisp
language to this day). (Other examples: pop, shift are based on
computer science jargon of â€œstackâ€. Grep is from Global Regular
Expression Print, while Regular Expression is from theoretical
computer science of Automata... The name regex has done major hidden
damage to the computing industry, in the sense that if it have just
called it â€œstring patternsâ€, then a lot explanations, literatures,
confusions, would have been avoided.))

(Note: Keywords or functions in Mathematica are not necessarily always
best named. Nor are there always one absolute choice as best, as there
are many other considerations, such as the force of wide existing
convention, the context where the function are used, brevity,
limitations of English language, different scientific context (e.g.
math, physics, engineering), or even human preferences.)

----------------------------

Many of the issues regarding the importance and effects of
terminology's quality, i've wrote about since about 2000. Here are the
relevant essays:

â€¢ Jargons of Info Tech Industry
http://xahlee.org/UnixResource_dir/writ/jargons.html

â€¢ The Jargon â€œLisp1â€ vs â€œLisp2â€
http://xahlee.org/emacs/lisp1_vs_lisp2.html

â€¢ The Term Curring In Computer Science
http://xahlee.org/UnixResource_dir/writ/currying.html

â€¢ What Is Closure In A Programing Language
http://xahlee.org/UnixResource_dir/writ/closure.html

â€¢ What are OOP's Jargons and Complexities
http://xahlee.org/Periodic_dosage_dir/t2/oop.html

â€¢ Sun Microsystem's abuse of term â€œAPIâ€ and â€œInterfaceâ€
http://xahlee.org/java-a-day/interface.html

â€¢ Math Terminology and Naming of Things
http://xahlee.org/cmaci/notation/math_namings.html

Xah
âˆ‘ http://xahlee.org/

â˜„

B

#### Bruce C. Baker

[...]

(for example, Perl's naming heavily relies on unix culture (grep,
pipe, hash...), ...

"hash" + "pipe"? Ahhhhh, /no wonder/ Perl is the syntactic mishmash it is!
;-)

K

#### Kyle McGivney

• Module, Block, in Mathematica is in lisp's various “let*”. The
lisp's keywords “let”, is based on the English word “let”. That word
is one of the English word with multitudes of meanings. If you look up
its definition in a dictionary, you'll see that it means many
disparate things. One of them, as in “let's go”, has the meaning of
“permit; to cause to; allow”. This meaning is rather vague from a
mathematical sense. Mathematica's choice of Module, Block, is based on
the idea that it builds a self-contained segment of code. (however,
the choice of Block as keyword here isn't perfect, since the word also
has meanings like “obstruct; jam”)

If the purpose of let is to introduce one or more variable bindings,
then I don't see how changing to block or module would improve
anything. I've always found it fairly intuitive to parse (let ((x
5)) ...) to "let x be five". Additionally, replacing let with the
synonyms you provided would approximately yield "permit x to be five"
or "allow x to be five". In my mind you have constructed an argument
in favor of let here (obviously it's better than block, because
nobody's going to come along and be confused about whether let will
"obstruct" or "jam" them

There are many easy targets to poke at in the CL spec. let isn't one
of those.

J

#### Jürgen Exner

+-------------------+ .:\:\:/:/:.
| PLEASE DO NOT | :.:\:\:/:/:.:
| FEED THE TROLLS | :=.' - - '.=:
| | '=(\ 9 9 /)='
| Thank you, | ( (_) )
| Management | /`-vvv-'\
+-------------------+ / \
| | @@@ / /|,,,,,|\ \
| | @@@ /_// /^\ \\_\
@[email protected]@[email protected] | | |/ WW( ( ) )WW
\||||/ | | \| __\,,\ /,,/__
\||/ | | | jgs (______Y______)
/\/\/\/\/\/\/\/\//\/\\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
==============================================================

jue

K

#### kodifik

|   PLEASE DO NOT   |            :.:\:\:/:/:.:
|  FEED THE TROLLS  |           :=.' -   - '.=:

I don't think Xah is trolling here (contrary to his/her habit)
but posing an interesting matter of discussion.

Don't know to which point it fits, but I would like to do some rather
novel comment on operator naming:
As a non native english speaker, the first time I ever encountered the
word "if" was when learning to program. The same can be said of the
other words (for, then, else...) This caused my brain to adscribe them
meanings completely outside the context of everyday language. My point
is that perhaps this is advantageous. So, contrary to tradition (which
considers a desirable goal to write programs as close as possible to
everyday english), I found convenient that programming languages use
words different from the words of my native tongue. I suspect that is
why car and cdr have caught on vs. first end rest.

J

#### j.oke

(e-mail address removed) ha scritto:
[bli bla blo, blu blu bum bum bam bam bim bim bim...]

don't know Y, by your arty-phycial excerptions always seem chinese
me...

-JO

W

#### Waylen Gumbal

Sherman said:
It might be interesting in the abstract, but any such discussion, when
cross-posted to multiple language groups on usenet, will inevitably
devolve into a flamewar as proponents of the various languages argue
about which language better expresses the ideas being talked about.
It's like a law of usenet or something.

If Xah wanted an interesting discussion, he could have posted this to
one language-neutral group such as comp.programming. He doesn't want
that - he wants the multi-group flamefest.

Not everyone follows language-neutral groups (such as comp,programming
as you pointed out), so you actually reach more people by cross posting.
This is what I don't understand - everyone seems to assume that by cross
posting, one intends on start a "flamefest", when in fact most such
"flamefests" are started by those who cannot bring themselves to
skipping over the topic that they so dislike.

J

#### Jürgen Exner

Waylen Gumbal said:
Not everyone follows language-neutral groups (such as comp,programming
as you pointed out), so you actually reach more people by cross posting.

You seem so have failed to grasp the concept of why Usenet is divided
into separate groups in the first place.
This is what I don't understand - everyone seems to assume that by cross
posting, one intends on start a "flamefest", when in fact most such
"flamefests" are started by those who cannot bring themselves to
skipping over the topic that they so dislike.

By your argument there is no need for individual groups in the first
place. We could just as well use a single "HereGoesEverything" and just
skip over those topics that we so dislike.

jue

W

#### Waylen Gumbal

Lew said:
It's not an assumption in Xah Lee's case. He spams newsgroups
irregularly with rehashed essays from years ago, and a number of
people are just tired of him.

I did not know this. One should obviously not do that.
Don't blame the victims for the perpetrator's actions, OK?

I'm not blaming any "victims", but I don't see anyone saying "read this
or else", so why not just skip the thread or toss the OP in your
killfile so you don't see his postings. If others want to discuss his
topics, who are you or I to tell them not to?

J

#### Jürgen Exner

Waylen Gumbal said:
so why not just skip the thread or toss the OP in your
killfile so you don't see his postings.

Done years ago.
If others want to discuss his
topics, who are you or I to tell them not to?

They are very welcome to do so in an appropriate NG for those topics.

jue

W

#### Waylen Gumbal

George said:
The problem is that many initial posts have topics that are misleading
or simplistic. Often an interesting discussion can start on some
point the initial poster never considered or meant to raise.

Is this not a possibility for any topic, whether it's cross-posted or
not?

D

#### David Combs

Not everyone follows language-neutral groups (such as comp,programming
as you pointed out), so you actually reach more people by cross posting.
This is what I don't understand - everyone seems to assume that by cross
posting, one intends on start a "flamefest", when in fact most such
"flamefests" are started by those who cannot bring themselves to
skipping over the topic that they so dislike.

Not one person on the planet agrees with me, I believe, but
it's always seemed to me that an *advantage* to posting to
multiple groups (especially ones generally "interested" in similar
subject matter but NOT subject to huge poster/lurker/answerer overlap,
er, without too many *people* getting multiple copies of the *same*
post) is that it would provide an opportunity of a widely-dispersed
bunch of people to have a *joint* discussion, with comments hopefully
coming in from a *variety* of viewpoints.

David

D

#### David Combs

Lisp is *so* early a language (1960?), preceeded mainly only by Fortran (1957?)?,
and for sure the far-and-away the first as a platform for *so many* concepts
of computer-science, eg lexical vs dynamic ("special") variables, passing
*unnamed* functions as args (could Algol 60 also do something like that,
via something it maybe termed a "thunk"), maybe is still the only one
in which program and data have the same representation -- that it'd
seem logical to use it's terminology in all languages.

From C is the very nice distinction between "formal" and "actual" args.

And from algol-60, own and local -- own sure beats "static"!

And so on.

To me, it's too bad that that hacker-supreme (and certified genius)
Larry W. likes to make up his own terminology for Perl. Sure makes
for a lot of otherwise-unnecessary pages in the various Perl texts,
as well as posts here.

Of course, a whole lot better his terminology than no language at all!

David

D

#### David Combs

(This one is also cross-posted, to apologize to one and all
about my just-prior followup.)

I stupidly didn't remember that whatever followup I made
would also get crossposted until *after* I had kneejerked
hit "s" (send) before I noticed the warning (Pnews?) on
just how many groups it would be posted to.

A suggestion for Pthat as soon as you give the
F (followup for trn), ie as soon as Pnews starts-up
on this followup, before you've typed in anything
or given it a filename to include, that AT THAT TIME
it remind you that it'll be crossposted to the
following 25 newsgroups:
1: foo
2: comp.lang.perl.misc
3: other-group
4: ...

, so way before you've said anything, you can
abort it if you want to.

SORRY!

David

G

#### Gordon Etly

Lew said:
Please exclude the Java newsgroups from this discussion.

Why? Do you speak for everyone in that, this, or other groups?

S

#### Stephan Bour

Lew wrote:
} John Thingstad wrote:
} > Perl is solidly based in the UNIX world on awk, sed, bash and C.
} > I don't like the style, but many do.
}
} Please exclude the Java newsgroups from this discussion.

Did it ever occur to you that you don't speak for entire news groups?

Stephan.

A

#### Arne Vajhøj

Stephan said:
Lew wrote:
} John Thingstad wrote:
} > Perl is solidly based in the UNIX world on awk, sed, bash and C.
} > I don't like the style, but many do.
}
} Please exclude the Java newsgroups from this discussion.

Did it ever occur to you that you don't speak for entire news groups?

Did it occur to you that there are nothing about Java in the above ?

Arne

S

#### szr

Arne said:
Did it occur to you that there are nothing about Java in the above ?

Looking at the original post, it doesn't appear to be about any specific
language.

S

#### szr

Peter said:
Indeed. That suggests it's probably off-topic in most, if not all,
of the newsgroups to which it was posted, inasmuch as they exist for
topics specific to a given programming language.

Perhaps - comp.programming might of been a better place, but not all
people who follow groups for specific languages follow a general group
like that - but let me ask you something. What is it you really have
against discussing topics with people of neighboring groups? Keep in
mind you don't have to read anything you do not want to read. [1]
Regardless, unless you are actually reading this thread from the
c.l.j.p newsgroup, I'm not sure I see the point in questioning
someone who _is_ about whether the thread belongs there or not.

I would rather have the OP comment about that, as he started the thread.
But what gets me is why you are against that specific group being
included but not others? What is so special about the Java group and why
are you so sure people there don't want to read this thread? [1] What
right do you or I or anyone have to make decisions for everyone in a
news group? Isn't this why most news readers allow one to block a
And if it's a vote you want, mark me down as the third person reading
c.l.j.p that doesn't feel this thread belongs. I don't know whether
Lew speaks for the entire newsgroup, but based on comments so far,
it's pretty clear that there unanimous agreement among those who have
expressed an opinion.

Ok, so, perhaps 3 people out of what might be several hundred, if not
thousand (there is no way to really know, but there are certainly a lot
of people who read that group, and as with any group, there are far more
readers than there are people posting, so, again, just because you or
two other people or so don't want to read a topic or dislike it, you
feel you can decide for EVERYONE they mustn't read it? Again, this is
on others; let them decide for themselves. [1]

[1] I do not mean this topic specifically, but in general, if one
dislikes a thread, they are free to ignore it. I find it rather
inconsiderate to attempt to force a decision for everyone, when
one has the ability to simply ignore the thread entirely.

J

#### Jürgen Exner

szr said:
I would rather have the OP comment about that, as he started the thread.

The OP is a very well-known troll who has the habit of spitting out a
borderline OT article to a bunch of loosly related NGs ever so often and
then sits back and enjoys the complaints and counter-complaints of the
regulars. He doesn't provide anything useful in any of the groups he
targets (at least AFAIK) and he doesn't participate in the resulting
mayhem himself, either.
He will only go away if everyone just ignores him.

With this in mind another reminder:

+-------------------+ .:\:\:/:/:.
| PLEASE DO NOT | :.:\:\:/:/:.:
| FEED THE TROLLS | :=.' - - '.=:
| | '=(\ 9 9 /)='
| Thank you, | ( (_) )
| Management | /`-vvv-'\
+-------------------+ / \
| | @@@ / /|,,,,,|\ \
| | @@@ /_// /^\ \\_\
@[email protected]@[email protected] | | |/ WW( ( ) )WW
\||||/ | | \| __\,,\ /,,/__
\||/ | | | jgs (______Y______)
/\/\/\/\/\/\/\/\//\/\\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
==============================================================