<?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: 回“老赵”关于“Erlang中最大的问题”</title>
	<atom:link href="http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/feed" rel="self" type="application/rss+xml" />
	<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html</link>
	<description>erlang 中文社区</description>
	<lastBuildDate>Tue, 03 Jan 2012 15:49:56 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
	<item>
		<title>By: erlangfans</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-23019</link>
		<dc:creator>erlangfans</dc:creator>
		<pubDate>Wed, 20 Apr 2011 15:14:24 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-23019</guid>
		<description>&lt;blockquote cite=&quot;#commentbody-22982&quot;&gt;
&lt;strong&gt;&lt;a href=&quot;#comment-22982&quot; rel=&quot;nofollow&quot;&gt;huaqiao &lt;/a&gt; :&lt;/strong&gt;分析不错&lt;/blockquote&gt;</description>
		<content:encoded><![CDATA[<blockquote cite="#commentbody-22982"><p>
<strong><a href="#comment-22982" rel="nofollow">huaqiao </a> :</strong>分析不错</p></blockquote>
]]></content:encoded>
	</item>
	<item>
		<title>By: huaqiao</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-22982</link>
		<dc:creator>huaqiao</dc:creator>
		<pubDate>Tue, 19 Apr 2011 10:01:26 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-22982</guid>
		<description>上海现在哪家需要erlang开发的人。哈哈，我可以毛遂自荐。3年erlang项目开发经验，参与过的开源项目有:ejabberd,yaws,erlyweb,mochiweb,rabbitmq,riak,rebar等，有合适的可以发邮件给我。</description>
		<content:encoded><![CDATA[<p>上海现在哪家需要erlang开发的人。哈哈，我可以毛遂自荐。3年erlang项目开发经验，参与过的开源项目有:ejabberd,yaws,erlyweb,mochiweb,rabbitmq,riak,rebar等，有合适的可以发邮件给我。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Caelyn</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-22682</link>
		<dc:creator>Caelyn</dc:creator>
		<pubDate>Tue, 12 Apr 2011 18:07:33 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-22682</guid>
		<description>Tuocdohnw! That&#039;s a really cool way of putting it!</description>
		<content:encoded><![CDATA[<p>Tuocdohnw! That&#8217;s a really cool way of putting it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Guaranteed listing on dmoz</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-18454</link>
		<dc:creator>Guaranteed listing on dmoz</dc:creator>
		<pubDate>Wed, 28 Jul 2010 05:27:23 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-18454</guid>
		<description>DMOZ Directory or ODP is a human managed directory that sends results or data to search engines. DMOZ directory data is now used by the majority of major search engines on the net.</description>
		<content:encoded><![CDATA[<p>DMOZ Directory or ODP is a human managed directory that sends results or data to search engines. DMOZ directory data is now used by the majority of major search engines on the net.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dior</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-17722</link>
		<dc:creator>dior</dc:creator>
		<pubDate>Thu, 27 May 2010 08:01:33 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-17722</guid>
		<description>Hello, blogger, your article very good, looking forward to sharing your latest</description>
		<content:encoded><![CDATA[<p>Hello, blogger, your article very good, looking forward to sharing your latest</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kaka</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-13690</link>
		<dc:creator>kaka</dc:creator>
		<pubDate>Thu, 30 Jul 2009 08:22:14 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-13690</guid>
		<description>对啊，从常规语言，尤其是被认为在常规语言注入.net之类的上面很深入研究过的人，转型Erlang的时候都会有些 culture shock。关于在消息交互中的动态类型问题这在Erlang这个新语言环境有新的编程规范有新的思维pattern。哪个语言都有其固有陷阱或者缺陷什么的，如果难以从语言层将其完善，有其特定的编程规范来使得大家不掉进这个坑里面不就好了，就像楼主说的，可以有个tag来匹配的。</description>
		<content:encoded><![CDATA[<p>对啊，从常规语言，尤其是被认为在常规语言注入.net之类的上面很深入研究过的人，转型Erlang的时候都会有些 culture shock。关于在消息交互中的动态类型问题这在Erlang这个新语言环境有新的编程规范有新的思维pattern。哪个语言都有其固有陷阱或者缺陷什么的，如果难以从语言层将其完善，有其特定的编程规范来使得大家不掉进这个坑里面不就好了，就像楼主说的，可以有个tag来匹配的。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: max fung</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-13630</link>
		<dc:creator>max fung</dc:creator>
		<pubDate>Fri, 24 Jul 2009 05:49:42 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-13630</guid>
		<description>大部分都没看懂，这是什么呀～好多英文泥～
讨论语言的好坏？这个我最爱看，可以充分展现程序员勇猛的一面
讨论实际应用？在模拟炒股大把赚钱的人，在真实炒股中也会赔得很惨。

既然不知道什么跟什么，我也来吐两句，用普通人的普通话

语言好坏：说容错性与动态代码替换，世界上最强的莫过于as2(actionsrcipt 2.0）Adobe搞的as3简直是大粪，而我又不得不用大粪，郁闷！as2是力与美的结合，它几乎完全不出错，即使出错也可以选择优雅的忽略或善意的提醒，而程序还是很正常的运行滴～跟没错误一样。动态代码替换，哪家伙简直是。。。。强tnnd强！把代码封装在swf中独立开来，运行中读取一下就是新的代码，super！抽象方面，我的神哪，你可以用诸如老子，小子关系的类编程，也可以用函数式编程，交叉使用（用句广告语，中西药结合疗效好！）那效果，刚刚的！界面设计那更没得说，哪个语言有这样的界面设计方式，一个字：华丽！（翻译成英文就是一个字啦）并发，那“孙子”（此处不是贬义，下面分解说明）简介好得不得了！运行时在库中实例化一个movieclip，就是一个孙子，每个孙子都是“并发”运行（秒级）。

实际应用：鉴于以上的好处，在实际开发中我是前端用falsh + mdm（air?烂货！不支持as2，当然mdm也烂，不过凑活啦）开发页面和一般应用，后端（这里的后端也是前端，呃怎么表述？～）用其它语言，最近用erlang，解决速度和特殊需求等问题。例如某个小小型财务软件，前面flash，后面erlang并行运算，那个叫爽～！
又如，本地数据库与网络同步，前面flash，远程erlang并行运算，那个叫赞～！

现实中，这种实际运用最厉害的应该算香港人，一句话 粤语英文各半，方便的解决了语言功能不足所带来的问题，当然了，开发一下语言的插件也可以，例如 M 叫 兆，搞定。erlang 字符处理不足，开发一个插件就可以啦 ~ ,但是，插件并不是人人知道的，你推广谁知道，M就是兆？

期望erlang被某家大大企业收购，并继续开发，到时所有弱点就会慢慢解决，故事都会这样发展的～

现在是可选的东西太多，看不清，在以前只有apple II和6502这种语言可选的话……

是好东西就用，不足就补足，这种方式行不通就那种，单一不行就综合，此乃中庸之道也～没有实践试验，纸上谈兵不足道也～

以上p文 至此结束。</description>
		<content:encoded><![CDATA[<p>大部分都没看懂，这是什么呀～好多英文泥～<br />
讨论语言的好坏？这个我最爱看，可以充分展现程序员勇猛的一面<br />
讨论实际应用？在模拟炒股大把赚钱的人，在真实炒股中也会赔得很惨。</p>
<p>既然不知道什么跟什么，我也来吐两句，用普通人的普通话</p>
<p>语言好坏：说容错性与动态代码替换，世界上最强的莫过于as2(actionsrcipt 2.0）Adobe搞的as3简直是大粪，而我又不得不用大粪，郁闷！as2是力与美的结合，它几乎完全不出错，即使出错也可以选择优雅的忽略或善意的提醒，而程序还是很正常的运行滴～跟没错误一样。动态代码替换，哪家伙简直是。。。。强tnnd强！把代码封装在swf中独立开来，运行中读取一下就是新的代码，super！抽象方面，我的神哪，你可以用诸如老子，小子关系的类编程，也可以用函数式编程，交叉使用（用句广告语，中西药结合疗效好！）那效果，刚刚的！界面设计那更没得说，哪个语言有这样的界面设计方式，一个字：华丽！（翻译成英文就是一个字啦）并发，那“孙子”（此处不是贬义，下面分解说明）简介好得不得了！运行时在库中实例化一个movieclip，就是一个孙子，每个孙子都是“并发”运行（秒级）。</p>
<p>实际应用：鉴于以上的好处，在实际开发中我是前端用falsh + mdm（air?烂货！不支持as2，当然mdm也烂，不过凑活啦）开发页面和一般应用，后端（这里的后端也是前端，呃怎么表述？～）用其它语言，最近用erlang，解决速度和特殊需求等问题。例如某个小小型财务软件，前面flash，后面erlang并行运算，那个叫爽～！<br />
又如，本地数据库与网络同步，前面flash，远程erlang并行运算，那个叫赞～！</p>
<p>现实中，这种实际运用最厉害的应该算香港人，一句话 粤语英文各半，方便的解决了语言功能不足所带来的问题，当然了，开发一下语言的插件也可以，例如 M 叫 兆，搞定。erlang 字符处理不足，开发一个插件就可以啦 ~ ,但是，插件并不是人人知道的，你推广谁知道，M就是兆？</p>
<p>期望erlang被某家大大企业收购，并继续开发，到时所有弱点就会慢慢解决，故事都会这样发展的～</p>
<p>现在是可选的东西太多，看不清，在以前只有apple II和6502这种语言可选的话……</p>
<p>是好东西就用，不足就补足，这种方式行不通就那种，单一不行就综合，此乃中庸之道也～没有实践试验，纸上谈兵不足道也～</p>
<p>以上p文 至此结束。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsun</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-13614</link>
		<dc:creator>dsun</dc:creator>
		<pubDate>Tue, 21 Jul 2009 01:08:28 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-13614</guid>
		<description>1、企业应用中基本上没有什么真正意义上的计算密集型应用（像：图像、信号处理，大规模科学计算等）。即使有些计算方面的处理，更应该考虑的是并行编程和控制模型的简单性和伸缩的容易性，因为过不了几年，具有上万核，甚至百万核的机器估计就会出现，能够容易地编写出无需更改就可以自动的应用这些多核的能力的程序更重要。即使是进行真正的计算密集型应用，Erlang作为一种coordination language还是很合适的。

2、share nothing不是靠immutable保证的，而是靠process独立内存空间加上copy semantics保证的。copy semantics不是immutable的实现方式。immutable是语言中变量的语法特性，copy semantics是语义动作，完全风马牛不相及。只要是复制语义的，即便不是immutable的照样不会破坏share nothing。

   从严格意义上讲，完全在语言层面上满足copy semantics的语言只有Erlang一个，即使是像binary的reference在语义上也可以认为是拷贝的，并且其存在于独立的heap中。另外，对ETS的访问在语义上也是IPC性质的。真正在语言层面上做到share nothing的只有Erlang一个。Scala在语言层面上不具有copy semantics，而只是能够定义immutable的变量，因此严格地讲，Scala不是share nothing的，而是最多可以做到share immutable。要在Scala中做到看上去的share nothing，必须靠设计约定获得。

3、语言越来越复杂（尤其是平台基础和上层特性不匹配时）不是好现象。</description>
		<content:encoded><![CDATA[<p>1、企业应用中基本上没有什么真正意义上的计算密集型应用（像：图像、信号处理，大规模科学计算等）。即使有些计算方面的处理，更应该考虑的是并行编程和控制模型的简单性和伸缩的容易性，因为过不了几年，具有上万核，甚至百万核的机器估计就会出现，能够容易地编写出无需更改就可以自动的应用这些多核的能力的程序更重要。即使是进行真正的计算密集型应用，Erlang作为一种coordination language还是很合适的。</p>
<p>2、share nothing不是靠immutable保证的，而是靠process独立内存空间加上copy semantics保证的。copy semantics不是immutable的实现方式。immutable是语言中变量的语法特性，copy semantics是语义动作，完全风马牛不相及。只要是复制语义的，即便不是immutable的照样不会破坏share nothing。</p>
<p>   从严格意义上讲，完全在语言层面上满足copy semantics的语言只有Erlang一个，即使是像binary的reference在语义上也可以认为是拷贝的，并且其存在于独立的heap中。另外，对ETS的访问在语义上也是IPC性质的。真正在语言层面上做到share nothing的只有Erlang一个。Scala在语言层面上不具有copy semantics，而只是能够定义immutable的变量，因此严格地讲，Scala不是share nothing的，而是最多可以做到share immutable。要在Scala中做到看上去的share nothing，必须靠设计约定获得。</p>
<p>3、语言越来越复杂（尤其是平台基础和上层特性不匹配时）不是好现象。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Caoyuan</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-13603</link>
		<dc:creator>Caoyuan</dc:creator>
		<pubDate>Sun, 19 Jul 2009 12:22:19 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-13603</guid>
		<description>&lt;blockquote cite=&quot;#commentbody-13602&quot;&gt;
&lt;strong&gt;&lt;a href=&quot;#comment-13602&quot; rel=&quot;nofollow&quot;&gt;trustno1&lt;/a&gt; :&lt;/strong&gt;
Clojure的STM仍然是需要靠程序员保证 transaction中不出现io.他有一个IO!的宏可以辅助检查.但是这就如我前面提过的C++ try catch特性。没有GC的情况下C++的try catch特性是非常危险的.虽然C++的拥趸们经常说他们可以通过RAII来帮助程序员屏蔽这些问题.但是你可以想象一下在一个大规模的工程里,会出现各种各样RAII这这种粗糙手段无法防止的事情.比如你引用了某个第三方的lib,如果这个lib本身没有对try catch引起的内存问题加以处理。然后你又在上面做了层层的包装.当你把它置于try catch下的时候就会出现莫名其妙的问题.
没有对IO进行类型检查的系统里面.STM可以当作一个花销的摆设,但是绝对派不上用场.这点其实在Erlang当中也存在,比如mensia的transcation就不允许你在其中使用IO.但是mensia相对而言都比较好一些,因为毕竟是数据库属于专业模块不会对程序的全局产生破坏影响.但是STM是一个全局使用的特性,这就需要非常非常严格的检查而不是把这种事情扔给程序员.
&lt;/blockquote&gt;

Scala本身并不是pure functional的语言，对Side effect没有（也许很难）作全面的封装。我不清楚能否在对Scala的IO系统仔细设计和封装后做到对IO进行类型检查。不过，“没有对IO进行类型检查的系统里面，STM可以当作一个花销的摆设，但是绝对派不上用场”似乎也太绝对，至少，在程序员自己能处理的情况下，把STM限制在系统的某些地方，也还是可以一用的。

&lt;blockquote&gt;
Currency和Parallesim是两回事.Erlang本身就不是为计算密集型的Parallesim应用设计的.因此在这个平台上谈论针对计算密集型的处理方法有点文不对题.
&lt;/blockquote&gt;

假设，大部分人都同意：“Erlang本身就不是为计算密集型的Parallesim应用设计的”。然后，把问题换成：“Erlang能不能用来做计算密集型的Parallesim应用？”，答案就好像没那么直观了。理论底子厚的，可能想一下就明白了，象我这种底子薄的，就得拿几个例子验证一下，然后苦思冥想几个月，似乎明白了点，然后就跑到jackyz的场子里大喊大叫:-)，为什么？高兴呗。

接着，看看这个话题的另一面。如果我说，“现在的Erlang**只**适用于容错的、大规模的、软实时的短信息交换”，估计很多人就开始反对了。如果我还说，“JVM上现在也能很**方便地**实现容错的、大规模的、软实时的短信息交换”，那就更不得了。为什么？JVM不是为“容错的、大规模的、软实时的短信息交换”设计的？同样，我又得拿几个例子验证一下，然后苦思冥想几个月，似乎想明白点，就跑到jackyz的场子里大喊大叫了。

事情就是这样子的。</description>
		<content:encoded><![CDATA[<blockquote cite="#commentbody-13602"><p>
<strong><a href="#comment-13602" rel="nofollow">trustno1</a> :</strong><br />
Clojure的STM仍然是需要靠程序员保证 transaction中不出现io.他有一个IO!的宏可以辅助检查.但是这就如我前面提过的C++ try catch特性。没有GC的情况下C++的try catch特性是非常危险的.虽然C++的拥趸们经常说他们可以通过RAII来帮助程序员屏蔽这些问题.但是你可以想象一下在一个大规模的工程里,会出现各种各样RAII这这种粗糙手段无法防止的事情.比如你引用了某个第三方的lib,如果这个lib本身没有对try catch引起的内存问题加以处理。然后你又在上面做了层层的包装.当你把它置于try catch下的时候就会出现莫名其妙的问题.<br />
没有对IO进行类型检查的系统里面.STM可以当作一个花销的摆设,但是绝对派不上用场.这点其实在Erlang当中也存在,比如mensia的transcation就不允许你在其中使用IO.但是mensia相对而言都比较好一些,因为毕竟是数据库属于专业模块不会对程序的全局产生破坏影响.但是STM是一个全局使用的特性,这就需要非常非常严格的检查而不是把这种事情扔给程序员.
</p></blockquote>
<p>Scala本身并不是pure functional的语言，对Side effect没有（也许很难）作全面的封装。我不清楚能否在对Scala的IO系统仔细设计和封装后做到对IO进行类型检查。不过，“没有对IO进行类型检查的系统里面，STM可以当作一个花销的摆设，但是绝对派不上用场”似乎也太绝对，至少，在程序员自己能处理的情况下，把STM限制在系统的某些地方，也还是可以一用的。</p>
<blockquote><p>
Currency和Parallesim是两回事.Erlang本身就不是为计算密集型的Parallesim应用设计的.因此在这个平台上谈论针对计算密集型的处理方法有点文不对题.
</p></blockquote>
<p>假设，大部分人都同意：“Erlang本身就不是为计算密集型的Parallesim应用设计的”。然后，把问题换成：“Erlang能不能用来做计算密集型的Parallesim应用？”，答案就好像没那么直观了。理论底子厚的，可能想一下就明白了，象我这种底子薄的，就得拿几个例子验证一下，然后苦思冥想几个月，似乎明白了点，然后就跑到jackyz的场子里大喊大叫:-)，为什么？高兴呗。</p>
<p>接着，看看这个话题的另一面。如果我说，“现在的Erlang**只**适用于容错的、大规模的、软实时的短信息交换”，估计很多人就开始反对了。如果我还说，“JVM上现在也能很**方便地**实现容错的、大规模的、软实时的短信息交换”，那就更不得了。为什么？JVM不是为“容错的、大规模的、软实时的短信息交换”设计的？同样，我又得拿几个例子验证一下，然后苦思冥想几个月，似乎想明白点，就跑到jackyz的场子里大喊大叫了。</p>
<p>事情就是这样子的。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: trustno1</title>
		<link>http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-4#comment-13602</link>
		<dc:creator>trustno1</dc:creator>
		<pubDate>Sun, 19 Jul 2009 02:03:22 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=563#comment-13602</guid>
		<description>Clojure的STM仍然是需要靠程序员保证 transaction中不出现io.他有一个IO!的宏可以辅助检查.但是这就如我前面提过的C++ try catch特性。没有GC的情况下C++的try catch特性是非常危险的.虽然C++的拥趸们经常说他们可以通过RAII来帮助程序员屏蔽这些问题.但是你可以想象一下在一个大规模的工程里,会出现各种各样RAII这这种粗糙手段无法防止的事情.比如你引用了某个第三方的lib,如果这个lib本身没有对try catch引起的内存问题加以处理。然后你又在上面做了层层的包装.当你把它置于try catch下的时候就会出现莫名其妙的问题.
没有对IO进行类型检查的系统里面.STM可以当作一个花销的摆设,但是绝对派不上用场.这点其实在Erlang当中也存在,比如mensia的transcation就不允许你在其中使用IO.但是mensia相对而言都比较好一些,因为毕竟是数据库属于专业模块不会对程序的全局产生破坏影响.但是STM是一个全局使用的特性,这就需要非常非常严格的检查而不是把这种事情扔给程序员.
Currency和Parallesim是两回事.Erlang本身就不是为计算密集型的Parallesim应用设计的.因此在这个平台上谈论针对计算密集型的处理方法有点文不对题.</description>
		<content:encoded><![CDATA[<p>Clojure的STM仍然是需要靠程序员保证 transaction中不出现io.他有一个IO!的宏可以辅助检查.但是这就如我前面提过的C++ try catch特性。没有GC的情况下C++的try catch特性是非常危险的.虽然C++的拥趸们经常说他们可以通过RAII来帮助程序员屏蔽这些问题.但是你可以想象一下在一个大规模的工程里,会出现各种各样RAII这这种粗糙手段无法防止的事情.比如你引用了某个第三方的lib,如果这个lib本身没有对try catch引起的内存问题加以处理。然后你又在上面做了层层的包装.当你把它置于try catch下的时候就会出现莫名其妙的问题.<br />
没有对IO进行类型检查的系统里面.STM可以当作一个花销的摆设,但是绝对派不上用场.这点其实在Erlang当中也存在,比如mensia的transcation就不允许你在其中使用IO.但是mensia相对而言都比较好一些,因为毕竟是数据库属于专业模块不会对程序的全局产生破坏影响.但是STM是一个全局使用的特性,这就需要非常非常严格的检查而不是把这种事情扔给程序员.<br />
Currency和Parallesim是两回事.Erlang本身就不是为计算密集型的Parallesim应用设计的.因此在这个平台上谈论针对计算密集型的处理方法有点文不对题.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

