<?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/"
		>
<channel>
	<title>Comments on: What Lisp &amp; Assembly instill</title>
	<atom:link href="http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/feed/" rel="self" type="application/rss+xml" />
	<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=what-lisp-assembly-instill</link>
	<description>Journal of a Pakistani Tech Entrepreneur</description>
	<lastBuildDate>Tue, 29 Dec 2009 07:26:25 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Bob</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-188</link>
		<dc:creator>Bob</dc:creator>
		<pubDate>Sun, 13 Jul 2008 02:18:30 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-188</guid>
		<description>THat was at Ralph, by the way</description>
		<content:encoded><![CDATA[<p>THat was at Ralph, by the way</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-187</link>
		<dc:creator>Bob</dc:creator>
		<pubDate>Sun, 13 Jul 2008 02:17:42 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-187</guid>
		<description>Scheme (a Lisp) has first-class continuations, which in assembly terms are like return addresses that can be returned to any number of times. They&#039;re a bit more than that, as they have closure and whatnot, but that&#039;s the basic idea.

This has some nice effects for web programming. You can encode a continuation into a dynamically produced page as a URL, and when that URL is followed the continuation is invoked, so control passes back to where the function that produced the page was called. This makes the process of sending out a page over HTTP and getting back a response a single function call.

You get more control than that, though, because the continuations are values, so access to them, their lifetime etc, can be managed. 

For instance, something like an order form, which may have multiple steps, but where the order can only be placed once, is made a real headache by such things as the &quot;back&quot; button and the &quot;open in new tab/window&quot; option. 

This kind of thing still flusters many successful websites. Making continuations first class helps with this problem. The state(s) of the interaction is saved between pages transparently, so all of the stages can be accessed at any time in a seamless manner, until the order has completed. Then the application can destroy the continuations associated with all the intermediate steps, making them inaccessible. So things like accidental double orders or other confusions are less likely to happen.

I don&#039;t know of any websites that have actually used this, but I think it has promise nevertheless.

For more about this, see:

http://www.cs.brown.edu/~sk/Publications/Papers/Published/khmgpf-impl-use-plt-web-server-journal/paper.pdf</description>
		<content:encoded><![CDATA[<p>Scheme (a Lisp) has first-class continuations, which in assembly terms are like return addresses that can be returned to any number of times. They&#8217;re a bit more than that, as they have closure and whatnot, but that&#8217;s the basic idea.</p>
<p>This has some nice effects for web programming. You can encode a continuation into a dynamically produced page as a URL, and when that URL is followed the continuation is invoked, so control passes back to where the function that produced the page was called. This makes the process of sending out a page over HTTP and getting back a response a single function call.</p>
<p>You get more control than that, though, because the continuations are values, so access to them, their lifetime etc, can be managed. </p>
<p>For instance, something like an order form, which may have multiple steps, but where the order can only be placed once, is made a real headache by such things as the &#8220;back&#8221; button and the &#8220;open in new tab/window&#8221; option. </p>
<p>This kind of thing still flusters many successful websites. Making continuations first class helps with this problem. The state(s) of the interaction is saved between pages transparently, so all of the stages can be accessed at any time in a seamless manner, until the order has completed. Then the application can destroy the continuations associated with all the intermediate steps, making them inaccessible. So things like accidental double orders or other confusions are less likely to happen.</p>
<p>I don&#8217;t know of any websites that have actually used this, but I think it has promise nevertheless.</p>
<p>For more about this, see:</p>
<p><a href="http://www.cs.brown.edu/~sk/Publications/Papers/Published/khmgpf-impl-use-plt-web-server-journal/paper.pdf" rel="nofollow">http://www.cs.brown.edu/~sk/Publications/Papers/Published/khmgpf-impl-use-plt-web-server-journal/paper.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hassan</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-146</link>
		<dc:creator>hassan</dc:creator>
		<pubDate>Wed, 14 May 2008 02:29:33 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-146</guid>
		<description>One of the few things that i hate about assembly is the branching structure. BEQ, BNE and its brothers and sisters. It could have been simple IF. The second this is the small register set. The teachers usually give huge matrices to solve on only $t0 - $t9 registers. Also the text manipulation codes takes huge time and sometimes still doesnt work.</description>
		<content:encoded><![CDATA[<p>One of the few things that i hate about assembly is the branching structure. BEQ, BNE and its brothers and sisters. It could have been simple IF. The second this is the small register set. The teachers usually give huge matrices to solve on only $t0 &#8211; $t9 registers. Also the text manipulation codes takes huge time and sometimes still doesnt work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rplevy</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-72</link>
		<dc:creator>rplevy</dc:creator>
		<pubDate>Tue, 22 Apr 2008 19:48:53 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-72</guid>
		<description>Hi Ralph,

Some people mentioned Arc, but it is very new, and is actually a new dialect of lisp built on top of Scheme.  The idea is to make a language that could last 100 years.  It was just released in kind of a pre-alpha state.

I have been experimenting with Weblocks, and would recommend it if you are interested in using Common Lisp to develop web sites.  It makes use of Lisp&#039;s ability to pass continuations in order to present a persistant state.  Moreover it automatically handles browser and version compatibility, including the ability to replace Ajax behaviors with page reloads if the browser does not have javascript or has it disabled.

Rob</description>
		<content:encoded><![CDATA[<p>Hi Ralph,</p>
<p>Some people mentioned Arc, but it is very new, and is actually a new dialect of lisp built on top of Scheme.  The idea is to make a language that could last 100 years.  It was just released in kind of a pre-alpha state.</p>
<p>I have been experimenting with Weblocks, and would recommend it if you are interested in using Common Lisp to develop web sites.  It makes use of Lisp&#8217;s ability to pass continuations in order to present a persistant state.  Moreover it automatically handles browser and version compatibility, including the ability to replace Ajax behaviors with page reloads if the browser does not have javascript or has it disabled.</p>
<p>Rob</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: EllisGL</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-71</link>
		<dc:creator>EllisGL</dc:creator>
		<pubDate>Mon, 21 Apr 2008 21:49:03 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-71</guid>
		<description>ASM: http://zer0-day.net/index.php?topic=45.0</description>
		<content:encoded><![CDATA[<p>ASM: <a href="http://zer0-day.net/index.php?topic=45.0" rel="nofollow">http://zer0-day.net/index.php?topic=45.0</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sacado</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-69</link>
		<dc:creator>sacado</dc:creator>
		<pubDate>Sun, 20 Apr 2008 16:42:04 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-69</guid>
		<description>@Ralph

&quot;Now I do almost exclusively web-based programming. Is there some reasonably straightforward and practical way to use Lisp to construct smart web pages? If so, I would be very pleased to try it.&quot;

You could have a look at Arc : http://arclanguage.org. It&#039;s a new dialect of Lisp targetting at web apps. It&#039;s rather new and still under active development,but if you are just interested in learning how Lisp could be used for web apps, you should definitely give it a try.</description>
		<content:encoded><![CDATA[<p>@Ralph</p>
<p>&#8220;Now I do almost exclusively web-based programming. Is there some reasonably straightforward and practical way to use Lisp to construct smart web pages? If so, I would be very pleased to try it.&#8221;</p>
<p>You could have a look at Arc : <a href="http://arclanguage.org" rel="nofollow">http://arclanguage.org</a>. It&#8217;s a new dialect of Lisp targetting at web apps. It&#8217;s rather new and still under active development,but if you are just interested in learning how Lisp could be used for web apps, you should definitely give it a try.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shawn Fumo</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-68</link>
		<dc:creator>Shawn Fumo</dc:creator>
		<pubDate>Sun, 20 Apr 2008 16:13:56 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-68</guid>
		<description>Ralph,

You might try looking up Weblocks, which uses Lisp to do websites. It looks pretty powerful..</description>
		<content:encoded><![CDATA[<p>Ralph,</p>
<p>You might try looking up Weblocks, which uses Lisp to do websites. It looks pretty powerful..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martin</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-67</link>
		<dc:creator>Martin</dc:creator>
		<pubDate>Sun, 20 Apr 2008 14:38:54 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-67</guid>
		<description>Ralph:

Try http://www.paulgraham.com/arc.html.

Also http://www.lispcast.com/ is a very good intro to web programming using CL.

Martin</description>
		<content:encoded><![CDATA[<p>Ralph:</p>
<p>Try <a href="http://www.paulgraham.com/arc.html" rel="nofollow">http://www.paulgraham.com/arc.html</a>.</p>
<p>Also <a href="http://www.lispcast.com/" rel="nofollow">http://www.lispcast.com/</a> is a very good intro to web programming using CL.</p>
<p>Martin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sharjeel</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-66</link>
		<dc:creator>sharjeel</dc:creator>
		<pubDate>Sun, 20 Apr 2008 09:52:02 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-66</guid>
		<description>&lt;a href=&quot;http://reddit.com/user/jerf/&quot; rel=&quot;nofollow&quot;&gt; Jerf &lt;/a&gt; put a very nice thought:

Another example: If you understand what &quot;x = 2&quot; really, really means, and the basic operations, you already understand all of conventional algebra. (That is, what is taught in K-12, not what a real mathematician would call &quot;algebra&quot;.)

(I actually think that this is where conventional math education goes most wrong, right here at the beginning; kids have a fuzzy conception of equals, and simply never recover from that. Without that, the kids are right, they are just wasting their time learning useless things.)

Too many kids learn the equality symbol as a directional operator, the majority I daresay. They will agree that x =&gt; 2, but if we take this fact and rewrite &quot;2 + 2 = 4&quot; with &quot;x + x = 4&quot;, they will object that you can&#039;t do that.

But of course you can. You can do whatever you want with an equality relation. You aren&#039;t limited to some officially-sanction numerical recipes/magic and the simplication (meta-)operation... but that&#039;s exactly how most people learn equality.

Once you understand, really understand that you can do anything you want to an equation, as long as you do it to both sides (correctly), algebra goes from mystifying to obvious, and instead of being an arcane collection of magical tricks, becomes an accelerated session of sharing the work of centuries to put together what we now teach as algebra.

A lot of people who would be reading this probably understand this so well already they can&#039;t even conceive of the misapprehension I&#039;m speaking of, but it&#039;s the only explanation I have for some of the things I&#039;ve seen &quot;in the field&quot;.

Similarly, in college, I took the &quot;advanced&quot; calculus. And the first thing that happened in my advanced calculus is that we spent three or four weeks working with the limit, until we had that thing down cold. And then yet more time working directly with the integration and differentiation equations and deriving all the shortcuts from scratch, repeatedly. It sounds like a waste of time, but A: If you&#039;ve got a professor throwing every limit edge case he&#039;s ever seen at you it&#039;s harder than you think and B: after that, standard calculus isn&#039;t mysterious any more. Ironically, at, say, week 4, we seemed to be way behind the &quot;normal&quot; calculus class, but in fact it&#039;s only an illusion that the other class was ahead of us, in a way, because they were learning the sanctioned magic and we were learning calculus.</description>
		<content:encoded><![CDATA[<p><a href="http://reddit.com/user/jerf/" rel="nofollow"> Jerf </a> put a very nice thought:</p>
<p>Another example: If you understand what &#8220;x = 2&#8243; really, really means, and the basic operations, you already understand all of conventional algebra. (That is, what is taught in K-12, not what a real mathematician would call &#8220;algebra&#8221;.)</p>
<p>(I actually think that this is where conventional math education goes most wrong, right here at the beginning; kids have a fuzzy conception of equals, and simply never recover from that. Without that, the kids are right, they are just wasting their time learning useless things.)</p>
<p>Too many kids learn the equality symbol as a directional operator, the majority I daresay. They will agree that x => 2, but if we take this fact and rewrite &#8220;2 + 2 = 4&#8243; with &#8220;x + x = 4&#8243;, they will object that you can&#8217;t do that.</p>
<p>But of course you can. You can do whatever you want with an equality relation. You aren&#8217;t limited to some officially-sanction numerical recipes/magic and the simplication (meta-)operation&#8230; but that&#8217;s exactly how most people learn equality.</p>
<p>Once you understand, really understand that you can do anything you want to an equation, as long as you do it to both sides (correctly), algebra goes from mystifying to obvious, and instead of being an arcane collection of magical tricks, becomes an accelerated session of sharing the work of centuries to put together what we now teach as algebra.</p>
<p>A lot of people who would be reading this probably understand this so well already they can&#8217;t even conceive of the misapprehension I&#8217;m speaking of, but it&#8217;s the only explanation I have for some of the things I&#8217;ve seen &#8220;in the field&#8221;.</p>
<p>Similarly, in college, I took the &#8220;advanced&#8221; calculus. And the first thing that happened in my advanced calculus is that we spent three or four weeks working with the limit, until we had that thing down cold. And then yet more time working directly with the integration and differentiation equations and deriving all the shortcuts from scratch, repeatedly. It sounds like a waste of time, but A: If you&#8217;ve got a professor throwing every limit edge case he&#8217;s ever seen at you it&#8217;s harder than you think and B: after that, standard calculus isn&#8217;t mysterious any more. Ironically, at, say, week 4, we seemed to be way behind the &#8220;normal&#8221; calculus class, but in fact it&#8217;s only an illusion that the other class was ahead of us, in a way, because they were learning the sanctioned magic and we were learning calculus.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carlos</title>
		<link>http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/comment-page-1/#comment-64</link>
		<dc:creator>Carlos</dc:creator>
		<pubDate>Sun, 20 Apr 2008 00:27:29 +0000</pubDate>
		<guid isPermaLink="false">http://sharjeel.2scomplement.com/2008/04/19/what-lisp-assembly-instill/#comment-64</guid>
		<description>If you think C is just Ifs and loops, you don&#039;t understand strings and malloc, therefore you should go learn assembly.</description>
		<content:encoded><![CDATA[<p>If you think C is just Ifs and loops, you don&#8217;t understand strings and malloc, therefore you should go learn assembly.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
