Dean Wampler谈编程语言(1)

点击这里下载MP3录音

 

摘要:这个访谈从讨论函数式编程(Functional Programming)开始,然后是培训程序员在Java中使用Scala,以及各种纯函数式编程语言于混合语言之间的区别,例如纯的Haskell和混合的Scala。接下来是讨论了针对其他编程语言程序设计范式的看法,以及解决问题的最佳范式和语言组合。

 

Dean Wampler个人简介:

Dean Wampler是编程语言Scala的共同开发者,Aspect Research的共同拥有者以及负责人。他的经验领域包括多种编程语言,多种语言设计范式,以及各种软件技术。他曾就职于Object Mentor和其他行业,包括创办互联网,无线网络通讯,医疗电子公司以及各种工具的提供商。

 

访谈

问:Dean,你能简单地介绍一下自己,以及你从事的事情吗?

我最近在Object MentorBob大叔的公司,在美国的感恩节滞后,我开始DRW工作,我已经在这里待了好几周了。我现在非常地快乐,还在享受QCon

 

问:你现在对编程语言感兴趣,你最近一直忙于此,对吗?

是的,我是个实用主义,我喜欢把事情做完,并且我总是在探索新方法,能够把事情做得的方法。我最近正在深入Scala,并基于Twitter的框架为O’Reilly写一本书,他为我写书提供了最酷的素材。但是我也喜欢Clojure,我真的对类Lisp语言非常感兴趣,同时我也用Ruby做了很多事情,还用Java也做了一些有用的事情。

 

问:让我们一个一个说吧,是什么让你对Scala感兴趣,最近的有什么经验?

是的,我猜几年以前关于函数式语言叽叽喳喳的讨论就已经开始,我认识到我需要学习更多的有关知识,所以我决定找到一门最好学习的语言,然后我在某种程度上选择了Scala,不仅因为Scala是一门非常实用的语言,而且它还是最合适从Java迁移过来。它还具有非常实用的优势。

 

问:你究竟发现什么,以至于你认为Java开发者会觉得使用Scala会很舒服?

如果你是Java开发人员,那么你会发现一件非常有趣的事情。给他们Scala,他们会发现在Scala中可以写非常漂亮Java代码。所以在Java中使用的对象,都可以在这里,而且是更加简单的语法。即使你还没有开始任何的函数式编程,你立即会有比较好的,深刻的印象。另一方面,因为这是你使用得非常舒服的预言,所以你会开始学习函数语法,直到你变成一个优秀的函数式编程者,最后,你会比所有程序员都更优秀,至少我是这么认为的。

 

问:难道你不担心,如果人们可以选择不迁移的时候,他们不会选择迁移吗?即使你给了他们Scala,并且它和Java是那么地有粘性,他们还是从不选择函数式语言?

我认为这是一个合理的担心。如果你真的打算学习函数式语言,有一种情况是选择一门纯函数式语言,例如Haskell或者是Clojure,为了不让你回到原来熟悉的地方。我坚持认为逼迫自己去做一些不舒服或者不知道的事情像是一种自我惩罚,但是,另一方面,一般的程序员在实际中会发生这么一种情况“我已经工作了8个小时,每天都是如此,如果每天都能学一点,并且在项目中使用的话,这可能是一个更实际的选择。”但是,你会说,选择一门纯语言开始学习会更好一点,然后再退回去,重新选择一门混合语言,例如Scala

 

问:比如Scala这样混合的语言,你会同时拥有面对对象和函数式编程。但是它们之间的交互可能会变得很复杂。人们提出来说,它会变得更复杂,会混淆两者。对此,你是怎么认为的?

我认为这是对的。能够把这样两种语言组合得如此有意义,我认为Scala是一门非常具有创新性的语言。在Scala中,函数即是对象,每一个对象也可以看成是函数。如果你有一个应用的方法,你也可以把它当做一个函数来使用。另一方面,这两个易变性之间的确存在一种拉力,这种拉力在面对对象和强调不变性之间也是非常普遍的。

 

我认为这是一个非常有创造性的拉力,至少你可以选择其一。不管哪一个在这种情况下会更适用。这都迫使你去思考,什么是正确的方式,怎样使用这种方法能够达到最大的优势。其次,还有很多其他折中的方案,例如,怠慢一点的方式在Scala里面就不是问题,但是在Haskell却是问题。我认为你不可能得到到纯函数式编程的所有好处,但是你可以得到其中的大部分.

 

【未完】

 

【原文链接:http://www.infoq.com/interviews/wampler-programming-language

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值