<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Fabulous Adventures In Coding : Big Words</title><link>http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx</link><description>Tags: Big Words</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Five-Dollar Words For Programmers, Part Five: Reification</title><link>http://blogs.msdn.com/ericlippert/archive/2009/04/17/five-dollar-words-for-programmers-part-five-reification.aspx</link><pubDate>Fri, 17 Apr 2009 17:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9540626</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9540626.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9540626</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;Today, another in &lt;A href="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx"&gt;my series on awesomely arcane words for programmers&lt;/A&gt;. &lt;STRONG&gt;Reification&lt;/STRONG&gt; is the process of turning something that is normally thought of as an &lt;STRONG&gt;abstract concept&lt;/STRONG&gt; into something more &lt;STRONG&gt;concrete&lt;/STRONG&gt;. It’s from the Latin &lt;EM&gt;res facere&lt;/EM&gt;, “thing making”.&lt;/P&gt;
&lt;P&gt;&lt;A title="The Imperial State Crown" href="http://en.wikipedia.org/wiki/File:Str%C3%B6hl-Regentenkronen-Fig._11.png" mce_href="http://en.wikipedia.org/wiki/File:Str%C3%B6hl-Regentenkronen-Fig._11.png"&gt;&lt;IMG title=Crown style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; MARGIN: 0px 5px 0px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=240 alt=Crown src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/FiveDollarWordsForProgrammersPartFiveRei_8482/Crown_3.jpg" width=201 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/FiveDollarWordsForProgrammersPartFiveRei_8482/Crown_3.jpg"&gt;&lt;/A&gt;Thing-making happens all the time in non-computer-related domains. Queen Elizabeth, her throne and her crown, for example, are all concrete representations of the abstract concept of “sovereignty”. A judge’s gavel or a statue of a blind woman holding scales make a concrete representation of the abstract concept of “justice”.&lt;/P&gt;
&lt;P&gt;You also see reification in &lt;A href="http://en.wikipedia.org/wiki/Teleology" mce_href="http://en.wikipedia.org/wiki/Teleology"&gt;teleological&lt;/A&gt; rhetoric. “&lt;A href="http://en.wikipedia.org/wiki/Information_wants_to_be_free" mce_href="http://en.wikipedia.org/wiki/Information_wants_to_be_free"&gt;Information wants to be free&lt;/A&gt;”, for example, &lt;A href="http://en.wikipedia.org/wiki/Reification_(fallacy)" mce_href="http://en.wikipedia.org/wiki/Reification_(fallacy)"&gt;fallaciously&lt;/A&gt; reifies “information” for rhetorical impact. And it succeeds in doing so - obviously this is some compelling rhetoric that speaks to lots of people. It makes an interesting point in a memorable way.(*) But hopefully no one seriously believes that the abstract concept of “information” is actually &lt;EM&gt;a thing with desires or beliefs&lt;/EM&gt;. Only concrete entities can actually want something.&lt;/P&gt;
&lt;P&gt;In the world of programming language design and implementation, &lt;A href="http://en.wikipedia.org/wiki/Reification_(computer_science)" mce_href="http://en.wikipedia.org/wiki/Reification_(computer_science)"&gt;reification&lt;/A&gt; is a huge part of what we do; designing languages and building compilers is all about taking extremely abstract concepts like “variable”, “procedure”, “type”, “set”, “class”, and so on, and making a device that reifies those concepts into more concrete textual entities that can be declared and manipulated. Our goal for LINQ in C# 3.0 was to reify ideas like “filter”, “projection”, “group”, “order”, and “query” into concrete entities that could be directly expressed in the text of the program. Adding &lt;A href="http://blogs.msdn.com/ericlippert/archive/2009/03/23/five-dollar-words-for-programmers-part-three-homoiconic.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2009/03/23/five-dollar-words-for-programmers-part-three-homoiconic.aspx"&gt;homoiconicity&lt;/A&gt; via expression trees reifies those concepts even further, making them manipulable as runtime objects.&lt;/P&gt;
&lt;P&gt;Some of the most interesting areas in the computing industry are those where reifications are still inchoate or contradictory. Consider the tarball that is modern bleeding-edge asynchronous programming, for example. Pretty much everyone agrees that we need some decent way to solidly reify the notion of “asynchronous work”, but how? Looking around, I find that people reify this idea (or closely related ideas) in a dozen&amp;nbsp;different ways. Workflows, coroutines, observable collections, futures and promises come immediately to mind; I’m sure there are many more. This lack of consensus makes the language designers’ jobs much harder.&lt;/P&gt;
&lt;P&gt;*************&lt;/P&gt;
&lt;P&gt;(*) The alert reader will have just wryly noted that I have &lt;EM&gt;indulged in the very rhetorical fallacy that I’m pointing out&lt;/EM&gt;. I’ve fallaciously reified a &lt;EM&gt;quotation&lt;/EM&gt; into a thing that can &lt;EM&gt;succeed&lt;/EM&gt;, can &lt;EM&gt;speak&lt;/EM&gt; and can &lt;EM&gt;make a point&lt;/EM&gt;. Really I should be making these attributions to the concrete &lt;EM&gt;people&lt;/EM&gt; who speak that statement, not to the abstract &lt;EM&gt;statement&lt;/EM&gt; itself. &lt;/P&gt;
&lt;P&gt;And isn’t that ironic, don’t you think? Who would’ve thought? It figures.&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9540626" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx">Big Words</category></item><item><title>Five-Dollar Words For Programmers, Part Four: Boustrophedonic</title><link>http://blogs.msdn.com/ericlippert/archive/2009/03/26/five-dollar-words-for-programmers-part-four-boustrophedonic.aspx</link><pubDate>Thu, 26 Mar 2009 16:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9502592</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9502592.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9502592</wfw:commentRss><description>&lt;a href="http://commons.wikimedia.org/wiki/File:Lapis-niger.jpg"&gt;&lt;img title="Boustrophedonic" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="240" alt="Boustrophedonic" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/FiveDollarWordsForProgrammersPartFourBou_C882/Boustrophedonic_3.jpg" width="172" align="left" border="0"&gt;&lt;/a&gt;  &lt;div class="mine"&gt; &lt;p&gt;Here’s an almost useless but thoroughly delightful five-dollar word. English of course is read left-to-right. Hebrew and Arabic are read right-to-left. A text is &lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Boustrophedonic"&gt;boustrophedonic&lt;/a&gt;&lt;/strong&gt; if it reads left-to-right &lt;em&gt;and&lt;/em&gt; right-to-left, &lt;em&gt;alternating&lt;/em&gt;.  &lt;p&gt;It’s from the Greek βουστροφηδόν meaning “as the ox turns”;&amp;nbsp; you’d plow a field with an ox right to left and then left to right, obviously.  &lt;p&gt;There are a number of ancient languages which were written boustrophedonically, which I’m sure has given members of the Unicode committee many sleepless nights. The example here is a rare early Latin text written boustrophedonically.  &lt;p&gt;What’s the relevance to computer people not on the Unicode committee, given that odds are slim to none that Word will ever support boustrophedonic editing? &lt;em&gt;That’s how most modern dot-matrix and inkjet printers print.&lt;/em&gt; The head goes left-to-right, then prints the image “backwards” right-to-left, and so on.  &lt;p&gt;I discovered this word several years ago when grepping through the Scrabble Tournament Word List post-game to see if HEDONIC was in fact a legal bingo, or if I had played a phony. (It is legal.) But I had partial text matching on, so I hit BOUSTROP&lt;strong&gt;HEDONIC&lt;/strong&gt; first and was intrigued, so I looked it up.  &lt;p&gt;At fifteen letters long, it would run the entire width or height of the board. If OUST, HE and ON were all on the board already in the right place along an edge, you could play the remaining seven letters, get the triple-triple-triple word score plus the bingo bonus, and score 725 points. That would almost double the world record for highest scoring play (CAZIQUES, 392 points).  &lt;p&gt;This seems unlikely, but you never know. Might come in handy.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9502592" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/English+Usage/default.aspx">English Usage</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx">Big Words</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Scrabble/default.aspx">Scrabble</category></item><item><title>Five-Dollar Words For Programmers, Part Three: Homoiconic</title><link>http://blogs.msdn.com/ericlippert/archive/2009/03/23/five-dollar-words-for-programmers-part-three-homoiconic.aspx</link><pubDate>Mon, 23 Mar 2009 23:33:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9502480</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>24</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9502480.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9502480</wfw:commentRss><description>&lt;div class="mine"&gt; &lt;p&gt;Jeff Atwood was kind enough to once more &lt;a href="http://www.codinghorror.com/blog/archives/001244.html"&gt;give me the shout-out in his blog the other day&lt;/a&gt;. Thanks Jeff!&lt;/p&gt; &lt;p&gt;This inspires me to continue my series on five-dollar words for programmers. Here’s one that I only learned relatively recently, when I helped write the code that translates a lambda expression into an expression tree which represents the content of the lambda: &lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Homoiconic"&gt;homoiconic&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb397951.aspx"&gt;&lt;img title="Expression Trees" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="240" alt="Expression Trees" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/FiveDollarWordsForProgrammersPartThreeHo_BE81/Expression%20Trees_3.png" width="260" align="left" border="0"&gt;&lt;/a&gt; A language is said to be &lt;strong&gt;homoiconic&lt;/strong&gt; if the &lt;strong&gt;representation&lt;/strong&gt; of the program can be seen as a &lt;strong&gt;data structure&lt;/strong&gt; expressible in that language. With expression lambdas being convertible to expression trees (which can then be compiled into code at runtime), C# 3.0 is &lt;em&gt;somewhat&lt;/em&gt; homoiconic. But it pales in comparison to, say, LISP, where pretty much everything you can do in the language you can also represent as structurally isomophic data.&lt;/p&gt; &lt;p&gt;Something I personally would like to see more of in C# in the future is greater homoiconicity. We could extend expression trees to statement trees, declaration trees, program trees, and so on. This series of steps would enable increasingly powerful and interesting &lt;strong&gt;metaprogramming scenarios&lt;/strong&gt;. &lt;/p&gt; &lt;p&gt;C# suffers from the lack of a metalanguage. We absolutely do not want to go towards the horrible and primitive metaprogramming language exemplified by the C preprocessor language. We already have a great language, C#, so why not use C# as a metalanguage? Wouldn’t it be nice to &lt;strong&gt;make C# its own metalanguage&lt;/strong&gt;? And once we do that, then we get into some truly strange loops, where we could use those data structures in the compiler implementation itself!&lt;/p&gt; &lt;p&gt;This is a long way off and might never happen, but a guy can dream.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9502480" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Rarefied+Heights/default.aspx">Rarefied Heights</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Lambda+Expressions/default.aspx">Lambda Expressions</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx">Big Words</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Language+Design/default.aspx">Language Design</category></item><item><title>Five-Dollar Words for Programmers, Part Two: Orthogonal</title><link>http://blogs.msdn.com/ericlippert/archive/2005/10/28/five-dollar-words-for-programmers-part-two-orthogonal.aspx</link><pubDate>Fri, 28 Oct 2005 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:483905</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>21</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/483905.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=483905</wfw:commentRss><description>&lt;FONT face="lucida sans unicode" color=purple size=2&gt;
&lt;P&gt;In geometry, "orthogonal" basically means the same thing as "perpendicular", or "at right angles".&amp;nbsp; The walls are orthogonal to the floor. But algebraists extend the meaning of "orthogonal" beyond mere perpendicularity; to an algebraist, two aspects of a system are orthogonal if one can be varied without changing the value of the other.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Imagine for instance that you were trying to describe how to get from one point in an empty room to another. A perfectly valid way to do so would be to say how many steps to go north or south, and then how many steps to go northeast or southwest.&amp;nbsp; This hockey-stick navigation system is totally workable, but it feels weird because north and northeast are not orthogonal -- you can't change your position by moving northeast without also at the same time changing how far north you are.&amp;nbsp; With an orthogonal system -- say, the traditional north-south/east-west system -- you can specify how far north to go without worrying about taking the east-west movement into account at all.&lt;/P&gt;
&lt;P&gt;Nonorthogonal systems are hard to manipulate because it's hard to tweak isolated parts. Consider my fish tank for example. The pH, hardness, oxidation potential, dissolved oxygen content, salinity and conductivity of the water are very nonorthogonal; changing one tends to have an effect on the others, making it sometimes tricky to get the right balance. Even things like changing the light levels can change the bacteria and algae growth cycles causing chemical changes in the water. &lt;/P&gt;
&lt;P&gt;Computer people further extend this algebraic notion of orthogonality to their systems. Consider a case I just came across while studying the C# expression binding code, for example. C# warns about unreachable code:&lt;/P&gt;&lt;FONT face="lucida console" color=navy&gt;
&lt;P&gt;if (false) {&lt;BR&gt;label:&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;targetted but&amp;nbsp;not reachable&lt;BR&gt;&amp;nbsp; foo(); // warning! unreachable! &lt;BR&gt;&amp;nbsp; if (abc) goto label;&lt;BR&gt;}&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;and also warns about untargetted labels:&lt;/P&gt;&lt;FONT face="lucida console" color=navy&gt;
&lt;P&gt;public void foo() { &lt;BR&gt;&amp;nbsp; bar();&lt;BR&gt;label:&amp;nbsp; //&amp;nbsp;reachable but not targetted&lt;BR&gt;&amp;nbsp; blah();&lt;BR&gt;}&amp;nbsp; &lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;"Reachable" and "targetted" are orthogonal in one sense. You can have a reachable targetted label, a reachable untargetted label, an unreachable targetted label and an unreachable untargetted label. But they are nonorthogonal in another sense, as I discovered this week when I almost seriously broke the code generator. The way our code generator works, we must generate IL for an unreachable label &lt;EM&gt;if it is targetted by a reachable &lt;FONT color=#000080&gt;goto&lt;/FONT&gt;&lt;/EM&gt;. The notions of reachable and targetted get conflated in this one corner case, meaning that I cannot have a code generator that skips generating all unreachable code. This unexpected nonorthogonality makes it difficult to write a compiler that is both correct and understandable, so I'm trying to figure out ways to either eliminate the nonorthogonality, or capture the problem in a very specific piece of highly localized code that I can comment the heck out of.&lt;/P&gt;
&lt;P&gt;Now hold on a minute, I hear you saying. Surely if the &lt;FONT color=#000080&gt;goto&lt;/FONT&gt; is reachable then the label will be too! My challenge to you guys is this: how can you have an unreachable label targetted by a reachable &lt;FONT color=#000080&gt;goto&lt;/FONT&gt;? &lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=483905" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Rarefied+Heights/default.aspx">Rarefied Heights</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Mathematics/default.aspx">Mathematics</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx">Big Words</category></item><item><title>Five-Dollar Words for Programmers, Part One: Idempotence</title><link>http://blogs.msdn.com/ericlippert/archive/2005/10/26/five-dollar-words-for-programmers-part-one-idempotence.aspx</link><pubDate>Wed, 26 Oct 2005 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:483900</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/483900.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=483900</wfw:commentRss><description>&lt;FONT face="lucida sans unicode" color=purple size=2&gt;
&lt;P&gt;Programmers, particularly those with a mathematical background, often use words from mathematics when describing their systems. Unfortunately, they also often do so without consideration of the non-mathematical background of their colleagues. I thought I might talk today a bit about the word "idempotent". This is a very easy concept but lots of people don't know that there is a word for it.&lt;/P&gt;
&lt;P&gt;There are two closely related definitions for "idempotent. A &lt;STRONG&gt;value&lt;/STRONG&gt; is "idempotent under function foo" if the result of doing foo to the value results in the value right back again. &lt;/P&gt;
&lt;P&gt;A&amp;nbsp;&lt;STRONG&gt;function&lt;/STRONG&gt; is "idempotent" if the result of doing it twice (feeding the output of the first call into the second call) is exactly the same as the result of doing it once. (Or, in other words, every output of the function is idempotent under it.)&lt;/P&gt;
&lt;P&gt;The most trivial mathematical example of the second kind is the constant function.&amp;nbsp; If &lt;FONT color=#000080&gt;f(x) = c&lt;/FONT&gt;, then clearly &lt;FONT color=#000080&gt;f(x) = f(f(x)) = f(f(f(x)))&lt;/FONT&gt; ... so &lt;FONT color=#000080&gt;f&lt;/FONT&gt; is idempotent (and the constant is idempotent under it). The identity function &lt;FONT color=#000080&gt;f(x) = x&lt;/FONT&gt; is also idempotent (and every value is idempotent under it). The function that takes a set of numbers&amp;nbsp;and returns a set containing its largest element is idempotent (and every one-element set is idempotent under it). I'm sure you can think of lots of examples of idempotent functions.&lt;/P&gt;
&lt;P&gt;To get a handle on the other sense, pick an operation -- say, doubling.&amp;nbsp; The only value which is idempotent under that operation is zero. The operation "subtracting any non-zero value"&amp;nbsp;has no idempotent values. Squaring has two idempotent values, zero and one.&lt;/P&gt;
&lt;P&gt;The second characterization of this concept comes up all the time in practical programming, particularly around&amp;nbsp;caching logic. Usually when used in the computer science sense we don't mean that the effect of the function is invariant under composition, but rather that it is invariant over the number of calls. For example, I don't know how many times I've written:&lt;/P&gt;&lt;FONT face="lucida console" color=navy&gt;
&lt;P&gt;HRESULT GetTypeLibCreator(ICreateTypeLib2 ** ppctl) { &lt;BR&gt;&amp;nbsp; if (this-&amp;gt;m_pctl == NULL) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HRESULT hr;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = CreateTypeLib2(SYS_WIN32, pszName, &amp;amp;this-&amp;gt;m_pctl);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FAILED(hr)) return hr;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; *ppctl = this-&amp;gt;m_pctl;&lt;BR&gt;&amp;nbsp; this-&amp;gt;m_pctl-&amp;gt;AddRef();&lt;BR&gt;&amp;nbsp; return S_OK;&lt;BR&gt;}&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;A nice little idempotent function -- calling it two, three, n times has exactly the same result as calling it once. &lt;/P&gt;
&lt;P&gt;The place you see the other characterization of idempotence all the time is in C++ header files. Include a needed header zero times and you'll get "not defined" errors. Accidentally include it twice and you'll get "redefinition" errors. It's a major pain to make sure that every header file is included exactly once. Therefore, most headers use&amp;nbsp; some trick to make them idempotent under the inclusion operation:&lt;/P&gt;&lt;FONT face="lucida console" color=navy&gt;
&lt;P&gt;#ifndef STUFF_H_INCLUDED&lt;BR&gt;#define STUFF_H_INCLUDED&lt;/P&gt;
&lt;P&gt;//&amp;nbsp;headers here&lt;/P&gt;
&lt;P&gt;#endif // STUFF_H_INCLUDED&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;or in more modern systems, the &lt;FONT face="lucida console" color=#000080&gt;#pragma once&lt;/FONT&gt; directive makes headers idempotent under inclusion.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=483900" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Rarefied+Heights/default.aspx">Rarefied Heights</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Mathematics/default.aspx">Mathematics</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Big+Words/default.aspx">Big Words</category></item></channel></rss>