<?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>Dan Weinreb's blog &#187; Lisp</title>
	<atom:link href="http://danweinreb.org/blog/category/lisp/feed" rel="self" type="application/rss+xml" />
	<link>http://danweinreb.org/blog</link>
	<description>Software and Innovation</description>
	<lastBuildDate>Sun, 15 Nov 2009 18:40:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C++ Template Metaprogramming</title>
		<link>http://danweinreb.org/blog/c-template-metaprogramming</link>
		<comments>http://danweinreb.org/blog/c-template-metaprogramming#comments</comments>
		<pubDate>Thu, 10 Sep 2009 11:03:17 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=216</guid>
		<description><![CDATA[I have not used C++ in many years.  It was so long ago that templates, in the way they are used today, were not in C++ yet.  I hope I never have to program in C++ again. That said, it&#8217;s interesting to know that C++ templates are so powerful that you can write [...]]]></description>
			<content:encoded><![CDATA[<p>I have not used C++ in many years.  It was so long ago that templates, in the way they are used today, were not in C++ yet.  I hope I never have to program in C++ again. That said, it&#8217;s interesting to know that C++ templates are so powerful that you can write a compile-time Lisp interpreter in them!</p>
<p>The following is from <a href="http://www.amazon.ca/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255">the notes at Amazon about the book &#8220;C++ Template Metaprogramming&#8221; by David Abrahams and Alexey Gurtovoy:</a></p>
<p>&#8220;In 1998 Dave had the privilege of attending a workshop in Generic Programming at Dagstuhl Castle in Germany. Near the end of the workshop, a very enthusiastic Kristof Czarnecki and Ullrich Eisenecker (of Generative Programming fame) passed out a few pages of C++ source code that they billed as a complete Lisp implementation built out of C++ templates. At the time it appeared to Dave to be nothing more than a curiosity, a charming but impractical hijacking of the template system to prove that you can write programs that execute at compile time. He never suspected that one day he would see a role for metaprogramming in most of his day-to-day programming jobs.&#8221;</p>
<p>Thanks for David Mankins for bringing this to my attention!</p>
<p>I recently learned about Python&#8217;s powerful metaprogramming techniques, from a talk by Adam Baratz of The Echonest.  This was very impressive and I hope to find time to learn more.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/c-template-metaprogramming/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>What Programming Language Do People Speak Well Of?</title>
		<link>http://danweinreb.org/blog/what-programming-language-do-people-speak-well-of</link>
		<comments>http://danweinreb.org/blog/what-programming-language-do-people-speak-well-of#comments</comments>
		<pubDate>Fri, 04 Sep 2009 12:42:33 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=210</guid>
		<description><![CDATA[I usually don&#8217;t write blog entries that are merely pointers to someone else&#8217;s blog entries, but I&#8217;m making an exception this time. A blogger named Lukas Biewald, in a blog called/of Dolores Labs, wrote an entry called The Programming Language With The Happiest Users.
He measured Twitter &#8220;tweets&#8221; that mention certain programming languages, and ascertained which [...]]]></description>
			<content:encoded><![CDATA[<p>I usually don&#8217;t write blog entries that are merely pointers to someone else&#8217;s blog entries, but I&#8217;m making an exception this time. A blogger named Lukas Biewald, in a blog called/of <a href="http://blog.doloreslabs.com" target="_blank">Dolores Labs</a>, wrote an entry called <a href="http://blog.doloreslabs.com/2009/05/the-programming-language-with-the-happiest-users/" target="_blank">The Programming Language With The Happiest Users.</a></p>
<p>He measured Twitter &#8220;tweets&#8221; that mention certain programming languages, and ascertained which were positive. I&#8217;m particularly interested because Lisp came in second place.</p>
<p>Interpreting this as &#8220;the programming langauge with the happiest users&#8221; depends on several tacit assumptions that seem dubious at best.  We don&#8217;t know that the people writing these comments are actually users.  The number of tweets sent about a language is not uncorreleated with the langauge; I bet there are fewer COBOL programmers using Twitter than Perl programmers.  Not everybody tweets about how much they like or dislike their langauge as much as everybody else. He knows this and mentions some of these problems at the end of the post, so I&#8217;m not saying this to criticize him.</p>
<p>Yes, the title of the blog post is sort of misleading, but written to get the attention of readers.  I cannot criticize him for that either, since I do the same thing.  Sometimes it backfires; a lot of people seem to have seen my post named &#8220;Why Did M.I.T. Switch from Scheme to Python&#8221; without getting my points, which were (1) they didn&#8217;t make a high-level decision to switch languages, but rather this fell out as an end consequence of decisions that had nothing to do with languages, and (2) this is only for the freshman core courses, not the whole curriculum.</p>
<p>It&#8217;s hard to draw any hard and meaningful and useful conclusions from this research, but I still find it interesting and entertaining.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/what-programming-language-do-people-speak-well-of/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Programming with Concurrency</title>
		<link>http://danweinreb.org/blog/programming-with-concurrency</link>
		<comments>http://danweinreb.org/blog/programming-with-concurrency#comments</comments>
		<pubDate>Mon, 27 Jul 2009 13:26:30 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Europe]]></category>
		<category><![CDATA[Guy L. Steele Jr.]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=184</guid>
		<description><![CDATA[New high-speed computers will have more and more cores as the years go by, and the ramp-up has started and is going very quickly.  To take advantage of those processors, some programs will need to use interesting (complicated and novel) concurrency.
But the history of concurrent software is littered with approaches that just turned out to [...]]]></description>
			<content:encoded><![CDATA[<p>New high-speed computers will have more and more cores as the years go by, and the ramp-up has started and is going very quickly.  To take advantage of those processors, some programs will need to use interesting (complicated and novel) concurrency.</p>
<p>But the history of concurrent software is littered with approaches that just turned out to be too hard to use, and the software was slow to develop and very hard to debug.  Now that we&#8217;re all in the same boat, how do we solve the software problem?</p>
<p>Many language designers think that the answer lies in pure (side-effect free) programming.  The best known, and quite practical, languages that are pure are Haskell and Erlang.</p>
<p>But many new languages are arriving based on the idea that you should use mostly side-effect-free code, and then when side-effects are needed, use transactions.  This is at least a trend if not a movement or revolution.</p>
<p>When Guy Steele came back from the <a href="http://jaoo.dk/aarhus-2008/conference/" target="_blank">JAOO Conference</a>, I asked him for a quick report, and he sent me this (very slightly copy edited, used with Guy&#8217;s permission):</p>
<blockquote><p>I was stunned by the end of the first day of JAOO 2008 when I realized that Anders Hejlsberg had given a plenary talk on C#, I had given a talk on Fortress, Bill Venners had given a talk on Scala, and Erik Meijer had given a talk on functional programming, and we had all delivered approximately the same message to this object-oriented crowd: the multicores are coming—no, they&#8217;re <em>here</em>—and the only plausible way to deal with them in the long run is to rein in the side effects inherent to the OO point of view and move as much as possible to a functional programming style with mostly-immutable data structures and implicit parallelism.</p></blockquote>
<p>I am very excited by the new Clojure language, which is a dialect of Lisp based on exactly these same principles.  Rich Hickey apparently wasn&#8217;t at JAOO, but would have found friends there!</p>
<p>Normally I don&#8217;t try to learn a language unless I&#8217;m about to actually program in it.  But it&#8217;s worth learning a language when you pick up fundamental new ideas that might be helpful (or just interesting).  Haskell is like that (thanks, Alan Bawden, for letting me know).</p>
<p>If you might have to write highly-concurrent programs in the future, I recommend that you keep your eyes on all this.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/programming-with-concurrency/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Come to the European Common Lisp Meeting!</title>
		<link>http://danweinreb.org/blog/come-to-the-european-common-lisp-meeting</link>
		<comments>http://danweinreb.org/blog/come-to-the-european-common-lisp-meeting#comments</comments>
		<pubDate>Tue, 30 Jun 2009 11:40:34 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Europe]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[ITA Software]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=168</guid>
		<description><![CDATA[The European Common Lisp Meeting will be in Hamburg, on the weekend of September 12 and 13, 2009.  I greatly enjoyed last year&#8217;s ECLM, in Amsterdam. It&#8217;s relaxed and gives you a lot of opportunity to meet great Lisp experts from all over the world. Arthur Lemmens and Edi Weitz did a superb job arranging [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://weitz.de/eclm2009/" target="_blank">European Common Lisp Meeting</a> will be in Hamburg, on the weekend of September 12 and 13, 2009.  I greatly enjoyed <a href="http://weitz.de/eclm2008/" target="_blank">last year&#8217;s ECLM, in Amsterdam</a>. It&#8217;s relaxed and gives you a lot of opportunity to meet great Lisp experts from all over the world. Arthur Lemmens and Edi Weitz did a superb job arranging for entertainment and space, and making sure everyone was happy.</p>
<p>I&#8217;m also looking forward to seeing Hamburg; I&#8217;ve never been there, and it sounds great.</p>
<p>I&#8217;m giving a talk entitled <em>A Highly-Available Large-Scale Transaction Processing System in Common Lisp. </em>It&#8217;s about the airline reservation system that we&#8217;re building at ITA Software, specifically about the issues involved in using Common Lisp, which is not widely thought of as being a language for writing large-scale transaction processing.</p>
<p>The lightning talks at the International Lisp Conference last March went so well that Edi and Arthur are trying out this format at the ECLM.  After the ILC, someone told me that at another sofware-related conference he had been to, the lightning talks fell flat: few people signed up to give talks, and they weren&#8217;t very good.  At the ILC, I thought they were nearly all great.  We learned about new tools, stories, and so on.  There was a great one about using Lisp in a Lisp-unfriendly world.  In a nutshell: if they force you to program in PERL, then run a PERL-coded Scheme interpreter and write in Scheme!  I anticipate more fun lightning talks in Hamburg!</p>
<p>So, I encourage you to join the fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/come-to-the-european-common-lisp-meeting/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>The &#8220;Worse is Better&#8221; idea and the future of Lisp</title>
		<link>http://danweinreb.org/blog/the-worse-is-better-idea-and-the-future-of-lisp</link>
		<comments>http://danweinreb.org/blog/the-worse-is-better-idea-and-the-future-of-lisp#comments</comments>
		<pubDate>Sun, 07 Jun 2009 14:35:28 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Richard Gabriel]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=157</guid>
		<description><![CDATA[The tag line for the International Lisp Conference 2009 was Lisp: The Next 50 Years.  I am very interested in the future of Lisp, and hope to be one of many participants in creating that future.  A widely-read paper from 1991 introduced the world to the phrase and philosophy called Worse is Better, and says [...]]]></description>
			<content:encoded><![CDATA[<p>The tag line for the <a href="http://www.international-lisp-conference.org/2009/index" target="_blank">International Lisp Conference 2009</a> was Lisp: The Next 50 Years.  I am very interested in the future of Lisp, and hope to be one of many participants in <a href="http://ilc2009.scheming.org/" target="_blank">creating that future</a>.  A widely-read paper from 1991 introduced the world to the phrase and philosophy called <em>Worse is Better</em>, and says that this philosophy should be used for the design of the next Lisp.  What does that mean, and what parts of the argument still apply and should guide us?<br />
<strong><br />
Richard Gabriel and <em>Worse is Better</em></strong></p>
<p><a href="http://en.wikipedia.org/wiki/Richard_Gabriel" target="_blank">Richard P. Gabriel</a> is a brilliant computer scientist, probably best known for his company <a href="http://en.wikipedia.org/wiki/Lucid_Inc." target="_blank">Lucid, Inc.,</a> which produced an excellent <a href="http://en.wikipedia.org/wiki/Common_lisp" target="_blank">Common Lisp</a> implementation, and later developed a sophisticated software development environment called Energize.</p>
<p><a href="http://dreamsongs.com/" target="_blank">He has written extensively</a> about the process by which new technological ideas move to the marketplace.  His ideas about this are unique and very much worth learning.  The most well worked-out version of his thoughts are in his book, <a href="http://dreamsongs.com/Files/PatternsOfSoftware.pdf" target="_blank">Patterns of Software</a>, which I recommend highly.</p>
<p>His first essay on this topic is called <a href="http://dreamsongs.com/WIB.html" target="_blank">Lisp: Good News, Bad News, How to Win Big</a>, originally published in 1989.  It&#8217;s primarily about why the Lisp language was not succeeding as a vehicle for the delivery of practical applications.  It examines Lisp&#8217;s successes and apparent failures, and suggests how to improve things.  I find it very accurate and thoughtful, and holds up well over time.</p>
<p>The part that got the widest attention was Section 2.1, &#8220;The Rise of Worse is Better.&#8221;  <a href="http://www.jwz.org/" target="_blank">Jamie Zawinsky</a>, then of Lucid, forwarded this section to many people, and soon it was redistributed very widely.  It became, in effect, its own paper, generally known as <a href="http://www.jwz.org/doc/worse-is-better.html" target="_blank"><em>Worse is Better</em></a>.  Do a web search on <a href="http://en.wikipedia.org/wiki/Worse_is_better" target="_blank">that phrase</a> and you&#8217;ll find all kinds of commentary.</p>
<p>It characterizes a school of design which Gabriel attributes to MIT and Stanford and calls &#8220;the right thing&#8221;.  He contrasts this with what he calls the &#8220;worse-is-better&#8221; philosophy, which he says &#8220;is only slightly different&#8221;.  Many commentators have oversimplified and overstressed the dichotomy, and so I strongly recommend that you read the original four points that he associates with each philosophy.  You&#8217;ll see that his characterization is careful and nuanced.</p>
<p>The phrase &#8220;Worse is Better&#8221; is rather over-the-top, and I think some people have misinterpreted the point because of that name.  I sympathize with Gabriel.  If you follow my own blog, you&#8217;ll see that I use somewhat provocative names for the articles, in order to attract readers.  Sometimes it backfires.  In my case, I used <a href="http://danweinreb.org/blog/why-did-mit-switch-from-scheme-to-python" target="_blank">&#8220;Why Did M.I.T. Switch from Scheme to Python?&#8221;</a> for an entry whose point was that the switch is not what&#8217;s important.  But perhaps since it was the title, people commented mostly on the language issue!  Oops.  Some of the commentary on <em>Worse is Better</em> gets confused and thinks the two philosophies are simple opposites, but it&#8217;s much more subtle than that.</p>
<p><em>Worse is Better</em> contains a story, which starts: &#8220;Two famous people, one from MIT and another from Berkeley (but working on Unix) once met to discuss operating system issues.&#8221;  He wrote the story based on an oral account from me.  In fact, the &#8220;MIT guy&#8221; was me, and the &#8220;New Jersey guy&#8221; (from Berkeley; see the paper for why) was <a href="http://en.wikipedia.org/wiki/Bill_Joy" target="_blank">Bill Joy</a>.</p>
<p>His account is basically right.  About the phrase &#8220;two famous people&#8221;, Bill Joy is far more famous than I am (see the current best-selling book, &#8220;Outliers&#8221;, for example).  Neither of us said &#8220;it takes a tough man to make a tender chicken&#8221; (a line from an old TV commercial), as far as I remember.  If you want to know about the issue that he spells &#8220;PC-loser-ing&#8221;, see the excellent 1989 paper <a href="http://www.hack.org/mc/texts/pclsr.txt" target="_blank">PCLSRing: Keeping Process State Modular</a>, by my friend Alan Bawden.  It has been described as &#8220;an unpublished but influential note by Bawden&#8221;, and has been widely cited.  (The <a href="http://en.wikipedia.org/wiki/PCLSRing" target="_blank">general concept of PCLSR </a>has to do with forcing a thread of execution to be X-consistent, for some level of abstraction X, even if the thread is operating below the level of X.)</p>
<p>Gabriel&#8217;s section ends: &#8220;But, one can conclude only that the Lisp community needs to seriously rethink its position on Lisp design. I will say more about this later.&#8221;</p>
<p><strong>What does this mean for the future of Lisp?</strong></p>
<p>The paper is about Lisp, but if we look carefully, it doesn&#8217;t bring the &#8220;worse is better&#8221; point to bear on Lisp very much.</p>
<p>Section 3.6, &#8220;The Next Lisp&#8221;, starts: &#8220;I think there will be a next Lisp. This Lisp must be carefully designed, using the principles for success we saw in worse-is-better&#8230;.  The kernel should emphasize implementational simplicity, but not at the expense of interface simplicity. Where one conflicts with the other, the capability should be left out of the kernel.&#8221;</p>
<p>He goes on: &#8220;Some aspects of the extreme dynamism of Common Lisp should be reexamined, or at least the tradeoffs reconsidered.&#8221;  He gives an example of correct but undesirable Lisp code, in which a function redefines top-level functions.</p>
<p>It&#8217;s hard for a compiler to optimize code in the presence of this kind of runtime behavior.  There&#8217;s no need to write programs this way.  Lisp has better ways to do what this code fragment is trying to do, and any competent Common Lisp programmer knows that and knows the proper way.  Therefore, the next Lisp should consider omitting this capability.</p>
<p>Reducing extreme dynamism, way out at the edges, sounds promising, and should be considered carefully.  But this specific example is the only one he gives!</p>
<p>The rest of the section is about how to layer the implementation.  All of this is great, but it does not seem to have anything to do with &#8220;Worse is Better&#8221;!</p>
<p>The next section is &#8220;Help Applications Writers Win&#8221;, and clearly the right thing philosophy makes things better for application writers than the worse is better philosophy, all other things being equal.  The point of the paper is that all other things aren&#8217;t equal because the worse is better philosophy should help get the system done on time and help it spread.  But that&#8217;s just the overall thesis of the paper, not specific to Lisp at all.</p>
<p>Why does this paper spend so much time on the Worse is Better philosophy, when it bears so little on Lisp?</p>
<p>I&#8217;ll go out on a limb and speculate that this was very much on Gabriel&#8217;s mind at the time.  He felt it was relevant to Lisp because MIT/Stanford people were frustrated that Unix seemed to be ignoring lessons and techniques that had been developed, and widely used, over so many years.  He might even have been thinking of the competition between his own Lucid Lisp product and its competitors.  But I ought not put words in his mouth.</p>
<p>Gabriel later wrote much more about the <em>Worse is Better</em> philosophy.  He famously conducted a debate with himself, writing the other side under the pseudonym &#8220;Nickieben Bourbaki&#8221; (an allusion to <a href="http://en.wikipedia.org/wiki/Bourbaki" target="_blank">Nicolas Bourbaki</a>).  These include <a href="http://dreamsongs.com/Files/worse-is-worse.pdf" target="_blank">Worse is Better is Worse</a>, <a href="http://dreamsongs.com/Files/IsWorseReallyBetter.pdf" target="_blank">Is Worse Really Better?</a>, and <a href="http://dreamsongs.com/SiteMap.html" target="_blank">even more</a>.</p>
<p>What do you think: do the ideas in the <em>Worse is Better</em> series of papers bear on the question of the future of Lisp?  I&#8217;d appreciate if you&#8217;d take a look at <a href="http://dreamsongs.com/WIB.html" target="_blank">Gabriel&#8217;s paper</a> before answering!</p>
<p>P.S. Dept. of Fair Attribution: I borrowed some phrases of text from various Wikipedia articles.  <a href="http://ilc2009.scheming.org/" target="_blank">Look here</a> for more general discussions about the future of Lisp.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/the-worse-is-better-idea-and-the-future-of-lisp/feed</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Why Did M.I.T. Switch from Scheme to Python?</title>
		<link>http://danweinreb.org/blog/why-did-mit-switch-from-scheme-to-python</link>
		<comments>http://danweinreb.org/blog/why-did-mit-switch-from-scheme-to-python#comments</comments>
		<pubDate>Sun, 10 May 2009 13:30:15 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=148</guid>
		<description><![CDATA[I&#8217;ve been seeing mail and blog postings, particularly from people in the Lisp community, why MIT has switched from using Scheme to Python in the freshman core curriculum for the department of Electrical Engineering and Computer Science.
At the International Lisp Conference, Prof. Gerry Sussman gave a short impromptu talk explaining the new freshman curriculum.  Just [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been seeing mail and blog postings, particularly from people in the Lisp community, why MIT has switched from using Scheme to Python in the freshman core curriculum for the department of Electrical Engineering and Computer Science.</p>
<p>At the <a href="http://www.international-lisp-conference.org/2009/index" target="_blank">International Lisp Conference</a>, <a href="http://en.wikipedia.org/wiki/Gerald_Jay_Sussman" target="_blank">Prof. Gerry Sussman</a> gave a short impromptu talk explaining the <a href="http://www.eecs.mit.edu/ug/newcurriculum/index.html" target="_blank">new freshman curriculum</a>.  Just to get a second opinion, I later called <a href=" http://eecsfacweb.mit.edu/facpages/white.html" target="_blank">Prof. Jacob White</a>, one of the designers of the curriculum and lecturers for the core courses.  (Digression: Jacob and I have been close friends since I was six years old!)  He confirmed Gerry&#8217;s description.</p>
<p>Asking why they changed languages is, in some sense, the wrong question.</p>
<p>The freshman software engineering course, since 1985, has been based on the book <a href="http://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs">Structure and Interpretation of Computer Programs</a> (<a href="http://mitpress.mit.edu/sicp/">known as SICP</a>), which uses Scheme.  The course is now nearly thirty years old.  Engineering has changed quite a lot in thirty years.  Since 1995, Gerry and his co-author <a href="http://en.wikipedia.org/wiki/Hal_Abelson" target="_blank">Prof. Hal Abelson</a> have advocated changing the freshman curriculum radically, not basing it on SICP.</p>
<p>In 1980, computer engineering was based on starting with clearly-defined things (primitives or small programs) and using them to build larger things that ended up being clearly-defined.  Composition of these fragments was the name of the game.</p>
<p>However, nowadays, a real engineer is given a big software library, with a 300-page manual that&#8217;s full of errors.  He&#8217;s also given a robot, whose exact behavior is extremely hard to characterize (what happens when a wheel slips?). The engineer must learn to perform scientific experiments to find out how the software and hardware actually work, at least enough to accomplish the job at hand.  Gerry pointed out that we may not like it this way (&#8220;because we&#8217;re old fogies&#8221;), but that&#8217;s the way it is, and M.I.T. has to take that into account.</p>
<p>The new approach also has the big advantage that it combines computer science with electrical engineering, whereas the old one taught them as entirely separate disciplines.  This way, students see how they interrelate.  Also, as Jacob points out, some of the same macro-principles apply to both software and hardware, and the students see this illustrated.  There is extensive lab work, making robots and mobile applications.</p>
<p>It just so happens that the robotics substrate software that comes with the system they&#8217;re using is programmed in Python.  Similarly, the mobile software environment is based on Python.  (Or, at least, the original plan was to use such a substrate, although it may have changed for various business reasons.)</p>
<p>Changing programming languages was absolutely not a goal of the curriculum change.  It was merely the result of the consequences of various decisions.  We can always discuss how it came to be that the robots and mobile devices are using Python instead of some other language, but that&#8217;s not the question being addressed here.  M.I.T. has nothing against Scheme. (And, of course, M.I.T. does teach classic software engineering, later in the curriculum.)</p>
<p>(<a href="http://www.mitadmissions.org/topics/learning/coursework/the_end_of_an_era_1.shtml">Here&#8217;s another take on this topic.</a>)</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/16c4697e-0162-4e85-ac13-b671a11e63c0/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=16c4697e-0162-4e85-ac13-b671a11e63c0" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/why-did-mit-switch-from-scheme-to-python/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>The International Lisp Conference 2009 Succeeded!</title>
		<link>http://danweinreb.org/blog/the-international-lisp-conference-2009-succeeded</link>
		<comments>http://danweinreb.org/blog/the-international-lisp-conference-2009-succeeded#comments</comments>
		<pubDate>Fri, 27 Mar 2009 11:24:14 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[ITA Software]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Common Lisp]]></category>
		<category><![CDATA[David Moon]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[Pascal Costanza]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=136</guid>
		<description><![CDATA[Last December, I was invited to be general chair of the International Lisp Conference 2009.  Since then I have done a great deal of work, and it has finally all paid off.  The conference ran from last Sunday to Wednesday, and it went perfectly!  I can hardly believe it.  And we got at least 215 [...]]]></description>
			<content:encoded><![CDATA[<p>Last December, I was invited to be general chair of the <a href="http://www.international-lisp-conference.org/2009" target="_blank">International Lisp Conference 2009</a>.  Since then I have done a great deal of work, and it has finally all paid off.  The conference ran from last Sunday to Wednesday, and it went perfectly!  I can hardly believe it.  And we got at least 215 attendees, which was great!  (I had planned for 175; apologies to those of you who didn&#8217;t get a tee shirt and a tote bag.)</p>
<p>The only surprise problem was that two of the speakers were not able to show up.  However, we reallocated their time for more <a href="http://www.international-lisp-conference.org/2009/lightning" target="_blank">lightning talks</a>.  These are five-minute talks on any topic bearing on Lisp.  Three of them were approved by the program committee and are in the proceedings.  The program committee then agreed that we could post a sign-up sheet, and let anybody talk about anything appropriate.  We ended up having about twenty-five of them.  They were almost all great!  We learned about fascinating new open source libraries, fun applications, great anecdotes, and so on.</p>
<p>The lightning talks make the whole conference more participatory, rather than just &#8220;we give the talks, and you sit there and listen.&#8221;  Although I&#8217;m sorry that the two speakers were unable to present their papers, the lightning talks were great.  I recommend that other conference organizers in the future consider allocating plenty of time for such talks.</p>
<p>The Great Macro Debate went just as I had hoped. Lisp&#8217;s macros make the Lisp language extensible.  It&#8217;s only because of macros that Lisp has stayed sufficiently up-to-date to still be a relevant language after fifty years of life.  And macros are one of Lisp&#8217;s most distinguishing features, now that so many Lisp ideas have been adopted by other languages.</p>
<p>Earlier this year, I was having lunch with my former co-worker, Jeremy Brown.  He had been one of the senior engineers on the Polaris project at <a href="http://www.itasoftware.com" target="_blank">ITA Software</a>, and we had worked together closely.  (He left to start his own company, <a href="http://repinvariant.com" target="_blank">Rep Invariant.</a>)  We were talking about the use of Lisp in Polaris, and specifically about Lisp macros.  To my surprise, Jeremy opined that having macros in the language was a net drawback!  Many people have objected to macros, but Jeremy really knows all about macros; he&#8217;s a very proficient Lisp programmer, and has seen how we use macros in Polaris.</p>
<p>So I had the idea of having him debate someone about this at the Lisp conference.  Guy Steele, as program chair, took over the idea, and found people to be in the debate.  <a href="http://p-cos.net/" target="_blank">Pascal Costanza</a>, who is one of the deepest thinkers about Common Lisp these days, was Jeremy&#8217;s prime opponent.  Guy Steele himself was Pascal&#8217;s &#8220;second&#8221;, and <a href="http://dreamsongs.org/" target="_blank">Dick Gabriel</a> was Jeremy&#8217;s.  I moderated.</p>
<p>Jeremy prepared very thoroughly, with slides that presented all of his attacks, and were also very funny.  The debaters both made important real points, and kept the whole thing hilarious.  There was a great deal of contention and disagreement, to the point where audience members, unable to contain themselves, started shouting out questions and comments.  Indeed, I felt the same way myself, and misused my privilege of having a microphone to participate in the debate.  Finally Dick Gabriel said, &#8220;OK, Weinreb, enough of this.  SIt down at the table, and I&#8217;ll be the moderator!&#8221;  I replied, &#8220;Oh, thank you!  Now that I&#8217;m a panelist, I can say what I want to into this other microphone!&#8221; Sadly, we didn&#8217;t videotape this, but we all had a great time.</p>
<p>David Moon&#8217;s talk about how to do macros for a language with syntax was very innovative, to the point where, in his introduction, Dave said &#8220;some of you may think this is mad scientist stuff&#8221;!  It&#8217;s certainly fascinating, and the people who had worked on Dylan (and therefore grappled with the same problems) were particularly interested and felt that it looked very promising.</p>
<p><a href="http://sgouros.com/" target="_blank">Tom Sgouros</a> performed his one-man, one-robot show: &#8220;Judy, or, What Is It <span style="text-decoration: underline;">Like</span> To Be A Robot&#8221;.  I had seen this once at ITA (Tom works at ITA) and knew that it was perfect for this audience.  It&#8217;s about the concept of intelligent robots, and the nature of consciousness, and it&#8217;s also very clever and funny.  Tom did a wonderful job.</p>
<p>I&#8217;ve been catching up on my sleep (really).  But now I&#8217;m busy again!  This year&#8217;s family opera show, The Weaver&#8217;s Wedding, is opening tomorrow.  I&#8217;ve been involved in the North Cambridge Family Opera company for about ten years.  While the conference was going on, my wife Cheryl was working very long hours of the day and evening getting the set and props finished, teaching the stagehands what to do, and so on.  (As you can imagine, it&#8217;s been rather crazy around at home, with both of those things going on at once!)  I hope to blog more about the conference and papers in the future.  In the meantime, I expect some of the attendees will write their own descriptions.</p>
<p>Thanks again to all our sponsors, who made possible the relatively-low registration.  Special thanks to ITA Software, our Platinum sponsor, and to my wonderful boss, Sundar Narasimhan (CTO and Chief Architect of Polaris), for allowing me to take part time off from my work at ITA in order to run the conference.</p>
<p>Thanks <em>very </em>much to everyone who attended!</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://reblog.zemanta.com/zemified/3f9610b3-27fb-4bc2-930b-55fa570ce394/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=3f9610b3-27fb-4bc2-930b-55fa570ce394" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/the-international-lisp-conference-2009-succeeded/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Registration is now open for the International Lisp Conference</title>
		<link>http://danweinreb.org/blog/registration-is-now-open-for-the-international-lisp-conference</link>
		<comments>http://danweinreb.org/blog/registration-is-now-open-for-the-international-lisp-conference#comments</comments>
		<pubDate>Wed, 04 Feb 2009 15:47:58 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[ITA Software]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=111</guid>
		<description><![CDATA[Registration for the International Lisp Conference, 2009, is now open.
The conference will be from Sunday, March 22 through Wednesday, March 25, at the Stata Center, MIT, Cambridge, MA.
It features:

Gerald Sussman, Shriram Krishnamurthi, and David Moon as invited speakers
Five tutorials (no extra charge)
Fifteen technical papers
Seven demonstrations
Lightning talks (you can give you own; first-come, first-served)
An all-star panel [...]]]></description>
			<content:encoded><![CDATA[<p>Registration for the International Lisp Conference, 2009, is now open.</p>
<p>The conference will be from Sunday, March 22 through Wednesday, March 25, at the Stata Center, MIT, Cambridge, MA.</p>
<p>It features:</p>
<ul>
<li>Gerald Sussman, Shriram Krishnamurthi, and David Moon as invited speakers</li>
<li>Five tutorials (no extra charge)</li>
<li>Fifteen technical papers</li>
<li>Seven demonstrations</li>
<li>Lightning talks (you can give you own; first-come, first-served)</li>
<li>An all-star panel on the future of Lisp</li>
<li>The Great Macro Debate</li>
<li>Birds of a feather sessions, and other informal discussions</li>
<li>Banquet at the Hyatt-Regency, with special entertainment (no extra charge)</li>
</ul>
<p>Come meet the top Lisp experts and practitioners in the world. Learn how to get the most out of Lisp.  Find about about the latest developments from research and industry.  The conference is a rare opportunity for face-to-face interaction, sharing knowledge and ideas with the experts of the worldwide Lisp community.  Students are especially welcome.  Everyone will have a great time!</p>
<p><a href="http://www.international-lisp-conference.org/2009/" target="_blank">Here&#8217;s where to find all the information.</a></p>
<p>Sponsored by:</p>
<ul>
<li>ITA Software, Inc.</li>
<li>Franz Inc.</li>
<li>LispWorks Limited</li>
<li>Clozure, Inc.</li>
<li>Ravenbrook Limited</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/registration-is-now-open-for-the-international-lisp-conference/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lisp Conference Schedule Is Announced</title>
		<link>http://danweinreb.org/blog/international-lisp-conference-schedule-announced</link>
		<comments>http://danweinreb.org/blog/international-lisp-conference-schedule-announced#comments</comments>
		<pubDate>Thu, 22 Jan 2009 12:27:11 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=96</guid>
		<description><![CDATA[The schedule for the International Lisp Conference has been posted.  Registration will open shortly.
If you have any interesting in giving a short/lightning talk, you&#8217;ll be able to sign up for that at the conference.  You might want to let me know, too, but you need not.
A short talk can be on anything bearing on Lisp, [...]]]></description>
			<content:encoded><![CDATA[<p>The schedule for the International Lisp Conference has been <a href="http://ilc09.org" target="_blank">posted</a>.  Registration will open shortly.</p>
<p>If you have any interesting in giving a short/lightning talk, you&#8217;ll be able to sign up for that at the conference.  You might want to let me know, too, but you need not.</p>
<p>A short talk can be on anything bearing on Lisp, Scheme, or related languages.  It need not be on a profound topic or a research project. It can be as simple as:</p>
<ul>
<li>Here&#8217;s a good application that we wrote in Lisp.</li>
<li>Here&#8217;s a useful Lisp library that you might want to know about.</li>
<li>Here are some interesting things about my Lisp development tool.</li>
<li>I have this provocative/outrageous opinion.</li>
<li>Please give me feedback about this idea.</li>
<li>Alice and I will debate the following point.</li>
</ul>
<p>The ideal duration is five minutes, but the talk could be extremely short, or up to about ten minutes.  There&#8217;s no Q and A immediately afterwards.  You can meet up with interested people later to continue talking, answer questions, etc.</p>
<p><a href="http://perl.plover.com/lt/osc2003/lightning-talks.html" target="_blank">This </a>is an informative web page about short/lightning talks in general, and <a href="http://www.perl.com/pub/a/2004/07/30/lightningtalk.html" target="_blank">this </a>is a longer one with advice.  But all you have to do is talk for a little while, so don&#8217;t worry.</p>
<p>I hope you can come to the conference!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/international-lisp-conference-schedule-announced/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AgentSheets: Learning Programming, for middle-schoolers</title>
		<link>http://danweinreb.org/blog/agentsheets-learning-programming-for-middle-schoolers</link>
		<comments>http://danweinreb.org/blog/agentsheets-learning-programming-for-middle-schoolers#comments</comments>
		<pubDate>Sat, 03 Jan 2009 15:36:14 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=81</guid>
		<description><![CDATA[The Scalable Game Design project is aimed at getting computer science into middle schools, to get kids interested in information technology through their natural interest in games.  A principal software tool of the project is AgentSheets, which lets you make your own simulation games without learning the syntax of a programming language.
If you know [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://scalablegamedesign.cs.colorado.edu/wiki/Main_Page">Scalable Game Design</a> project is aimed at getting computer science into middle schools, to get kids interested in information technology through their natural interest in games.  A principal software tool of the project is AgentSheets, which lets you make your own simulation games without learning the syntax of a programming language.</p>
<p>If you know a kid in middle school who wants to make his or her own game, or just learn about programming, I recommend that you take a look at this!</p>
<p>The general concept is a bit like some systems you may have seen before, such as the visual programming languages provided with Lego Mindstorms.  However, this requires no special hardware, and the specifics look a lot more interesting and flexible to me than anything I&#8217;ve seen along these lines.</p>
<p>An example of what you can do is the classic arcade game <a href="http://en.wikipedia.org/wiki/Frogger">Frogger</a> (developed by Konami for Sega/Gremlin in 1981).  <a href="http://scalablegamedesign.cs.colorado.edu/wiki/Frogger_Design">This tutorial</a> shows how to do it in AgentSheets.</p>
<p>There is a <a href="http://drop.io/dlweinreb/asset/the-3rd-hour">three-minute movie</a> showing kids using AgentSheets. It gives a good sense of the kind of game and the level of complexity that AgentSheets is suitable for (although it doesn&#8217;t demonstrate programming itself).</p>
<p>You can also read <a href="http://scalablegamedesign.cs.colorado.edu/wiki/Publications">research papers about the project</a>.</p>
<p>To try it out, you can <a href="http://www.agentsheets.com/products/trial/index.html">download a free trial version</a> with a ten-day license, for MacOS X or Windows.  It costs $120 in single units, less for educators or if you get ten licenses.</p>
<p>As it happens, it&#8217;s written in Common Lisp, which is how I came to hear about it.  But that doesn&#8217;t matter as far as using it is concerned.</p>
<p>The principal investigator is <a href="http://www.cs.colorado.edu/~ralex/">Prof. Alexander Repenning</a> of the University of Colorado.  He has worked at <a href="http://www.parc.xerox.com/">Xerox PARC</a> and <a href="http://www.hp.com">HP</a>, and he has collaborated with researchers at the <a href="http://el.www.media.mit.edu/groups/el/">Epistemology and Learning Group</a> of the MIT Media Lab, LOGO, and <a href="http://www.sri.com">SRI</a> to explore <a href="http://www.cs.colorado.edu/~l3d/systems/legosheets/">programmable LOGO toys</a>.  He has been involved in <a href="http://www.cs.colorado.edu/~ralex/Portfolio.pdf">many other projects</a> as well.</p>
<p>Thanks for telling me about this, Alex!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/agentsheets-learning-programming-for-middle-schoolers/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
