<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Win-Vector Blog &#187; History</title>
	<atom:link href="http://www.win-vector.com/blog/category/history/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.win-vector.com/blog</link>
	<description>The Applied Theorist&#039;s Point of View</description>
	<lastBuildDate>Thu, 29 Jul 2010 17:09:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Deming, Wald and Boyd: cutting through the fog of analytics</title>
		<link>http://www.win-vector.com/blog/2010/04/deming-wald-and-boyd-cutting-through-the-fog-of-analytics/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=deming-wald-and-boyd-cutting-through-the-fog-of-analytics</link>
		<comments>http://www.win-vector.com/blog/2010/04/deming-wald-and-boyd-cutting-through-the-fog-of-analytics/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 22:53:03 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[A-10]]></category>
		<category><![CDATA[Boyd]]></category>
		<category><![CDATA[Deming]]></category>
		<category><![CDATA[Novum Organum]]></category>
		<category><![CDATA[OODA]]></category>
		<category><![CDATA[PDCA]]></category>
		<category><![CDATA[Wald]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/?p=1421</guid>
		<description><![CDATA[This article is a quick appreciation of some of the statistical, analytic and philosphic techniques of Deming, Wald and Boyd. Many of these techniques have become pillars of modern industry through the sciences of statistics and operations research. We start with W. Edwards Deming. Deming was a statistician who designed many of the production methods [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>This article is a quick appreciation of some of the statistical, analytic and philosphic techniques of Deming, Wald and Boyd.  Many of these techniques have become pillars of modern industry through the sciences of statistics and operations research.<br />
<span id="more-1421"></span></p>
<p>We start with <a href="http://en.wikipedia.org/wiki/W._Edwards_Deming" target="wp">W. Edwards Deming</a>.  Deming was a statistician who designed many of the production methods of post-war occupied Japan.  Deming&#8217;s work on quality quantification, measurement and continuous improvement formed the fundamental basis of Japan&#8217;s later rise as a respected manufacturing super power.  Many of the further improved techniques were later imported into the United States as &#8220;eastern wisdom.&#8221;  However, some of the lesser ideas were perverted by eager followers into destructive cargo-cult rituals like &#8220;six sigma&#8221;  (we must remember that it was the depth and power of Deming&#8217;s ideas that attracted the imitators).</p>
<p>One of Deming&#8217;s most fundemental ideas was the &#8220;PDCA loop.&#8221;</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/PDCA.png" alt="PDCA.png" border="0" width="300" /><br />
</center></p>
<p>The PDCA loop is cycle of conceptual and analytic effort that sequences repeatedly through the stages Plan, Do, Check and Act.  The cycle starts with a plan and the next cycle&#8217;s plan is influenced by results of the previous cycle.  The explicit Check and Act steps show the presumption that the Do step will always need measurement and correction.  This cycle is designed to help mitigate Clausewitz&#8217;s observation that  &#8220;no campaign plan survives first contact with the enemy.&#8221;  Deming&#8217;s idea is essentially the systematic application of the scientific method (&#8220;propose/test&#8221;- or Francis Bacon&#8217;s Novum Organum of 1620) to adaption and implementation of plans.</p>
<p>While Deming was teaching planning and &#8220;statistical process control&#8221; to boost US wartime production a number of other statisticians were having great success in developing reactive strategies.  One of the best stories is that of Abraham Wald.  Wald became interested in allied aircraft mortality during World War II.  He prepared a number of studies and charts of surviving aircraft, tabulating where bullet and shrapnel damage was most extensive.  He could, for example, combine inspections of many returning bombers to determine where the returning bombers had the most damage (say the bulk area of fuselage and the leading edges of the wings):</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/b25b.png" alt="b25b.png" border="0" width="300" height="325" /><br />
</center></p>
<p>Wald then had the genius idea of proposing additional armor on the parts of the aircraft that never showed any hits on <em>surviving</em> aircraft (reasoning that aircraft routinely took damage everywhere so the undamaged areas in surviving aircraft must be the areas more often damaged in the unobserved, non-returning lost aircraft).  From the above diagram we might propose to add more armor near the pilots, engines and trailing control surfaces.  Wald later published sophisticated statistical techniques for imputing the distribution of hits (and therefore the distribution of vulnerabilities) on the unobserved aircraft:   &#8220;A Method of Estimating Plane vulnerability Based on Damage of Survivors,&#8221; Abraham Wald, Center for Naval Analyses (1943).</p>
<p>This  art of reactive observation was later systematized by <a href="http://en.wikipedia.org/wiki/John_Boyd_(military_strategist)" target="wp">Colonel John Boyd</a>.   Boyd invented what he called the &#8220;OODA loop.&#8221;</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/OODA.png" alt="OODA.png" border="0" width="300" /><br />
</center></p>
<p>This loop cycles similarly to Demings&#8217;s through a pattern of Observe, Orient, Decide and Act.  The OODA loop differs from the PDCA loop in that it assumes a world that looks back and adapts against your actions.   Boyd added ideas of tempo and pace such as &#8220;short cutting the loop&#8221; (skipping from act to orient or even act to decide) to adapt faster than nature or than your enemy.</p>
<p>Boyd is also famous for applying his and Wald&#8217;s ideas in the design of the A-10 Warthog.  The  A-10 is a unique non-stealth, sub-sonic close air support plane.  It is considered one of the ugliest things to every fly.  The A-10 was not state of the art when it was introduced but it was scientifically designed for survival in the style of Wald.  The engine intakes are partially protected by the wings, there is extra titanium armor around the pilot and a primitive direct lever control system in addition to the traditional hydraulics.  The A-10 is known for its &#8220;lingering ability&#8221; or ability to stay near troops under fire to deliver support.  It has also allowed pilots like <a href="http://en.wikipedia.org/wiki/Kim_Campbell_(pilot)"  target="wp">Major Kim Reed-Campbell</a> to fly for an hour and return to base after losing pieces of wing and all hydraulics.  Here is a picture Reed-Campbell inspecting her damaged A-10 in 2003 after safely landing:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2010/04/Reed-Campbell.jpg" alt="Reed-Campbell.jpg" border="0" width="500" height="368" /><br />
</center></p>
<p>Deming, Wald and Boyd were able to move statistics and analytics beyond description and use mathematics for prescription.  The techniques they developed for planning, measurement and reasoning remain relevant to this day.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2010/04/deming-wald-and-boyd-cutting-through-the-fog-of-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is &#8220;Genetic Art?&#8221;</title>
		<link>http://www.win-vector.com/blog/2009/06/what-is-genetic-art/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=what-is-genetic-art</link>
		<comments>http://www.win-vector.com/blog/2009/06/what-is-genetic-art/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 05:17:57 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[genetic art]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/?p=125</guid>
		<description><![CDATA[What is &#8220;genetic art?&#8221; My answer to this is http://www.geneticart.org (redirects to http://www.mzlabs.com), but this requires some explanation. The quick answer is this is genetic art: The longer answer is that a number of times different forms of algorithmic art have been invented. Algorithmic art is art generated by mathematical procedures. Such art is similar [...]


Related posts:<ol><li><a href='http://www.win-vector.com/blog/2010/04/algorithmic-movie-with-texture/' rel='bookmark' title='Permanent Link: Algorithmic Movie (with texture)'>Algorithmic Movie (with texture)</a></li>
<li><a href='http://www.win-vector.com/blog/2010/06/automatic-differentiation-with-scala/' rel='bookmark' title='Permanent Link: Automatic Differentiation with Scala'>Automatic Differentiation with Scala</a></li>
<li><a href='http://www.win-vector.com/blog/2010/01/relative-returns-a-banker-versus-trader-paradox/' rel='bookmark' title='Permanent Link: Relative returns: a banker versus trader paradox'>Relative returns: a banker versus trader paradox</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>What is &#8220;genetic art?&#8221;  My answer to this is <a href="http://www.geneticart.org">http://www.geneticart.org</a>  (redirects to <a href="http://www.mzlabs.com">http://www.mzlabs.com</a>), but this requires some explanation.<span id="more-125"></span><br />
The quick answer is this is genetic art:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/pic1.png" alt="pic1.png" border="0" width="600"  /><br />
</center></p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/pic2.png" alt="pic2.png" border="0" width="600" /><br />
</center></p>
<p>The longer answer is that a number of times different forms of algorithmic art have been invented.  Algorithmic art is art generated by mathematical procedures.  Such art is similar to earlier mechanical and kinetic art forms.  One branch of mathematics often used to generate such art is called &#8220;fractals.&#8221;  We looked somewhere else for our inspiration (our art is not strictly fractal in nature).  What we worked on we called &#8220;genetic art&#8221; to emphasize the role of encoding and re-combination in the works.</p>
<p>In the early 90&#8242;s Karl Sims presented a number of art installations based on at least three interesting ideas: </p>
<ul>
<li>Transforming images</li>
<li>Evolving combinations of transforms</li>
<li>Direct participation</li>
</ul>
<p>(see: Karl Sims. Artificial Evolution for Computer Graphics. Proceedings of SIGGRAPH 1991 and <a href="http://www.karlsims.com/genetic-images.html">Karl Sims&#8217; homepage</a>).</p>
<p>The part that caught a number of people&#8217;s imaginations was the evolution aspect.  Karl Sims defined a method of combining transformations of original source images.  He then allowed people to manipulate his art installations and &#8220;vote&#8221; on art they liked best.  The more popular pieces were combined (or bred) to create newer works that then put up against criticism.  After many breedings (or generations) the combinations of transforms were quite complicated and a number of unexpected images were created.</p>
<p>At CMU Shumeet Baluja, Dean Pomerleau and Todd Jochem were interested both in the evolutionary aspects of the art and also seeing if a machine could learn to model user tastes (see Shumeet Baluja, Dean Pomerleau and Todd Jochem. Simulating User&#8217;s Preferences: Towards Automated Artificial Evolution for Computer Generated Images. Technical Report CMU-CS-93-198. Carnegie Mellon University. Pittsburgh, PA. October 1993. ).  They built a much simpler art system that combined primitive elements (elements closer to brush strokes than to original pictures) and tried to learn user preferences for complex pictures.  </p>
<p>Figures of this era looked much like this (well better than this, this comes from a scan of a black and white printing of the paper):</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/evolve.png" alt="evolve.png" border="0" width="209" height="205" />.<br />
</center></p>
<p>Scott Neal Reilly built a new, more simplified system; and with Michael Witbrock put the whole thing on the Web.  This was an unimaginably primitive time on the Web. Cutting edge interaction was sites like &#8220;Blue Dog Can Count.&#8221;  The Mac had no forms capable browser and Amazon.com was still a year away from launching.  An interactive art exhibition running directly on the Web (and manipulated by anybody) was a significant step forward.</p>
<p>Michael Witbrock was influenced by the stories of  <a href="http://en.wikipedia.org/wiki/Heikegani">Heikegani Crabs</a> and Alan Turing&#8217;s 1952 paper &#8220;The Chemical Basis of Morphogenesis&#8221; (which theorized how simple systems could develop textures).</p>
<p>At this point I (John Mount) got interested in the project and felt that much more could be done with how such systems handled color.  The art had been simplified to primitive elements that one could think of as brushes (really more like gradients) but the art was essentially grey-scale with a false-color map applied at the last step.  Karl Sims had made transformations on images his primitive operations, I wanted my primitive operation to be transformations on color.</p>
<p>Being a math-nerd I chose to encode color inside a mathematical system called &#8220;Quaternions&#8221; (see Ebbinghaus et al. Numbers Springer-Verlag, Second Edition, 1988).  Colors are often represented as three brightness terms- for example intensity of red, intensity of green and intensity of blue.  The Quaternions were discovered by Sir William Rowan Hamilton in 1843 (see <a href="http://en.wikipedia.org/wiki/Quaternion">Wikipeida: Quaterion</a>).  Sir Hamilton was trying to solve the problem of encoding positions in space in a nice structure and was so excited by his discovery he carved his fundamental formula for them in the Brougham Bridge the night he had his breakthrough.  Quaternions are represented as four standard numbers (so they have enough &#8220;slots&#8221; to encode a position in Sir Hamilton&#8217;s case or in our case a color) and they their selves behave a lot like individual numbers.  There are rules for adding, subtracting, multiplying and even dividing Quaterions.  This means you can write formulas over them and these formulas are now directly manipulating colors (instead of manipulating geometry or intensities as in the earlier systems).</p>
<p>So, as with Neal Reilly&#8217;s system, we represented all of our transformations as formulas and represented &#8220;breeding&#8221; as ripping a bit of one formula out and combining it with another.  For instance these two rather uninteresting color gradients were represented by the formulas:<br />
<center></p>
<table>
<tr>
<td> ( x &#8211; i y ) : </td>
<td>
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/x-iy.png" alt="x_iy.png" border="0" width="150" height="100" />
</td>
</tr>
<tr>
<td> ( x &#8211; i y &#8211; j x &#8211; k y ) : </td>
<td>
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/x-iy-jx-ky.png" alt="x_iy_jx_ky.png" border="0" width="150" height="100" />.
</td>
</tr>
</table>
<p></center></p>
<p>One of our arithmetic operations was named &#8220;mod&#8221; and we could use it to combine the two items into a more complicated formula and somewhat more interesting picture:</p>
<p><center></p>
<table>
<tr>
<td>( mod ( x &#8211; i y) ( x &#8211; i y &#8211; j x &#8211; k y ) )  : </td>
<td>
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/mod.png" alt="mod.png" border="0" width="150" height="100" />.
</td>
</tr>
</table>
<p></center></p>
<p>After enough generations of selection and breeding the formulas get long and complicated (luckily nobody but the machines have to look at them) and the pictures get interesting:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/silver.png" alt="silver.png" border="0" width="300" height="200" />.<br />
</center></p>
<p>Michael Witbrock and Scott Neal Reilly supplied an updated web interface. And at this point we got our 15 minutes of fame:</p>
<p>From Wired 3.01 January 1995 p. 147  Kristin Spence&#8217;s &#8220;Net Surf&#8221; column:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/wired301.png" alt="Wired3.01.png" border="0" width="443" height="252" />.<br />
</center></p>
<p>We also made large prints (using a parallel computation system named &#8220;WAX&#8221; by Peter Stout) and set up an exhibition in a Pittsburgh coffee house.  The development work was largely done on a machine with a black and white monitor (later we got access to a grey scale monitor) so it really was a treat that color was able to fend for itself.</p>
<p>On an unrelated track in 1991 another CMU student, <a href="http://scottdraves.com/history.html">Scott Draves</a>, was pursuing a serious project and building art based on iterated function systems (more related to fractals than our work) and in 1999 added some genetic ideas and released the Electronic Sheep client/server oriented screen saver (inspired by SETI@home).</p>
<p>Recently we have gotten back to some more of Sims&#8217; ideas and allowed more geometric transformations and real source images, such as incorporating some of Dover&#8217;s royalty free Japanese textile designs:</p>
<p><center><br />
<img src="http://www.win-vector.com/blog/wp-content/uploads/2009/06/texture.png" alt="texture.png" border="0" width="300" height="200" />.<br />
</center></p>
<p>The original system was group interactive and an incredible hit (and had its own Zephyr discussion instance- the then equivalent of Twitter).  The current demo is stand alone and server-free, so it is a single player game.</p>
<p>All the user has to do is point a Java 1.4 (or better) capable browser at:  <a href="http://mzlabs.com/MZLabsJM/page4/page22/page22.html">Genetic Art Program</a>.  Click (and hold) on the &#8220;Action Menu&#8221; of any of the sub-windows and select &#8220;take over left selection&#8221; on one picture that interests you and &#8220;take over right selection&#8221; on another picture that interests you.  You will notice doing this copies the pictures to the left and right of the &#8220;breed pictures&#8221; button.  Now press &#8220;breed pictures&#8221; as many times as you want.  Each time you press it you will get a new picture build by combining elements of the two small pictures.  At any time you can have some other picture you like take over a breeding position (again by using its action menu).  And you can also scroll the strip of five pictures around and click on them to introduce previous favorites from the earlier server version of the program into your space of opportunities.</p>
<p>We were originally a bit uncomfortable calling the work &#8220;Art&#8221; but a number of the images have made significant impressions on us and others- so perhaps it qualifies.</p>


<p>Related posts:<ol><li><a href='http://www.win-vector.com/blog/2010/04/algorithmic-movie-with-texture/' rel='bookmark' title='Permanent Link: Algorithmic Movie (with texture)'>Algorithmic Movie (with texture)</a></li>
<li><a href='http://www.win-vector.com/blog/2010/06/automatic-differentiation-with-scala/' rel='bookmark' title='Permanent Link: Automatic Differentiation with Scala'>Automatic Differentiation with Scala</a></li>
<li><a href='http://www.win-vector.com/blog/2010/01/relative-returns-a-banker-versus-trader-paradox/' rel='bookmark' title='Permanent Link: Relative returns: a banker versus trader paradox'>Relative returns: a banker versus trader paradox</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2009/06/what-is-genetic-art/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello World: An Instance Of Rhetoric in Computer Science</title>
		<link>http://www.win-vector.com/blog/2008/02/hello-world-an-instance-rhetoric-in-computer-science/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hello-world-an-instance-rhetoric-in-computer-science</link>
		<comments>http://www.win-vector.com/blog/2008/02/hello-world-an-instance-rhetoric-in-computer-science/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 02:00:13 +0000</pubDate>
		<dc:creator>John Mount</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Hello World]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.win-vector.com/blog/2008/02/19/hello-world-an-instance-rhetoric-in-computer-science/</guid>
		<description><![CDATA[Hello World: An Instance Of Rhetoric in Computer Science John Mount: jmount@mzlabs.com February 19, 2008 Computer scientists have usually dodged questions of intent, purpose or meaning. While there are theories that assign deep mathematical meaning to computer programs[13] we computer scientists usually avoid discussion of meaning and talk more about utility and benefit. Discussions of [...]


Related posts:<ol><li><a href='http://www.win-vector.com/blog/2009/05/programs-reduced-to-statistics/' rel='bookmark' title='Permanent Link: Programs reduced to statistics'>Programs reduced to statistics</a></li>
<li><a href='http://www.win-vector.com/blog/2008/04/i-know-i-am-the-one-being-a-jerk/' rel='bookmark' title='Permanent Link: I know, I am the one being a jerk'>I know, I am the one being a jerk</a></li>
<li><a href='http://www.win-vector.com/blog/2008/04/sorting-in-anger/' rel='bookmark' title='Permanent Link: Sorting Used in Anger'>Sorting Used in Anger</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hello World: An Instance Of Rhetoric in Computer Science<br />
John Mount: jmount@mzlabs.com</p>
<p />
<p>February 19, 2008</p>
<p />
<p>Computer scientists have usually dodged questions of intent, purpose or meaning. While there are theories that assign deep mathematical meaning to computer programs[13] we computer scientists usually avoid discussion of meaning and talk more about utility and benefit. Discussions of the rhetorical meaning of programs is even less common. However, there is a famous computer program that has a clean an important rhetorical point. This program is called “hello world” and its entire action is to write out the phrase “hello world.” The action is simple but the “hello world” program actually has a fairly significant purpose and meaning.</p>
<p />
<p>I would like to briefly trace the known history of “hello world” and show how the rhetorical message it presents differs from the rhetoric embodied in earlier programs. In this sense we can trace a change in the message computer scientists felt they needed to communicate (most likely due to changes in the outside world).</p>
<p><span id="more-4"></span></p>
<p />
<p>Since the late 1970’s it has been a tradition in computer science that when facing a new system to start by writing the traditional “first program”, which is called “hello world.” The history of this tradition is not well documented, but WikiBooks claims the origin is in Brain Kerninghan’s 1974 tutorial for the computer language “B.”[14, 8]</p>
<p />
<p>The program itself is as follows:</p>
<p />
<pre>
main( ) {
  extrn a, b, c;
  putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';
</pre>
<p />
<p>From the original context in [8] we can say this is not a pure “hello world” program. The purpose of this program is to illustrate a few functions of the language (“extrn” variables, use of multiple lines and so on) and not to test if the system is running.<br />
The most famous (and a pure) example of “hello world” is found in Brian Kerninghan and Dennis Ritchie’s famous 1978 C book[9]. The code looks like the following:</p>
<p />
<pre>
main() {
        printf("hello, world\n");
}
</pre>
<p />
<p>Equally famous are the early versions in “BASIC”:</p>
<p />
<pre>
10 print "Hello, World!"
</pre>
<p />
<p>In both of these examples the purpose of “hello world” is clear: it is a trivial computer program that does nothing but print a single line of text. If this can not be made to work then nothing can be made to work. “hello world” is in fact a somewhat confrontational program. The author is saying “it isn’t obvious your computer system will work, so I am not going to invest a lot of time in it until I see it can at least print one line of text.”</p>
<p />
<p>Writing “hello world” as the first program on a new system was certainly a well known tradition by the late 1970’s. We can ask: did this tradition showed up late or early in the history of computer science? </p>
<p />
<p>The first modern computer is commonly credited to John von Neumann in 1945. This attribution of “first” was made before a lot of previously secret information on Bletchley Park’s and Konrad Zuse’s work in Germany were well known, but von Neumann’s work was definitely the known foundation that later work built on. Donald Knuth credits von Neumann with the first modern computer program[10]. In any case we can securely place the invention of the modern computer to the early to mid 1940’s. It seems like “hello world” was not written at that time because it made entirely the wrong rhetorical point.</p>
<p />
<p>In fact von Neumann’s first program (in 1945) was a sorting algorithm (proving the computers could at least replace tabulators)- it was important to prove that not only could the computer turn on but that it could do something.</p>
<p />
<p>The 1957 description of FORTRAN starts with a program that solves for roots of an equation.[4] John Backus himself says the prior to 1954 “almost all programming was done in machine language or assembly language”[3] (which would make “hello world” an unlikely first program as numeric operations are typically much more succinct than string manipulations in these languages).</p>
<p />
<p>The 1958 UNIVAC Math-Matic Programming Manual first examples are (predictably) equations involving trigonometric functions.[5]</p>
<p />
<p>In 1959 the Algo 58 standard [2] had no concrete example programs- the purpose of this document was to show that program syntax could be specified and to discuss the techniques of specification (so a runnable example did not serve their argument).<br />
John McCarthy’s paper on recursive functions (LISP) starts with examples partial functions and conditionals (to get to terminating recursion as fast as possible).[11] The Lisp1 manual [6] concentrates on the translation of information into data-structures (an important point) and the Lisp1.5 manual [12] is written for the famous “bottom of page 13” moment where “eval” (essentially the semantic core of LISP) is defined in a few lines LISP code.</p>
<p />
<p>The computer language “BASIC” seems almost designed to support “hello world.” Instead the 1964 BASIC manual[7] starts with a lively discussion of what a computer program is (as a process) and the first example program is a highly useful program that solves simultaneous equations. The point again being that useful work can be done.</p>
<p />
<p>Even as late as 1972 “hello world” does not seem to be the obvious message. For example the popular BASIC tutorial called “My Computer Likes Me, When I Speak in BASIC”[1] does indeed start with a simple program that only writes a line of text. But the line it writes is “MY HUMAN UNDERSTANDS ME.” This is making a very different point than the point made by “hello world.”</p>
<p />
<p>While I have skipped a number of languages of the period (Autocode, COBOL, APL, SNOBOL, PL/1, Logo, BCPL, Forth, Smalltalk &#8230;) we can see the general trend: fist programs had to make a point. By the dates it seems that once invented the “hello world” tradition took off and spread very quickly. Writing such a program serves a useful purpose as a test so the practice probably spread quickly once the rhetoric of the earlier programs was no longer needed. That is “hello world” became popular once computer scientists no longer felt that society needed to be persuaded of the ultimate utility of computer systems.</p>
<p />
<p>With the increasing complexity of modern systems “hello world” is a more important test than ever. “hello world” is sometimes called the hardest application to deploy. The idea is that once you learn your lessons from deploying it then deploying a second, more sophisticated, application seems relatively easy. I often find that I can lean the true nature of a system by deploying “hello world.” If writing and deploying “hello world” is a sufficiently unpleasant task in a system then it is likely that every other task in that system will be similarly unpleasant.</p>
<p />
<p>In the end “hello world” serves the same purpose that it always has (testing if a system in fact works) and it stands as a rhetorical marker signifying that we are now living long after the skirmishes of the computer revolution.</p>
<p />
<p><strong>References<br />
</strong></p>
<p />
<p>[1]	Albrecht, B. My Computer Likes Me, When I Speak in BASIC. Dymax, 1972.</p>
<p />
<p>[2]	Backus, J. W. The syntax and semantics of the proposed international algebraic language of the zurich acm-gamm conference.</p>
<p />
<p>[3]	Backus, J. W. The history of fortran i, ii and iii. ACM SIGPLAN Notices 13, 8 (Aug 1978).</p>
<p />
<p>[4]	Backus, J. W., Beeber, R. J., Best, S., Goldberg, R., Haibt, L. M., Herrick, H. L., Nelson, R. A., Sayre, D., Sheridan, P. B., Stern, H., Ziller, I., Hughes, R. A., and Nutt, R. The fortran automatic coding system. Proceedings of the Western Joint Computer Conference (Feb 1957).</p>
<p />
<p>[5]	Corp., R. R. U. UNIVAC math-matic programming system. Sperry Rand, 1958.</p>
<p />
<p>[6]	Fox, P. Lisp 1 programmers manual. 165.</p>
<p />
<p>[7]	Kemeny, J., and Kurtz, T. Basic.</p>
<p />
<p>[8]	Kerninghan, B. W. A tutorial introduction to the language b.</p>
<p />
<p>[9]	Kerninghan, B. W., and Ritchie, D. M. The C Programming Language. Prentice Hall, February 1978.</p>
<p />
<p>[10]	Knuth, D. E. von neumann’s first computer program. Comp. Surveys 2, 4 (1970), 247–260.</p>
<p />
<p>[11]	McCarthy, J. Recursive functions of symbolic expressions and their computation by machine, part i.</p>
<p />
<p>[12]	McCarthy, J., Abrahams, P. W., Edwards, D. J., Hart, T. P., and Levin, M. I. Lisp 1.5 programmers manual. 116.</p>
<p />
<p>[13]	Tennent, R. D. The denotational semantics of programming languages. Communications of the ACM 18, 8 (Aug 1976), 437–453.</p>
<p />
<p>[14]	Wikibooks. http://en.wikibooks.org/wiki/Computer_programming/Hello_world#B, 2008.</p>


<p>Related posts:<ol><li><a href='http://www.win-vector.com/blog/2009/05/programs-reduced-to-statistics/' rel='bookmark' title='Permanent Link: Programs reduced to statistics'>Programs reduced to statistics</a></li>
<li><a href='http://www.win-vector.com/blog/2008/04/i-know-i-am-the-one-being-a-jerk/' rel='bookmark' title='Permanent Link: I know, I am the one being a jerk'>I know, I am the one being a jerk</a></li>
<li><a href='http://www.win-vector.com/blog/2008/04/sorting-in-anger/' rel='bookmark' title='Permanent Link: Sorting Used in Anger'>Sorting Used in Anger</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.win-vector.com/blog/2008/02/hello-world-an-instance-rhetoric-in-computer-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
