<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Lisp50 Notes part III: McCarthy Reaffirms the Importance of Having Access to the Abstract Syntax</title>
	<atom:link href="http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/feed/" rel="self" type="application/rss+xml" />
	<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/</link>
	<description>(notes from an average programmer studying the hard stuff)</description>
	<lastBuildDate>Thu, 21 May 2009 01:17:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Dan Weinreb</title>
		<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/#comment-2511</link>
		<dc:creator>Dan Weinreb</dc:creator>
		<pubDate>Sat, 20 Dec 2008 22:42:27 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/?p=391#comment-2511</guid>
		<description>You are entirely right about Guy Steele&#039;s amazing diplomatic skills, and why he was exactly the right person to lead the Common Lisp effort.  He&#039;s also the best writer of programming language descriptions and standards in the world.  In addition to &quot;Common Lisp: The Language&quot;, he was responsible for a lot of the writing of the orignial Java Language specification, and his book with Harbison about C is in many ways the definitive practical standard (it took into account the differences between the real implementations of C very well).

I like what McCarthy said about having many surface syntaxes for one underlying abstract syntax.  There&#039;s a lot you can do with this idea.  A simple example would be a representation designed for people reading code, which could use fonts and color and graphic layout (it would have to be done tastefully) and provide easy ways to see cross-reference information (e.g. let you click on the name of a function to get to its definition).  You might want to have a language that could be written both in a Lispy style (with parens and prefix syntax) as well as a C/Java style.</description>
		<content:encoded><![CDATA[<p>You are entirely right about Guy Steele&#8217;s amazing diplomatic skills, and why he was exactly the right person to lead the Common Lisp effort.  He&#8217;s also the best writer of programming language descriptions and standards in the world.  In addition to &#8220;Common Lisp: The Language&#8221;, he was responsible for a lot of the writing of the orignial Java Language specification, and his book with Harbison about C is in many ways the definitive practical standard (it took into account the differences between the real implementations of C very well).</p>
<p>I like what McCarthy said about having many surface syntaxes for one underlying abstract syntax.  There&#8217;s a lot you can do with this idea.  A simple example would be a representation designed for people reading code, which could use fonts and color and graphic layout (it would have to be done tastefully) and provide easy ways to see cross-reference information (e.g. let you click on the name of a function to get to its definition).  You might want to have a language that could be written both in a Lispy style (with parens and prefix syntax) as well as a C/Java style.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ted</title>
		<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/#comment-2401</link>
		<dc:creator>Ted</dc:creator>
		<pubDate>Thu, 30 Oct 2008 06:24:57 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/?p=391#comment-2401</guid>
		<description>I have no idea what McCarthy was actually talking about, but C# 3.0&#039;s lambda expressions are a practical example of different syntaxes for the same semantics.  You can write a simple expression in code with x =&gt; 2 * x; but also Expression.Lambda(Expression.Add(xParam, Expression.Constant(typeof(double), 2.0)), xParam).Compile(); using an API.  They have an interesting interplay that&#039;s typical of two-sided economies: make it very easy to write expressions using the =&gt; syntax so people can do it without thinking, but also make it possible to analyze them using the AST API which they do infrequently so it can be more cumbersome.  S-expressions are a middle ground where it&#039;s a little harder to write them but they&#039;re also a little easier to manipulate.</description>
		<content:encoded><![CDATA[<p>I have no idea what McCarthy was actually talking about, but C# 3.0&#8217;s lambda expressions are a practical example of different syntaxes for the same semantics.  You can write a simple expression in code with x =&gt; 2 * x; but also Expression.Lambda(Expression.Add(xParam, Expression.Constant(typeof(double), 2.0)), xParam).Compile(); using an API.  They have an interesting interplay that&#8217;s typical of two-sided economies: make it very easy to write expressions using the =&gt; syntax so people can do it without thinking, but also make it possible to analyze them using the AST API which they do infrequently so it can be more cumbersome.  S-expressions are a middle ground where it&#8217;s a little harder to write them but they&#8217;re also a little easier to manipulate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/#comment-2361</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Sat, 25 Oct 2008 19:58:33 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/?p=391#comment-2361</guid>
		<description>@Fare:

Hmm. Good points. I did not know they were trying to mix different languages together in the same modules. I thought what Stallman talked about was straight translation: compile X into Guile, and decompile Guile to X, not part X and part Guile (except for the original GNU project which likely would&#039;ve been written in C/C++). As I recall he didn&#039;t sound hopeful about the Guile-to-X translation aspect, but he at least wanted to accomplish X-to-Guile translation so that people could write extensions in their own language, and Guile would act as a kind of universal VM. It seems to me that in a language like Guile that a compiler could put in metadata that would add some description of semantics so that decompilers could use some heuristics about what was going on. The problem becomes what to do with future languages that didn&#039;t exist at the time an extension was written. Metadata likely would not anticipate the needs of these languages. It brings to mind what Alan Kay said, &quot;We haven&#039;t figured out what computing is yet,&quot; hence the need for more research, and this difficulty you describe is definitely a sign of that.</description>
		<content:encoded><![CDATA[<p>@Fare:</p>
<p>Hmm. Good points. I did not know they were trying to mix different languages together in the same modules. I thought what Stallman talked about was straight translation: compile X into Guile, and decompile Guile to X, not part X and part Guile (except for the original GNU project which likely would&#8217;ve been written in C/C++). As I recall he didn&#8217;t sound hopeful about the Guile-to-X translation aspect, but he at least wanted to accomplish X-to-Guile translation so that people could write extensions in their own language, and Guile would act as a kind of universal VM. It seems to me that in a language like Guile that a compiler could put in metadata that would add some description of semantics so that decompilers could use some heuristics about what was going on. The problem becomes what to do with future languages that didn&#8217;t exist at the time an extension was written. Metadata likely would not anticipate the needs of these languages. It brings to mind what Alan Kay said, &#8220;We haven&#8217;t figured out what computing is yet,&#8221; hence the need for more research, and this difficulty you describe is definitely a sign of that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Faré</title>
		<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/#comment-2359</link>
		<dc:creator>Faré</dc:creator>
		<pubDate>Sat, 25 Oct 2008 07:59:03 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/?p=391#comment-2359</guid>
		<description>@Mark Miller

The GUILE guys quickly realized that the difficulty with language translation is not syntax but semantics. A scheme with C syntax doesn&#039;t bring you much, and neither does a C with scheme syntax. Mixing C code and Scheme does help, but then you&#039;re going to spend a lot of time getting one to cope with the assumptions of the other regarding memory &amp; register discipline.

Platforms like the JVM or .NET help move some concerns away by handling memory management and low-level calling-conventions for you -- but they won&#039;t help you bridge differences in object/class models, method dispatch, scoping, rebinding, continuations, non-determinism, mutability, concurrency, persistence, etc.

Ask Tom Lord who worked on Guile, or the PyPy guys who have a system to describe language semantics, or anyone who has implemented a particular language translator: the devil is in the details, and a compiler that gives you the &quot;exact same&quot; semantics modulo interpretation in a simulated environment is very different from something that would try to get the &quot;high-level idea&quot; and make an &quot;analogous&quot; program in a different environment (see Hofstadter&#039;s book on fluid concepts for how hard the latter thing is even for trivial languages).</description>
		<content:encoded><![CDATA[<p>@Mark Miller</p>
<p>The GUILE guys quickly realized that the difficulty with language translation is not syntax but semantics. A scheme with C syntax doesn&#8217;t bring you much, and neither does a C with scheme syntax. Mixing C code and Scheme does help, but then you&#8217;re going to spend a lot of time getting one to cope with the assumptions of the other regarding memory &amp; register discipline.</p>
<p>Platforms like the JVM or .NET help move some concerns away by handling memory management and low-level calling-conventions for you &#8212; but they won&#8217;t help you bridge differences in object/class models, method dispatch, scoping, rebinding, continuations, non-determinism, mutability, concurrency, persistence, etc.</p>
<p>Ask Tom Lord who worked on Guile, or the PyPy guys who have a system to describe language semantics, or anyone who has implemented a particular language translator: the devil is in the details, and a compiler that gives you the &#8220;exact same&#8221; semantics modulo interpretation in a simulated environment is very different from something that would try to get the &#8220;high-level idea&#8221; and make an &#8220;analogous&#8221; program in a different environment (see Hofstadter&#8217;s book on fluid concepts for how hard the latter thing is even for trivial languages).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/#comment-2347</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Fri, 24 Oct 2008 22:21:44 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/?p=391#comment-2347</guid>
		<description>My conception of what McCarthy was talking about is like what Josh said. If you read the &lt;a href=&quot;http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf&quot; rel=&quot;nofollow&quot;&gt;Lisp 1.5 Programmer&#039;s Manual&lt;/a&gt; McCarthy uses a &quot;prettier&quot; syntax for some of the expressions, which he calls m-expressions. As far as I can tell there&#039;s a direct mapping between the s-expressions and m-expressions, so there would be a way to translate between the two.

Richard Stallman, as I&#039;m sure you&#039;re aware, pursued a similar goal by creating Guile. In a speech you talked about once he said he created Guile extensions for all GNU projects, with the idea of having language-X-to-Guile translators, so that people could use any language they wanted to extend features in a GNU project. I think he might&#039;ve also mentioned that he hoped there would be Guile-to-language-X translators as well so that people could understand each other&#039;s code without having to understand the other&#039;s language. I have no idea how well that whole idea took off. Anyone know?</description>
		<content:encoded><![CDATA[<p>My conception of what McCarthy was talking about is like what Josh said. If you read the <a href="http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf" rel="nofollow">Lisp 1.5 Programmer&#8217;s Manual</a> McCarthy uses a &#8220;prettier&#8221; syntax for some of the expressions, which he calls m-expressions. As far as I can tell there&#8217;s a direct mapping between the s-expressions and m-expressions, so there would be a way to translate between the two.</p>
<p>Richard Stallman, as I&#8217;m sure you&#8217;re aware, pursued a similar goal by creating Guile. In a speech you talked about once he said he created Guile extensions for all GNU projects, with the idea of having language-X-to-Guile translators, so that people could use any language they wanted to extend features in a GNU project. I think he might&#8217;ve also mentioned that he hoped there would be Guile-to-language-X translators as well so that people could understand each other&#8217;s code without having to understand the other&#8217;s language. I have no idea how well that whole idea took off. Anyone know?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://lispy.wordpress.com/2008/10/23/lisp50-notes-part-iii-mccarthy-reaffirms-the-importance-of-having-access-to-the-abstract-syntax/#comment-2316</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Thu, 23 Oct 2008 19:21:28 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/?p=391#comment-2316</guid>
		<description>Regarding the alternate abstract syntaxes, here&#039;s my guess.  Some people suggest having two different compilable syntaxes for a Lisp -- one with more semantics that&#039;s friendlier, with fewer parentheses, some more notation, etc.  The other would be the raw AST-style s-expressions.  

This way, the real language geek can write his macros that write Lisp programs because it&#039;s much easier when the language IS its AST.  Then, the plebes who don&#039;t understand crazy macros can *use* his awesome code in their pretty-syntax code.

If it was well-designed, the compiler could transform from one syntax to the other and back, so you could really interchange them.  There have been a variety of suggestions on how to remove the parentheses in Lisp while preserving the &quot;syntax&quot;.  None have caught on.

This may not be what he meant, but it was the only thing that came to my mind.</description>
		<content:encoded><![CDATA[<p>Regarding the alternate abstract syntaxes, here&#8217;s my guess.  Some people suggest having two different compilable syntaxes for a Lisp &#8212; one with more semantics that&#8217;s friendlier, with fewer parentheses, some more notation, etc.  The other would be the raw AST-style s-expressions.  </p>
<p>This way, the real language geek can write his macros that write Lisp programs because it&#8217;s much easier when the language IS its AST.  Then, the plebes who don&#8217;t understand crazy macros can *use* his awesome code in their pretty-syntax code.</p>
<p>If it was well-designed, the compiler could transform from one syntax to the other and back, so you could really interchange them.  There have been a variety of suggestions on how to remove the parentheses in Lisp while preserving the &#8220;syntax&#8221;.  None have caught on.</p>
<p>This may not be what he meant, but it was the only thing that came to my mind.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
