<?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"
	>
<channel>
	<title>Comments on: JavaScript 2: Everything but the Kitchen Sink</title>
	<atom:link href="http://www.numenware.com/article/565/feed" rel="self" type="application/rss+xml" />
	<link>http://www.numenware.com/article/565</link>
	<description>Religion. Brain. Dogen. Language. Japan.</description>
	<pubDate>Mon, 12 May 2008 09:27:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: Brendan Eich</title>
		<link>http://www.numenware.com/article/565#comment-3026</link>
		<dc:creator>Brendan Eich</dc:creator>
		<pubDate>Wed, 05 Dec 2007 00:55:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.numenware.com/article/565#comment-3026</guid>
		<description>I should add that your example is fine JS2, closer to Python or Scheme than the JS1 version:

bar = function(z,x){return z*x}
foobar = function(){return 666}
function foo(x) { return x * bar(x,foobar()) }

Now why are those curly braces and return keywords, and two lines instead of one for the bar and foobar assignments, so necessary once you learn about destructuring and expression closures? Learning new shorthands is sanity, not madness. But to each his own.

BTW, JS1.8 in Firefox 3 supports your version already. Run and hide! :-P

/be</description>
		<content:encoded><![CDATA[<p>I should add that your example is fine JS2, closer to Python or Scheme than the JS1 version:</p>
<p>bar = function(z,x){return z*x}<br />
foobar = function(){return 666}<br />
function foo(x) { return x * bar(x,foobar()) }</p>
<p>Now why are those curly braces and return keywords, and two lines instead of one for the bar and foobar assignments, so necessary once you learn about destructuring and expression closures? Learning new shorthands is sanity, not madness. But to each his own.</p>
<p>BTW, JS1.8 in Firefox 3 supports your version already. Run and hide! <img src='http://www.numenware.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>/be</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendan Eich</title>
		<link>http://www.numenware.com/article/565#comment-3025</link>
		<dc:creator>Brendan Eich</dc:creator>
		<pubDate>Wed, 05 Dec 2007 00:48:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.numenware.com/article/565#comment-3025</guid>
		<description>laurent V.: you are faking confusion, and not fooling anyone. Your examples prove my points: 1. You know how to write ES4 without confusion, and read it. 2. You chose to write the new forms, but you are not required to -- they're optional, backward compatible extensions. Cut out the crocodile tears and intentional use or abuse of new forms, and you have no objection.

As for addressing issues in the 3rd edition -- we're doing that, we have a list of bug fixes to track what real browser implementations do, or where those disagree and ES3 still was broken (two cases of note), to do something better. See the compatibility doc at http://ecmascript.org/ and quit whining :-/.

/be</description>
		<content:encoded><![CDATA[<p>laurent V.: you are faking confusion, and not fooling anyone. Your examples prove my points: 1. You know how to write ES4 without confusion, and read it. 2. You chose to write the new forms, but you are not required to &#8212; they&#8217;re optional, backward compatible extensions. Cut out the crocodile tears and intentional use or abuse of new forms, and you have no objection.</p>
<p>As for addressing issues in the 3rd edition &#8212; we&#8217;re doing that, we have a list of bug fixes to track what real browser implementations do, or where those disagree and ES3 still was broken (two cases of note), to do something better. See the compatibility doc at <a href="http://ecmascript.org/" rel="nofollow">http://ecmascript.org/</a> and quit whining :-/.</p>
<p>/be</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: laurent V.</title>
		<link>http://www.numenware.com/article/565#comment-2032</link>
		<dc:creator>laurent V.</dc:creator>
		<pubDate>Mon, 05 Nov 2007 13:48:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.numenware.com/article/565#comment-2032</guid>
		<description>Funny, our user choice will not be &#8220;diktat&#8221; to everyone but yours (brendan&#8217;s one, as the father of the language) will &#8220;diktat&#8221; our use of the language. You keep saying everywhere that&#8217;s everything in ES4 is optional. But in reality it is not, your are just creating a lot more of confusion and code nightmare with ES4.

ES4, &lt;span class="caps"&gt;IMO&lt;/span&gt;, is not needed, a much better thing would have been to adress the issues in 3rd edition.

This is madness. Sorry to say but you, at the TG1, are turning a simple language to a confusing one.

[bar,foobar] = [function(z,x) z*x, function() 666]; 
function foo(x) x * bar(x,foobar())

Total madness, confusing like hell.</description>
		<content:encoded><![CDATA[<p>Funny, our user choice will not be &#8220;diktat&#8221; to everyone but yours (brendan&#8217;s one, as the father of the language) will &#8220;diktat&#8221; our use of the language. You keep saying everywhere that&#8217;s everything in ES4 is optional. But in reality it is not, your are just creating a lot more of confusion and code nightmare with ES4.</p>
<p>ES4, <span class="caps">IMO</span>, is not needed, a much better thing would have been to adress the issues in 3rd edition.</p>
<p>This is madness. Sorry to say but you, at the TG1, are turning a simple language to a confusing one.</p>
<p>[bar,foobar] = [function(z,x) z*x, function() 666];<br />
function foo(x) x * bar(x,foobar())</p>
<p>Total madness, confusing like hell.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendan Eich</title>
		<link>http://www.numenware.com/article/565#comment-1436</link>
		<dc:creator>Brendan Eich</dc:creator>
		<pubDate>Sun, 28 Oct 2007 04:22:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.numenware.com/article/565#comment-1436</guid>
		<description>One more point: class is not equivalent to prototype/closure-based &lt;span class="caps"&gt;OOP&lt;/span&gt; in JS today. There is no way today to make an instance that is sealed against mutation by addition of new properties. The private properties you can create by capturing constructor closures, e.g., is costly and verbose to write (besides being alien to most programmers&#8212;many can learn, but the other costs hurt; why be different?).

For high-integrity abstractions that can compile to the metal, classes are the right fit, dogmatic objections aside. My point here, though, is that it simply is not true that class in ES4 can be simulated in ES3/JS1. Simulated in some ways, but mutation in JS1 is a bitch, and class controls it along several axes.

/be</description>
		<content:encoded><![CDATA[<p>One more point: class is not equivalent to prototype/closure-based <span class="caps">OOP</span> in JS today. There is no way today to make an instance that is sealed against mutation by addition of new properties. The private properties you can create by capturing constructor closures, e.g., is costly and verbose to write (besides being alien to most programmers&#8212;many can learn, but the other costs hurt; why be different?).</p>
<p>For high-integrity abstractions that can compile to the metal, classes are the right fit, dogmatic objections aside. My point here, though, is that it simply is not true that class in ES4 can be simulated in ES3/JS1. Simulated in some ways, but mutation in JS1 is a bitch, and class controls it along several axes.</p>
<p>/be</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendan Eich</title>
		<link>http://www.numenware.com/article/565#comment-1442</link>
		<dc:creator>Brendan Eich</dc:creator>
		<pubDate>Sun, 28 Oct 2007 04:11:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.numenware.com/article/565#comment-1442</guid>
		<description>The &#8220;Just plain weird&#8221; objection to syntactic extensions needs more than expostulations about madness. Try expression closures (in Firefox 3&#8217;s forthcoming beta), you will like them.

Here&#8217;s another clue: Python had nothing to do with the destructuring assignment proposal, which was implemented in Opera before it was submitted to the group (destructuring has a long provenance in ML and other languages; the idea did not begin with Python, which anyway calls it &#8220;unpacking&#8221;).

About your &#8220;If I&#8217;d wanted a typed programming language, I&#8217;d have chosen one to start with&#8221;&#8212;did you really &#8220;choose&#8221; JS? In browsers there is no choice, and however much you detest types (don&#8217;t write them if you don&#8217;t want to, type annotations are optional), others absolutely will use them. Especially at &lt;span class="caps"&gt;API&lt;/span&gt; boundaries, in lieu of piles of error-prone and bulky argument and result checking/normalizing code.

The thread at http://lambda-the-ultimate.org/ is worth a read in full, if you are willing to give ES4 half a chance. If you simply prefer to keep using JS as it is, no problem. Your choice will not be &lt;i&gt;diktat&lt;/i&gt; to everyone, however.

/be</description>
		<content:encoded><![CDATA[<p>The &#8220;Just plain weird&#8221; objection to syntactic extensions needs more than expostulations about madness. Try expression closures (in Firefox 3&#8217;s forthcoming beta), you will like them.</p>
<p>Here&#8217;s another clue: Python had nothing to do with the destructuring assignment proposal, which was implemented in Opera before it was submitted to the group (destructuring has a long provenance in ML and other languages; the idea did not begin with Python, which anyway calls it &#8220;unpacking&#8221;).</p>
<p>About your &#8220;If I&#8217;d wanted a typed programming language, I&#8217;d have chosen one to start with&#8221;&#8212;did you really &#8220;choose&#8221; JS? In browsers there is no choice, and however much you detest types (don&#8217;t write them if you don&#8217;t want to, type annotations are optional), others absolutely will use them. Especially at <span class="caps">API</span> boundaries, in lieu of piles of error-prone and bulky argument and result checking/normalizing code.</p>
<p>The thread at <a href="http://lambda-the-ultimate.org/" rel="nofollow">http://lambda-the-ultimate.org/</a> is worth a read in full, if you are willing to give ES4 half a chance. If you simply prefer to keep using JS as it is, no problem. Your choice will not be <i>diktat</i> to everyone, however.</p>
<p>/be</p>
]]></content:encoded>
	</item>
</channel>
</rss>
