Erlang = 未来的 C语言?

        Erlang变得时髦了,这很有意思。第一次看到Erlang的人一般会以为它是一个很新的语言,像是Ruby, Python, Lua之类的后起之秀。实际上它比C++还要大4岁,照理说早该休息了。为什么Erlang会重新受到关注?我想原因大概有这么几点:

        首先,CPU的多核化挑战。CPU靠频率提升性能在现有的技术下遇到了瓶颈,只好搞多核来继续发展,可是一直以来的主流编程技术都是以单核为主要使用场景的。玩游戏的都知道,双核的低主频电脑跑不过单核但是主频稍高的电脑,因为另一个核分不到多少事情可干。所以,基本上现在流行的语言近期都加上了并发编程机制。可是这些增加的机制就好像在衣服上打的补丁,难以在根本上解决问题。目前使用JavaC#这类主流语言写并发程序是一件很不容易的工作。为什么呢?因为语法。一个变量潜在的可以被很多语句使用(共享内存),这就导致一段程序很难被分配给多个CPU去执行。想象一下,两个厨师用一套炊具会怎么样?就要把炊具放在某个固定的地方轮流取用,这就是临界区的概念。还得有个规矩,用勺子之前喊一声,免得撞车,这就是锁的概念。这样做,无论有多少厨师,总体的炒菜速度取决于有多少勺子。Erlang的解决方法很简单,每个厨师用自己的勺子。Erlang中就没有传统意义上的变量(共享内存),有的只有数值。当你把程序分散到不同进程执行时,就像让每个厨师做不同的菜,不用担心有人抢你的勺子。另外,Erlang的进程并非所谓操作系统意义上的进程,开销很小。网上有人统计,用Erlang写的Web服务器Yaws可以处理10倍于Apache的并发用户连接,很吸引人吧。

        其次,大规模分布式计算和容错。如果你接触过电信、金融等行业,你将不可避免遇到这类问题:服务不能停——有机器停了业务功能要能自动切换到其他机器上;要能通过添加硬件线性提高系统吞吐率,等等。基于Java或大型主机的系统的扩展很昂贵,主要是很难总体上在多个主机间均匀分摊任务,只能根据服务器功能分段分摊,再加上前文所讲的锁定机制,会导致大量资源的浪费。另外,各种服务的监控没有统一技术基础架构,基本上都是定制的,也不是很可靠。将Erlang的进程分摊到多个主机是比较简单的,而且在编程上与单主机并无太大不同。Erlang提供了现成的解决诸如进程监控、调度、运行时对部分故障代码热替换等机制,无需程序员去操心。Erlang其实本来就是爱立信用于编写大型交换机等软件而开发的,已经被使用20多年了,据说达到了99.99999999%99)的可靠性,很多Erlang写的服务器从log上看已经N年没有停止过。

        第三,Google的示范效应。Google不用大型机,用大量普通的电脑集群的事情,想必大家都知道。那么,如果你知道Erlang在其中扮演的角色,就不会奇怪为什么Google这么牛了。人家可是站在巨人的肩膀上啊。Erlang能加速推动“云计算”——这可是大词儿(在这写上,本文定会提高搜索排名)。

        最后,科学的优美。在编程界听到最多的就是“面向X”,大家都在猜想下一个该“面向”什么。其实所有的“面向”都是以偏概全、矫枉过正。程序实质上是对现实世界的一种抽象。你可以把事物理解成对象的交互,也可以是结构与过程,或者不同的角度和方面,服务与被服务——其实什么都是,又不全是,就像你我看到的,一个混沌的宇宙。人类所发明的最伟大的能够描述这个世界的工具,就是数学。数学是一切科学的基础。数学的基石是公理,之后是以公理为基础的定理,定理由公式来描述。函数型的计算机语言来自对数学公式的模仿,Erlang是函数式语言。Erlang没有Class等概念,没有反射API,有的只是可以环环相扣的函数表达式。但是20多年来从没有人要给Erlang添加所谓面向对象特性,象C++之于C那样。对于类似Java的语言,进化的过程好像语文,不断发明新的词汇以满足表达的需要,又似乎永远都不够。但是Java很流行,因为所有人都可以学会一些字,小学二年级也可以写作文。Erlang很难流行,就像没有多少人愿意与数学公式打交道。Erlang的代码很简洁,对于精通的人像真理一样优美,但写得漂亮就像寻找真理,就像E=M*C2 Erlang直到现在才被大家关注,就像相对论当年出现在大众的视野——直到有人想制造原子弹。

        回到本文的主题, Erlang = 未来的 C语言?喔,算是一种猜测吧。C的地位毋庸置疑,除非电脑的基本设计原理变了,否则可以认为是硬件的代言人—— C可以说就是汇编的直接映射,但具有很重要的可读性和可移植性。过去十几年产生的编程语言的解释或编译程序(或虚拟机)基本上都使用了C,与硬件直接交互的或非常追求性能的程序就不必说了。Erlang出生较早,所以仍然保留着位操作等低级语言的特性。笔者认为,Erlang该接C的班,作为多核时代的新的机器级抽象层。如果我去写一个新的具有更高抽象能力的语言(去给讨厌Erlang语法的人用?),我会考虑用Erlang做虚拟机,继承其多核操作的高效性,天然的分布式计算,以及热代码替换支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: Erlang 是一种功能强大的编程语言,被广泛应用于并发和分布式系统的开发领域。最新的 Erlang 版本是 25.0,它引入了很多重要的改进和新特性,使得 Erlang 更加高效、可靠和易用。 首先,Erlang 25.0 的性能得到了显著提升。该版本引入了 JIT(即时编译)功能,可以将一部分代码转化为本地机器码,提高了代码的执行效率。此外,Erlang 25.0 采用了新的调度算法,可以更好地利用计算资源,提高系统的并发处理能力。 其次,Erlang 25.0 为开发者提供了更好的工具和语言支持。该版本引入了一些新的库和组件,包括 ETS2(更快速的哈希表实现)、jinterface(使得与 Java 的交互更加方便)等。此外,Erlang 25.0 支持 Unicode 13.0 标准,使得处理多语言文本变得更加简单。 最后,Erlang 25.0 的稳定性和安全性也得到了加强。该版本修复了一些严重的漏洞和错误,增强了代码的鲁棒性。此外,Erlang 25.0 支持 TLS 1.3 标准,提供了更好的安全性保障。 总之,Erlang 25.0 是一个非常重要的版本,为 Erlang 生态系统带来了很多好处。对于想要使用 Erlang 进行并发和分布式系统开发的人来说,升级到 Erlang 25.0 是一件非常值得考虑的事情。 ### 回答2: Erlang>=25.0是指Erlang编程语言的版本号要达到25.0或以上。Erlang是一种高级函数式编程语言,它广泛用于开发并发、分布式、可伸缩的系统。Erlang在通信、金融、医疗等行业有着广泛的应用。 随着技术的不断发展,Erlang不断更新版本来满足用户需求,提高性能和稳定性。Erlang>=25.0包含了许多新特性和改进,如更好的socket支持、更快的OTP启动、更快的垃圾回收等等,这些功能的加强和改善使得Erlang编程的效率更高、运行更稳定、响应更快。 与此同时,使用Erlang编程也需要有相应的技术水平和经验。随着Erlang版本的更新,开发人员需要不断学习新的特性以及使用技巧,才能更好地发挥Erlang的优势。因此,在使用Erlang进行开发时,需要关注Erlang版本的更新,并在实际使用中不断优化和完善,才能更好地应对日益增长的业务需求。 ### 回答3: Erlang是一种基于并发的编程语言,它始于瑞典电信公司Ericsson的工程师团队。Erlang的设计目标之一是支持可靠、高可用性的分布式系统。随着技术的不断发展,Erlang的版本也在不断更新。而Erlang>=25.0是指Erlang的版本号大于或等于25.0。那么,Erlang这个版本号的变化对Erlang带来了哪些重要的改进和优化呢? 首先,Erlang>=25.0版本的最大的改进之一是对Erlang的调度器进行了重大的升级。新的调度器提供更高效的线程调度方式,能够更好地利用硬件资源,提高程序的运行效率和响应速度。 其次,Erlang>=25.0版本还加入了一些新的特性,比如对MIX工具的升级,其中包含了更加便利的Erlang包和应用管理工具,能够更好地提供构建、测试和发布各种Erlang软件项目的支持。 第三,Erlang>=25.0版本也加入了对OS监测的增强,包括对Linux、FreeBSD和Windows等操作系统的支持,提供更加准确的监测和诊断信息,帮助用户更好地定位和解决系统问题。 最后,Erlang>=25.0版本还优化了Erlang系统的容错性和安全性,提高了Erlang在云计算、大数据和分布式微服务等领域的应用和性能。 总之,Erlang>=25.0版本的升级带来了诸多改进和优化,使Erlang更加适合开发高可用性、分布式系统,同时也为Erlang的应用和新技术的开发带来更多新的机会。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值