# Five Dollar Programming Words

**URL:** <https://discourse.codinghorror.com/t/five-dollar-programming-words/200>\
**Category:** blog\
**Created:** [March 19, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200 "2009-03-19T00:00:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [March 19, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/1 "2009-03-19T00:00:00Z")

</div>

I've been a longtime [fan of Eric Lippert's blog](http://www.codinghorror.com/blog/archives/000750.html). And one of my favorite (albeit short-lived) post series was his **Five Dollar Words for Programmers**. Although I've sometimes been [accused of being too wordy](http://gandolf.homelinux.org/blog/index.php?id=52), I find that learning the right word to describe something you're doing is a small step on the road towards [understanding and eventual mastery](http://www.codinghorror.com/blog/archives/001236.html).

* * *
This is a companion discussion topic for the original blog entry at: [http://www.codinghorror.com/blog/2009/03/five-dollar-programming-words.html](http://www.codinghorror.com/blog/2009/03/five-dollar-programming-words.html)

---

<div class="post-metadata">

**Author:** ![Mike\_Duncan](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/m/e19adc/32.png) [@Mike\_Duncan](https://discourse.codinghorror.com/u/Mike_Duncan)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/2 "2009-03-20T00:00:00Z")

</div>

Well, it’s a two word phrase but you have to love ‘Cyclomatic complexity’.

---

<div class="post-metadata">

**Author:** ![RickB](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/r/9e8a1a/32.png) [@RickB](https://discourse.codinghorror.com/u/RickB)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/3 "2009-03-20T00:00:00Z")

</div>

Oh yeah, transitive closure. Understanding that one is important. Luckily it’s pretty simple, and easily explained with a quick whiteboard diagram. It comes from graph theory which many may dismiss as a froofy subject (academic astronauts, anyone?), but you’d be amazed at how applicable it is.

As a simple example, imagine you are trying to remove unused code from your application. Conceptually, all you need to do is compute the transitive closure of functions called starting at main(), and remove everything that is NOT in that set. FxCop does this to generate warnings about unused code, and C++ linkers do as well for removing code from compilation units (i.o.w., if x.obj has 10 functions, but when app.exe links to x.obj there are 3 that app.exe doesn’t use, then those 3 functions are discarded from the final executable).

Garbage collection is also based on this. Compute the transitive closures of reachable objects from all your roots (e.g. local variables at the top of every thread’s callstack, and from all static fields), and anything that isn’t in that set is eligible for collection. Those objects are not reachable.

---

<div class="post-metadata">

**Author:** ![EricL](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/e/4da419/32.png) [@EricL](https://discourse.codinghorror.com/u/EricL)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/4 "2009-03-20T00:00:00Z")

</div>

Thanks for the shout-out once again Jeff.

A favourite five-dollar word not mentioned already that is slightly relevant to programmers is boustrophedonic. Most dot-matrix and inkjet printers are boustrophedonic – that is, they alternate going left-to-right and right-to-left.

---

<div class="post-metadata">

**Author:** ![Paco](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/p/a6a055/32.png) [@Paco](https://discourse.codinghorror.com/u/Paco)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/5 "2009-03-20T00:00:00Z")

</div>

Chaos aka Cohesion aka High Granularity

---

<div class="post-metadata">

**Author:** ![Sam\_Schutte](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/s/779978/32.png) [@Sam\_Schutte](https://discourse.codinghorror.com/u/Sam_Schutte)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/6 "2009-03-20T00:00:00Z")

</div>

I think Cyclomatic is a pretty good $5 word. As in Cyclomatic Complexity.

---

<div class="post-metadata">

**Author:** ![Sundeep](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/s/7feea3/32.png) [@Sundeep](https://discourse.codinghorror.com/u/Sundeep)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/7 "2009-03-20T00:00:00Z")

</div>

Concantenate.

[http://www.google.co.uk/search?hl=enei=exPESdmNE8WO-Abxk7mGBwsa=Xoi=spellresnum=0ct=resultcd=1q=define%3A+concatenatespell=1](http://www.google.co.uk/search?hl=enei=exPESdmNE8WO-Abxk7mGBwsa=Xoi=spellresnum=0ct=resultcd=1q=define%3A+concatenatespell=1)

---

<div class="post-metadata">

**Author:** ![Ian](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/i/bb73d2/32.png) [@Ian](https://discourse.codinghorror.com/u/Ian)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/8 "2009-03-20T00:00:00Z")

</div>

Funky and hokey, two very important terms that have been overlooked.

---

<div class="post-metadata">

**Author:** ![mike10](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/m/b782af/32.png) [@mike10](https://discourse.codinghorror.com/u/mike10)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/9 "2009-03-20T00:00:00Z")

</div>

thunk  
the first time i saw this, i thought my c++ compiler was yanking my chain. But i had done something terribly wrong with virtual functions and i learned a lot that day about multiple inheritance

also: authenticate and authorize. seems trivial now but back then i didn’t understand that there was a difference.

---

<div class="post-metadata">

**Author:** ![Schmoo](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/s/f04885/32.png) [@Schmoo](https://discourse.codinghorror.com/u/Schmoo)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/10 "2009-03-20T00:00:00Z")

</div>

Mine was ‘normalise’ (a long time ago, thanks!). The light that went on at that moment lit up the entire world of databases-as-something-other-than-a-big-file.

---

<div class="post-metadata">

**Author:** ![Thomas](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/t/e36b37/32.png) [@Thomas](https://discourse.codinghorror.com/u/Thomas)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/11 "2009-03-20T00:00:00Z")

</div>

I don’t think the second two are $5 words, they’re pretty common. Idempotent is a great one, though. Another one I like is reify: to make something abstract concrete or real. So in programming, you might have something abstract like the intermediate state of a search algorithm. When you make an object that perfectly encapsulates that state, you’ve reified it.

---

<div class="post-metadata">

**Author:** ![Phil\_H](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/p/5f9b8f/32.png) [@Phil\_H](https://discourse.codinghorror.com/u/Phil_H)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/12 "2009-03-20T00:00:00Z")

</div>

Normalisation would be one for me. It expresses the Don’t Repeat Yourself ethic in terms of minimising the number of copies of data, and instead articulating relationships between the data.

---

<div class="post-metadata">

**Author:** ![Oorang](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/o/ecae2f/32.png) [@Oorang](https://discourse.codinghorror.com/u/Oorang)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/13 "2009-03-20T00:00:00Z")

</div>

How about instantiate :)

---

<div class="post-metadata">

**Author:** ![chetan](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/c/f05b48/32.png) [@chetan](https://discourse.codinghorror.com/u/chetan)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/14 "2009-03-20T00:00:00Z")

</div>

So these are five dollar words…now you know..

---

<div class="post-metadata">

**Author:** ![SergeO](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/s/b3f665/32.png) [@SergeO](https://discourse.codinghorror.com/u/SergeO)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/15 "2009-03-20T00:00:00Z")

</div>

Mine is Orthogonality, i first read about it in the Pragmatic Programmer book ;)

I do love things connected to maths!

---

<div class="post-metadata">

**Author:** ![taelor](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/t/2bfe46/32.png) [@taelor](https://discourse.codinghorror.com/u/taelor)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/16 "2009-03-20T00:00:00Z")

</div>

meta

---

<div class="post-metadata">

**Author:** ![Nikos](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/n/34f0e0/32.png) [@Nikos](https://discourse.codinghorror.com/u/Nikos)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/17 "2009-03-20T00:00:00Z")

</div>

Naming

[http://en.wikibooks.org/wiki/Naming/How\_to\_name\_a\_concept](http://en.wikibooks.org/wiki/Naming/How_to_name_a_concept)

---

<div class="post-metadata">

**Author:** ![o\_s18](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/o/3e96dc/32.png) [@o\_s18](https://discourse.codinghorror.com/u/o_s18)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/18 "2009-03-20T00:00:00Z")

</div>

My big one was Canonicalization. Which simply means removing duplication and creating one unique representation of an object or piece of data.

[http://en.wikipedia.org/wiki/Canonicalization](http://en.wikipedia.org/wiki/Canonicalization)

---

<div class="post-metadata">

**Author:** ![bg16](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/b/8e7dd6/32.png) [@bg16](https://discourse.codinghorror.com/u/bg16)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/19 "2009-03-20T00:00:00Z")

</div>

Canonical - the canonical method recognized, authoritative, authorized, accepted, sanctioned, approved, established, orthodox. antonym unorthodox.

the only aha moment i had was when I found the definition for what it meant - in the context its always used in: examples of doing things the right way.

---

<div class="post-metadata">

**Author:** ![NormanR](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/n/9d8465/32.png) [@NormanR](https://discourse.codinghorror.com/u/NormanR)\
**Post date:** [March 20, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/five-dollar-programming-words/200/20 "2009-03-20T00:00:00Z")

</div>

Polymorphism! Especially parametric polymorphism—a fertile source of reuse.

[Next page](https://discourse.codinghorror.com/t/five-dollar-programming-words/200.md?page=2)
