<?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: OSQ: the next 5 languages for the web</title>
	<atom:link href="http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/</link>
	<description>Just another Blog.mozilla.com weblog</description>
	<lastBuildDate>Fri, 20 Nov 2009 22:40:42 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: dmandelin</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11457</link>
		<dc:creator>dmandelin</dc:creator>
		<pubDate>Wed, 27 May 2009 18:29:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11457</guid>
		<description>I like &quot;symbolic&quot;.

Shared memory seems yucky for dynamic languages, for the reason I gave above. I had Erlang in mind where I suggested a DB for communication between concurrent processes. Obviously that is not an ultimate-high-performance communication method but I think it would work well for many web apps and versions of standard desktop UIs and such, and databases are already popular storage for such apps.

But maybe you are talking about typed languages like Cilk. I really haven&#039;t given that issue a lot of thought, and I don&#039;t know enough about parallel algorithms, their implementations, and how they are used in applications to say much of anything about it.</description>
		<content:encoded><![CDATA[<p>I like &#8220;symbolic&#8221;.</p>
<p>Shared memory seems yucky for dynamic languages, for the reason I gave above. I had Erlang in mind where I suggested a DB for communication between concurrent processes. Obviously that is not an ultimate-high-performance communication method but I think it would work well for many web apps and versions of standard desktop UIs and such, and databases are already popular storage for such apps.</p>
<p>But maybe you are talking about typed languages like Cilk. I really haven&#8217;t given that issue a lot of thought, and I don&#8217;t know enough about parallel algorithms, their implementations, and how they are used in applications to say much of anything about it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leo</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11455</link>
		<dc:creator>Leo</dc:creator>
		<pubDate>Wed, 27 May 2009 09:53:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11455</guid>
		<description>I think the point of Native Client is to let you build up whatever else you want on top, like other languages. I like that idea -- as long as the DOM is still in place. 

Integer codes sounds HPC to me -- floating point is often too slow  :) I think we use &#039;symbolic&#039; or &#039;branching&#039; codes. 

Workers make sense for the short-term because the www has a weird tendency to standardize early and it&#039;s the path of least resistance, but shared memory is sort of inevitable. The real question is *how*. I&#039;m not a fan of transactions for typical application code and as the defacto performance mechanism (agree that a persistence layer is important -- still unclear how to really persist apps well at a framework level). Cilk++ is making cool leaps for shared memory abstractions (reducers are awesome!). I&#039;m still not sure what it means to allow GC, HOFs, etc. in such an environment, but suspect that&#039;s the camp to be looking at.</description>
		<content:encoded><![CDATA[<p>I think the point of Native Client is to let you build up whatever else you want on top, like other languages. I like that idea &#8212; as long as the DOM is still in place. </p>
<p>Integer codes sounds HPC to me &#8212; floating point is often too slow  <img src='http://blog.mozilla.com/dmandelin/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I think we use &#8217;symbolic&#8217; or &#8216;branching&#8217; codes. </p>
<p>Workers make sense for the short-term because the www has a weird tendency to standardize early and it&#8217;s the path of least resistance, but shared memory is sort of inevitable. The real question is *how*. I&#8217;m not a fan of transactions for typical application code and as the defacto performance mechanism (agree that a persistence layer is important &#8212; still unclear how to really persist apps well at a framework level). Cilk++ is making cool leaps for shared memory abstractions (reducers are awesome!). I&#8217;m still not sure what it means to allow GC, HOFs, etc. in such an environment, but suspect that&#8217;s the camp to be looking at.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dmandelin</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11453</link>
		<dc:creator>dmandelin</dc:creator>
		<pubDate>Tue, 26 May 2009 18:33:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11453</guid>
		<description>Leo: Google Native Client is a cool project, but to me it can&#039;t be a total solution because IMO C is not a good application development language. It could be useful for embedded video and such, but hopefully things like that will be able to migrate into the browser (like HTML 5 video). 

Task parallelism seems necessary for &quot;integer codes&quot; (or whatever you want to call the large class of applications that don&#039;t have much data parallelism). Non-sharing worker threads look like the most likely parallelism construct to win out on the real web. I suspect most non-systems programs can do fine without shared memory or explicit locking, instead relying on separate worker threads and maybe a transactional database for communication and storage.

With the two languages I mentioned, I definitely imagined one should be able to call the other, but not free mixing. I think that can be made safe fairly easily, but getting good error messages requires some of the techniques from gradual typing, especially with function arguments.</description>
		<content:encoded><![CDATA[<p>Leo: Google Native Client is a cool project, but to me it can&#8217;t be a total solution because IMO C is not a good application development language. It could be useful for embedded video and such, but hopefully things like that will be able to migrate into the browser (like HTML 5 video). </p>
<p>Task parallelism seems necessary for &#8220;integer codes&#8221; (or whatever you want to call the large class of applications that don&#8217;t have much data parallelism). Non-sharing worker threads look like the most likely parallelism construct to win out on the real web. I suspect most non-systems programs can do fine without shared memory or explicit locking, instead relying on separate worker threads and maybe a transactional database for communication and storage.</p>
<p>With the two languages I mentioned, I definitely imagined one should be able to call the other, but not free mixing. I think that can be made safe fairly easily, but getting good error messages requires some of the techniques from gradual typing, especially with function arguments.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leo</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11445</link>
		<dc:creator>Leo</dc:creator>
		<pubDate>Wed, 20 May 2009 01:08:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11445</guid>
		<description>I&#039;ve been in a bind as to what the &#039;right&#039; stack would be. Brad (the Google Native Client guy at the retreat) advocates exposing a sandboxed C, complete with threads, and building anything we need on top. Another option is figuring out a multicore VM instruction set and doing the same. 

If you go with JavaScript, the question still remains. Building blocks or end-user abstractions? E.g., I&#039;ve found Cilk-style task parallelism to be the cleanest general model (as opposed to, say, data parallelism, which isn&#039;t general), but you won&#039;t get that on top of a typical implementation of worker threads.

A further question.. what about correctness? Workers are appealing because they&#039;re isolated, though I suspect something like Zach&#039;s sharing qualifiers work would be good too. Workers would be indepndent and need no qualifiers, and fancier (finer sharing) would use it. Or.. you can punt on that too :)

Btw, I assume for the mixed language bit you assume calls can go between the two, a la gradual or soft typing.

[for &#039;with&#039; being bad: it introduces a dynamic scope, making analyses for optimization or security hard, and, arguably, confuses programmers for similar reasons. kind of a vague answer.]</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been in a bind as to what the &#8216;right&#8217; stack would be. Brad (the Google Native Client guy at the retreat) advocates exposing a sandboxed C, complete with threads, and building anything we need on top. Another option is figuring out a multicore VM instruction set and doing the same. </p>
<p>If you go with JavaScript, the question still remains. Building blocks or end-user abstractions? E.g., I&#8217;ve found Cilk-style task parallelism to be the cleanest general model (as opposed to, say, data parallelism, which isn&#8217;t general), but you won&#8217;t get that on top of a typical implementation of worker threads.</p>
<p>A further question.. what about correctness? Workers are appealing because they&#8217;re isolated, though I suspect something like Zach&#8217;s sharing qualifiers work would be good too. Workers would be indepndent and need no qualifiers, and fancier (finer sharing) would use it. Or.. you can punt on that too <img src='http://blog.mozilla.com/dmandelin/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Btw, I assume for the mixed language bit you assume calls can go between the two, a la gradual or soft typing.</p>
<p>[for 'with' being bad: it introduces a dynamic scope, making analyses for optimization or security hard, and, arguably, confuses programmers for similar reasons. kind of a vague answer.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan de M.</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11442</link>
		<dc:creator>Jan de M.</dc:creator>
		<pubDate>Tue, 19 May 2009 07:44:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11442</guid>
		<description>IMHO something like ActionScript would be useful. It&#039;s much like JS but adds typing, classes, namespaces, etc.</description>
		<content:encoded><![CDATA[<p>IMHO something like ActionScript would be useful. It&#8217;s much like JS but adds typing, classes, namespaces, etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dmandelin</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11441</link>
		<dc:creator>dmandelin</dc:creator>
		<pubDate>Mon, 18 May 2009 18:35:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11441</guid>
		<description>@Zack: functional languages do have a history of being light on syntax compared to most programmer preferences. And your point on keeping familiar syntax is well-taken, although it does make me sad that we are apparently stuck with C syntax until the end of time. Libraries are very important to language adoption but they seem to be created by communities and they need a good deployment model. It seems hard to deploy anything other than pure JS in the browser.</description>
		<content:encoded><![CDATA[<p>@Zack: functional languages do have a history of being light on syntax compared to most programmer preferences. And your point on keeping familiar syntax is well-taken, although it does make me sad that we are apparently stuck with C syntax until the end of time. Libraries are very important to language adoption but they seem to be created by communities and they need a good deployment model. It seems hard to deploy anything other than pure JS in the browser.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian P.</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11440</link>
		<dc:creator>Brian P.</dc:creator>
		<pubDate>Mon, 18 May 2009 13:43:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11440</guid>
		<description>&quot;The biggest problem is the types: many programmers seem to prefer untyped languages like Python and JS&quot;

Count me in the other group.  I much prefer typed languages.  I so wish there was a typed language on the web.  While your at it how about real object oriented.  I&#039;d like to run Java/C# without an external VM.  I guess google web toolkit may be the best thing for now.  But I have not used it.</description>
		<content:encoded><![CDATA[<p>&#8220;The biggest problem is the types: many programmers seem to prefer untyped languages like Python and JS&#8221;</p>
<p>Count me in the other group.  I much prefer typed languages.  I so wish there was a typed language on the web.  While your at it how about real object oriented.  I&#8217;d like to run Java/C# without an external VM.  I guess google web toolkit may be the best thing for now.  But I have not used it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: voracity</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11436</link>
		<dc:creator>voracity</dc:creator>
		<pubDate>Sat, 16 May 2009 07:35:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11436</guid>
		<description>Sign me up for Mini-JS :)

Also, &#039;with&#039; seems to widely acknowledged as bad in some way, but what are all the problems with it? Is it just performance? Or something else?</description>
		<content:encoded><![CDATA[<p>Sign me up for Mini-JS <img src='http://blog.mozilla.com/dmandelin/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Also, &#8216;with&#8217; seems to widely acknowledged as bad in some way, but what are all the problems with it? Is it just performance? Or something else?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zack</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11430</link>
		<dc:creator>Zack</dc:creator>
		<pubDate>Fri, 15 May 2009 18:45:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11430</guid>
		<description>Additionally: JS and Lua both badly need richer standard libraries.  (Lua is much worse than JS on this score, but JS is still bad, especially if you try to take it out of the browser.)  I&#039;d like us to be thinking about these languages as usable for general programming rather than just on-web programming, and that means Python-caliber standard libraries.</description>
		<content:encoded><![CDATA[<p>Additionally: JS and Lua both badly need richer standard libraries.  (Lua is much worse than JS on this score, but JS is still bad, especially if you try to take it out of the browser.)  I&#8217;d like us to be thinking about these languages as usable for general programming rather than just on-web programming, and that means Python-caliber standard libraries.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zack</title>
		<link>http://blog.mozilla.com/dmandelin/2009/05/15/osq-the-next-5-languages-for-the-web/comment-page-1/#comment-11429</link>
		<dc:creator>Zack</dc:creator>
		<pubDate>Fri, 15 May 2009 18:43:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.mozilla.com/dmandelin/?p=86#comment-11429</guid>
		<description>I think it&#039;s really important to have *syntax* similar to Javascript for both these hypothetical languages.  That way, programmers familiar with JS are more likely to think &quot;oh, yeah, I can do this&quot; rather than &quot;augh, this is unrecognizable&quot;.

-- Personal supporting anecdote: I find every language in the ML family completely incomprehensible, not because of the semantics, but because of the near-total absence of grouping punctuation.  You get chains of function applications written as &quot;foo bar baz quux blurf snort glorple&quot; and it takes extra mental effort to remember which things are called on what.  It doesn&#039;t help that the conversion of functions of more than one argument to a chain of curried functions is exposed in the syntax - I understand why that&#039;s done but it should be hidden away where humans don&#039;t have to think about it.</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s really important to have *syntax* similar to Javascript for both these hypothetical languages.  That way, programmers familiar with JS are more likely to think &#8220;oh, yeah, I can do this&#8221; rather than &#8220;augh, this is unrecognizable&#8221;.</p>
<p>&#8211; Personal supporting anecdote: I find every language in the ML family completely incomprehensible, not because of the semantics, but because of the near-total absence of grouping punctuation.  You get chains of function applications written as &#8220;foo bar baz quux blurf snort glorple&#8221; and it takes extra mental effort to remember which things are called on what.  It doesn&#8217;t help that the conversion of functions of more than one argument to a chain of curried functions is exposed in the syntax &#8211; I understand why that&#8217;s done but it should be hidden away where humans don&#8217;t have to think about it.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
