TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Names do not transmit meaning

51 pointsby dmitover 5 years ago

14 comments

guerrillaover 5 years ago
I like the article but I disagree: Mappable is the correct name in this case and does transmit the meaning which is contained in the &quot;grammatical&quot; expansion. The confusion here is that there are prerequisites to knowing what Mappable means. One should know what map, the more primitive concept, means first. This is how derivational morphemes work. The productive suffixes still remaining in the English language such as &quot;-able&quot; do in fact have meanings, as do verbs such as &quot;map&quot;, and they combine to form new meanings.<p>Furthermore, a bunch of things being named terribly doesn&#x27;t support the thesis that names don&#x27;t transmit meaning. It supports the thesis that a bunch of people failed to communicate and they should have put much more effort into naming things accurately.<p>&gt; Names don’t make them any easier or harder to understand<p>If we renamed every variable in Firefox, for example, with numbers, people would find it more difficult to understand, so this is an absurd thing to say. The reason we use names is because they <i>do</i> convey meaning. That meaning (index into our conceptual map) is what differentiates them from the numerical value of the string of letters which make up their textual representations and makes them so much easier to remember and understand contextually!
评论 #20862021 未加载
评论 #20862347 未加载
评论 #20862232 未加载
评论 #20862242 未加载
评论 #20862000 未加载
评论 #20863663 未加载
评论 #20862137 未加载
评论 #20862874 未加载
ex3xuover 5 years ago
&gt; Names can’t transmit meaning, and so a name shouldn’t be judged on how well it transmits meaning. That doesn’t mean that names can’t be judged at all - there are good and bad aspects to names.<p>Names can&#x27;t transmit the complete meaning of a concept, but they can still transmit a partial or ballpark representation of that concept. In the world of linguistics it&#x27;s easy to see how many names come from the composition of Greek or Latin roots, prefixes and suffixes, or Chinese composition of radicals. I don&#x27;t find it particularly compelling to try to make the case that names cannot transmit ANY meaning at all -- therefore let&#x27;s choose some other arbitrary criteria for judging names.<p>If you think about the concept of affordances&#x2F;signifiers from HCI and interaction design, people do draw upon their past experience when encountering new, unknown concepts, and in the PL space a good name can streamline the process for learning a new concept. It&#x27;s just that Functor has affordances from category theory and, well, most people haven&#x27;t taken enough advanced math to access those affordances before encountering Functor.<p>I think Matt would have been better off calling this article &quot;New Concepts Deserve New Names&quot;, rather than try to say that all names transmit no meaning whatsoever. I think I would agree that it&#x27;s not a huge price to develop new affordances for Functor, Applicative, Monad, Semigroup, and Monoid, in comparison to the potential pitfalls of choosing a name that points to a potentially vague or incorrect meaning. And I personally like the names because although they were poor pointers to meaning, they were good pointers to their mathematical roots, and that makes me curious to learn more category theory.
评论 #20862749 未加载
duffmancdover 5 years ago
I think one of the best counterexamples is The Jabberwocky by Lewis Carroll. If names (and more generally English words) conveyed no meaning on their own and were simply keys in a large fuzzy hash table, the poem would be completely opaque. However, despite the fact that almost every word in it is made-up (new, never a be foreseen keys), I&#x27;d argue that most English speakers, after reading the poem, would have a reasonably common understanding of what &quot;slithy&quot; meant or what a &quot;borogrove&quot; was.<p>If names fit well with what a person already knows, they can aid memory and even impart understanding. If names are poorly chosen they can instead confuse.
评论 #20862261 未加载
phkahlerover 5 years ago
&gt;&gt; I’m about to go on a bikepacking trip ...<p>When I read that, I had never seen the word &quot;bikepacking&quot; before, but I think I&#x27;ve got a decent idea what it means. Words matter. Technical terms exist in a context and are not just arbitrary identifiers. If we called monoids broccoli and other concepts had other random words, programming would be harder. Not everything can get a great name, but we should try.
WillDaSilvaover 5 years ago
Naming things is one of the hardest problems in programming. No matter how much experience I get, I still run into problems where I can&#x27;t think of a decent name for something on a regular basis.
评论 #20855865 未加载
ACow_Adonisover 5 years ago
Names clearly CAN transmit meaning once a context and a vocabulary are a given, to quote Leslie Nielsen, isn&#x27;t that right mr-poopy-pants? Even five year olds know this, and for some reason math- educated-types (look, i did it again!) are especially against combining symbolic representation AND semantic content in the same symbolic medium, even though the lesson from programming is that even though it can be hard, when it&#x27;s done well, it&#x27;s infinitely superior for humans to actually use in practice.<p>In defense of Haskell however, author does have a point. Names for abstractions and anything you cannot touch and hold and easily categorise as a human in everyday life are really hard because current English is almost void of good words that capture or describe these concepts. Map and reduce, as two examples he rightly points out, are no more meaningful to most people than any other name we could give, and the only reason we think they are or might be is when we come from a context that has already learnt them. The same could be said for add, minus, subtraction, division, if they weren&#x27;t essentially universally taught in universal education.<p>Who knows, maybe in the future, when abstract programming becomes widely taught, maybe words and concepts around abstract operations will enter the mainstream language.<p>Although, as a controversial counter-proposal to that (which I am merely putting forth, not necessarily advocating, i admit ignorance in this regard) if it turns out that various levels of abstract thought are not universally learnable by humanity, which is to say, are there thoughts and concepts some&#x2F;most people can&#x27;t think, then such words and vocabulary will always be an &#x27;elitist&#x27; language...<p>&#x2F;random thoughts
k__over 5 years ago
It&#x27;s probably just a quesion of what you are used to.<p>OOP terminology feels more &quot;Software Engineer&quot;-y to me and FP terminology feels more &quot;Math&quot;-y.<p>So OOP feels more at home and FP feels more foreign.<p>On the other hand, in OCaml feels at home and Haskell&#x2F;PureScript feels very theory-heavy.
astanwayover 5 years ago
Saul Kripke built an entire career on what exactly names are, as covered in Naming and Necessity (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Naming_and_Necessity" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Naming_and_Necessity</a>), building on earlier work by Frege (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Sense_and_reference" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Sense_and_reference</a>). OP touches on some concepts they cover - it&#x27;s definitely worth reading these two if you are interested in the philosophy behind names!
tomlockwoodover 5 years ago
One of the funny things about &quot;Monad&quot; is that philosophers will probably come to it with a fairly rich concept of what a monad is, since it has been used since ancient Greece.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Monad_(philosophy)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Monad_(philosophy)</a>
评论 #20865644 未加载
xaedesover 5 years ago
Names are one part of a two-part code. The name transmits meaning to people with enough knowledge of the other part.<p>Liken them to other analogies using other names can help build up the required knowledge
eveningcoffeeover 5 years ago
Functor is a good enough name. Much better than for example quark from particle physics with its colors.<p>Mappable is definitely better in one specific context but contrary to the author I think that Iterable may be even better as it is a more generic name (Iterable can be also Foldable).<p>Or does Mappable mean that you will mutate the state?<p>But why not refer to multiple names? Functor also known as Mappable or Iterable?
评论 #20862926 未加载
mdipover 5 years ago
I really didn&#x27;t have much of an opinion on the subject but after reading this, I&#x27;m finding that the author effectively demonstrated why Functor, Monoid, Monad and most of the terms used in FP are terrible and why it&#x27;s so hard to get people to explore pure functional languages. This is the opposite of what the author intended, but I was unable to find anything other than evidence <i>against</i> the argument the author was trying to make.<p>The author&#x27;s central point and most of the arguments they make, throughout, prove the opposite of what they&#x27;re trying to argue.<p><pre><code> The purpose of a name is a pointer </code></pre> The author then goes on to use this statement as though they had actually said &quot;The only purpose&quot; or &quot;the primary purpose&quot;. Context, here, is <i>really, really important</i>. The purpose of a person&#x27;s name is an attempt to be a unique pointer to a person.<p>From there we twist in to how ineffective the way we name things is <i>at being a unique pointer</i>. But how unique of a pointer does a name have to be? If that was the primary, only or main focus, our language would reflect that. I wouldn&#x27;t tell the kids to &quot;open the door&quot; when I&#x27;m in the bedroom, I&#x27;d tell them to &quot;turn the kwikset lever handle on the master bedroom door&quot;. Or I&#x27;d use the fancy name for the kind of door (it&#x27;s got a french name of some kind) we have in our bedroom.<p>In the first case, I&#x27;d be providing unnecessary information. In the second, my use of a unique name to describe a unique door in our home would land in this articles &quot;nirvana&quot;, but my kids would stand there confused since they would not be familiar with the term.<p><pre><code> Names can&#x27;t transmit *meaning* </code></pre> Of course they can! The author is more-or-less trying to make the argument that &quot;names <i>shouldn&#x27;t</i> convey meaning&quot;, but you don&#x27;t get to control what your readers do with what you provide[0]. In fact, it&#x27;s clear that the <i>main goal</i> that language authors place on <i>naming things</i> is specifically <i>to convey meaning</i>. The author&#x27;s argument now becomes &quot;Names regularly transmit meaning and often the meaning they transmit isn&#x27;t as accurate as I&#x27;d like it to be&quot;.<p>In fact, that an unfamiliar name was used for something where a more common, familiar term was available made understanding what a Functor was much more difficult. Had it been called Mappable, I would have been most of the way there[1]. Upon researching what a &quot;Functor&quot; was, I didn&#x27;t trust any of the first several, simple, short answers because I assumed &quot;if that&#x27;s all it is, they wouldn&#x27;t have used such an obscure name&quot;.<p>So <i>the very use of a name unfamiliar to me</i> conveyed meaning that <i>it must be a much more complicated topic, or they would have used a term that landed on the 80% mark</i>.<p>[0] Newspeak, aside.<p>[1] I didn&#x27;t actually struggle with Functor, but that was the author&#x27;s chosen term to focus on. For me, I think it was Monoid and Monad. I had been using F# for two years before I actually <i>looked up the exact definition</i> of those two terms. Knowing what they meant was, evidently, not important but that they were named something unfamiliar to me didn&#x27;t immediately make me explore what they meant.
james_s_taylerover 5 years ago
Isn&#x27;t a Functor just a morphism from one category to another?
mantapover 5 years ago
In my humble opinion, Haskell uses big words and obscure category theory terminology for simple concepts in order to make Haskell programmers look smart. It&#x27;s actually rather selfish because it reflects poorly on other FP languages, people start to think that <i>all</i> functional programming languages are about applicative functors and kleisli arrows.