24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 587  |  回复: 4
当前主题已经存档。

yalefield

金虫 (文坛精英)

老汉一枚

[交流] 【讨论】天赋异禀,返老还童--Erlang语言 [转载+评述]

Erlang:为了并发而生

20多年前,它的创建者们就已经意识到了这一问题,转而选择了一条与主流语言完全不同的路:采用消息模型,进程之间并不共享任何数据,因而也就完全地避免了引入锁的必要。

对于多核系统而言,完全无锁,也就意味着相同的代码在更多核心的CPU上会很容易具有更高的性能,而对于分布式系统,则意味着尽可能地避免了顺序瓶颈,可以把更多的机器无缝地加入到计算网络中来

就年龄而言,Erlang大约与Perl同年,比C++年轻四岁,长Java差不多十岁,但Java早已经是工业主流语言,C++和Perl甚至已经进入其生命周期的下降阶段。照理说,一个被扔在角落里二十多载无人理睬的老家伙合理的命运就是坐以待毙,没想到Erlang却像是突然吃了返老还童丹似的在二十多岁的“高龄”又火了一把。

为什么呢?

CPU的多核化与云计算

2005年,C++标准委员会主席Herb Sutter在Dr. Dobb’s Journal上发表《免费午餐已经结束》一文:如果未来不能有效地以并行化的软件充分利用并行化的硬件资源,我们的计算效率就会永远停滞在仅仅略高于当前的水平上,而不得动弹。因此,未来的计算必然是并行的。

Herb Sutter本人曾表示,如果一个语言不能够以优雅可靠的方式处理并行计算的问题,那它就失去了在21世纪的生存权。

“主流语言”当然不想真的丧失掉这个生存权,于是纷纷以不同的方式解决并行计算的问题。

C/C++:除了标准委员会致力于以标准库的方式来提供并行计算库之外,标准化的OpenMP和 MPI,以及Intel的Threading Building Blocks库也都是可信赖的解决方案;
Java:在5.0版中引入了意义重大的concurrency库,得到Java社区的一致推崇;
微软:先是在.NET中引入APM,随后又在Robotics Studio中提供了CCR库,最近又发布了Parrallel FX和MPI.NET,可谓不遗余力。

亡羊补牢!

因为这些语言和基础设施在创造时都没有把并行化的问题放到优先的位置来考虑。

与它们相反,Erlang从其构思的时候起,就把“并行”放到了中心位置,其语言机制和细节的设计无不从并行角度出发和考虑,并且在长达二十年的发展完善中不断成熟。今天,Erlang可以说是为数不多的天然适应多核的可靠计算环境,这不能不说是一种历史的机缘。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hookah

木虫 (正式写手)

学习了一下!
2楼2010-03-24 08:50:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sondwall

铁杆木虫 (著名写手)


jjdg(金币+1):感谢交流 2010-03-24 12:06
敬佩楼主的学识渊博~~
3楼2010-03-24 09:15:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢参与讨论! 2010-03-26 16:30
这东西挖出来其实没什么用。Erlang的设计虽然是完全并行化的,但要命的是,它实现了一套自己的VM,线程控释方面都是自己在做,而于系统脱节。这虽然提供了强大的thin thread但牺牲了效率。已经有用Erlang实现的Web Server,测试表明,在并发性上没有比C有更大的优势。特别是在IO的时候。这个可以想象,因为C直接面对硬件,而Erlang则隔着一个中间层。

不过在一些大型的分布式环境中,Erlang的优势还是不小的。但在数值计算领域,我没有看到他的威力。

目前关注的另一个新兴语言是Google去年年底刚刚发布的Go-lang。这个同样原生支持并发的语言,号称在效率方面直逼C。

当然,已经发展多年的HPF也可能是数值领域的救世主。谁知道呢。未来真的很难说。
4楼2010-03-26 12:11:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚


余泽成(金币+1):您也来当专家吧! 2010-03-26 16:33
引用回帖:
Originally posted by holmescn at 2010-03-26 12:11:37:
这东西挖出来其实没什么用。Erlang的设计虽然是完全并行化的,但要命的是,它实现了一套自己的VM,线程控释方面都是自己在做,而于系统脱节。这虽然提供了强大的thin thread但牺牲了效率。已经有用Erlang实现的We ...

这个就与当年的Java情形类似。
俺就犹豫,是继续吃维生素呢,还是喝咖啡呢?

结果,虽然有了JVM,但是“一次编写,到处运行”,变成了“一次编写,到处调试”。

俺的体会:

桌椅板凳都是木头
大舅二舅都是他舅
不管是中餐还是西菜
都能加上维生素
可是咖啡,就不能撒上蒜末那样喝
5楼2010-03-26 12:44:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yalefield 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿华北电力大学能动专硕,293,求调剂 +3 15537177284 2026-03-23 5/250 2026-03-28 16:11 by xxxsssccc
[考研] 311(085601)求调剂 +3 liziyeyeye 2026-03-28 3/150 2026-03-28 15:29 by 1018329917
[考研] 317分 一志愿南理工材料工程 本科湖工大 求调剂 +6 芋泥小铃铛 2026-03-28 6/300 2026-03-28 14:15 by Ainin_
[考研] 317求调剂 +6 十闲wx 2026-03-24 6/300 2026-03-28 13:27 by Iveryant
[考研] 322求调剂 +5 旧吢 2026-03-24 5/250 2026-03-28 13:26 by Iveryant
[考研] 一志愿华理,数一英一285求A区调剂 +8 AZMK 2026-03-25 11/550 2026-03-28 13:16 by AZMK
[硕博家园] 北京林业大学硕导招生广告 +6 kongweilin 2026-03-26 8/400 2026-03-27 10:18 by FF_16
[考研] 材料学硕333求调剂 +8 北道巷 2026-03-24 8/400 2026-03-27 10:18 by 我是小康
[考研] 284求调剂 +11 junqihahaha 2026-03-26 12/600 2026-03-27 04:37 by wxiongid
[考研] 0703化学求调剂 +3 丹青奶盖 2026-03-26 5/250 2026-03-26 20:11 by macy2011
[考研] 化学工程085602 305分求调剂 +17 RichLi_ 2026-03-25 17/850 2026-03-26 19:44 by plmuchong
[考研] 一志愿211 初试270分 求调剂 +6 谷雨上岸 2026-03-23 7/350 2026-03-26 18:55 by 不吃魚的貓
[考研] 352求调剂 +4 大米饭! 2026-03-22 4/200 2026-03-26 16:40 by 不吃魚的貓
[考研] 085602 289分求调剂 +8 WWW西西弗斯 2026-03-24 8/400 2026-03-26 16:33 by 不吃魚的貓
[考研] 07化学303求调剂 +5 睿08 2026-03-25 5/250 2026-03-25 22:46 by 418490947
[考研] 求调剂 +3 李李不服输 2026-03-25 3/150 2026-03-25 13:03 by cmz0325
[考研] 一志愿武理085500机械专业总分300求调剂 +3 an10101 2026-03-24 7/350 2026-03-25 00:00 by 山鬼0-
[有机交流] 有机合成求助 20+3 FENGSHUJEI 2026-03-23 5/250 2026-03-24 19:31 by 88817753
[考研] 344求调剂 +3 desto 2026-03-24 3/150 2026-03-24 10:09 by 搏击518
[考研] 284求调剂 +3 yanzhixue111 2026-03-23 6/300 2026-03-23 22:58 by pswait
信息提示
请填处理意见