【大神来了】Elixir语言设计者José Valim:释放Erlang VM的能量

原文链接:http://www.csdn.net/article/2015-10-27/2826040-Elixir-Jos%C3%A9Valim

Elixir是一种运行于Erlang VM上的函数式、具有元编程特性的动态语言。它拥有灵活的语法和强大的宏系统,还具备模式匹配、通过协议(类似Clojure的方式)支持多态等功能;继承了Erlang的优点,尤其适合开发并行、分布式,以及高容错应用。Erlang之父Joe Armstrong也对Elixir赞赏有加。日前,Elixir设计者José Valim接受了CSDN专访,分享了他在设计这门语言时的感悟。

Elixir设计者,Rails核心团队成员,Plataformatec联合创始人José Valim

语言成熟需待时间酝酿

CSDN:你设计Elixir的原因是什么,希望解决哪些问题?

José Valim:Erlang VM是种神奇的软件,在过去十年中,许多公司使用它编写出了高并发、分布式和高容错性软件。Elixir的主要目标是将Erlang VM通过另一种语法和另一套工具暴露给开发者。

最终,我希望Elixir和Erlang将能共享相同的字节码和数据类型。这意味着开发者可以同时拥有Elixir的表达力,以及Erlang具备的高可靠性和高性能。

CSDN:Elixir的语法在很大程度上借鉴了Erlang和Ruby,为什么你没有选择一种更激进的变化?

José Valim:在Elixir设计初期,我知道自己需要Elixir具备宏系统,这是从Lisp中得到的启发。对于宏系统,只有在一种编程语言的语法能通过它自身的数据结构,以一种很直接的方式表达的情况下才合理。带着这个目标,我设计了一种非常简洁的语法,而后逐步增加层次,这部分灵感大多来自Ruby和Erlang中的惯用法。

由于Elixir的目的是增强Erlang,所以我在做设计决定时经常向Erlang的语法和语义靠拢,这样就可以帮助开发者更好地融入生态圈。

CSDN:我们知道一种语言的成熟可能需要经历漫长的过程。在设计的过程中,哪些部分你用心最多?

José Valim:设计一种编程语言,对耐心的考验比努力更多。首先你需要明确一系列目标,然后在你希望语言发展的方向上宽广地推进,给你自己和语言都留出更多时间,然后观察这些目标之间如何演进与调和。

倘若你试图一蹴而就,或者不对未来做打算,不为演进留出空间,就将得到一种不一致的语言——也许能实现所有目标,但这些目标之间却龃龉相抵。

CSDN:请给我们详细谈谈Elixir的设计目标。

José Valim:Elixir的设计目标可以概括为兼容性、高效率和扩展性这几部分。

之前已谈到兼容Erlang VM是Elixir的目标之一,当我们谈到Erlang这个词,可以将它分解为下面三部分:

一种函数式编程语言Erlang;

一系列设计原则,称为OTP;

Erlang虚拟机,称为EVM或BEAM。

Elixir与Erlang运行在同一种虚拟机上,并兼容OTP。不仅如此,所有Erlang生态系统中使用的工具和库,Elixir也能使用,因为在Erlang中调用Elixir没有任何性能代价,反过来也是如此。

所有Elixir代码在轻量级进程中运行,包含自己的状态,用于彼此交换信息。Erlang VM将这些进程分配到多个处理器核心中,使代码可以轻松地并行执行。

如果你编译Elixir代码,会发现CPU中的所有核心都在开动。当像Parallella这种技术变得更容易获取且成本更低廉时,你很难忽视Erlang VM所能提供的强大能力。未来Erlang VM将会被用来搭建能永久运行、能自我修复和扩展的系统。

效率很难测量,能高效开发桌面应用的编程语言却可能在数学运算领域捉襟见肘,它与你期望从事的领域、生态圈中的可用工具,以及是否能方便地创造和扩展这些工具有关。

基于这种原因,我们选择了简约的语言核心。在许多编程语言中,if、case、try这些关键词都需要专门的语法分析器,而Elixir中只有宏。这样做的好处之一是,开发者可以自己扩展语言,以适应他们自己的工作领域。宏还是Elixir元编程的构建基础:具备通过代码生成代码的能力,令开发者能摆脱烦琐的工作,创造出更强大的工具。

宏也对语法有巨大的影响,前面已经提到。尽管许多关于语言的话题一开始就会讨论语法,但在Elixir身上,从未将“简单地提供另一种不同语法”作为它的目标。

尽管基于简洁的语言核心,开发者可以构建和扩展针对自己领域的语言。但Elixir还继承了擅长并行和分布式应用的特点。在这些领域,Elixir补充了下面一些标准库:

Unicode字符串和相应的操作;

强大的单元测试框架;

更多数据类型;

多态记录;

严格和惰性枚举API;

便于脚本操作的函数,例如路径和文件系统;

一些用于编译和测试Elixir代码的项目管理工具。

此外,还有更多库、模块、协议等便于扩展的特性。

以源码为良师

CSDN:你都是通过哪些方式提高编程技能?

José Valim:我的阅读量很大。既读书,也阅读其他开发者的代码。我觉得每个人都不应该畏惧自己所使用项目的源代码。当然,我也通过在现实问题中实践来提高自己。

CSDN:Elixir的名字有典故吗?

José Valim:我很希望有,不过很可惜,这个名字其实没有特别的出处。

CSDN:Elixir已足够成熟,可以用于生产环境吗?

José Valim:Elixir确实已可以用于生产环境了,已有开发者和公司将它应用到了产品中。不过,Elixir社区的发展速度很快,所以开发者还需要跟上语言发展的步伐。

CSDN:在设计和发展Elixir的过程中,你有哪些经验可以与读者分享?

José Valim:我最喜欢的一条建议是“Use the source, Luke!”(《星球大战》中的一句话)。阅读你所使用的工具和项目的源代码会让你变成更好的程序员,也会让你更好地理解它们,还会让你对在社区中贡献更近一步。公开软件的源代码是一件美好的事情,它曾经(也依然)是我最重要的老师。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339

推荐阅读更多精彩内容