Python之父Guido van Rossum在2013年1月正式从Google离职后并正式加入 Dropbox。2013年8月19日,Slashdot 网站发起了一个对 Guido 的访谈主题帖,网友在评论中提问。8月25日,Slashdot 在另外一个帖子中汇总了“面向对象、函数式编程、PyPy、Python 3”等问题和回复。该汇总帖现已由 贱圣OMG 翻译成中文。 从Google到Dropboxnurhussein 提问:“Hi,是什么促使离开Google去Dropbox的?你之前在Google主要做什么?以后在Dropbox会做什么?” Guido:在Google呆了7年之后,我已经准备好生活里有一些变化,而这时Dropbox的工作机会正好契合了我的想法。以较高的层次来看,我的工作仍然没有什么变化:
一些细节当然是不同的。我在Google只做了两件事:最开始的两年我从事在线代码审查工具Mondrian的开发。这个工具从来没有被开源,但是它促使了 Rietveld 的产生,它被Python,Go和Chromium 社区使用。在我加入Google App Engine后,我做了很多不同的事情,大部分是Python方面的事情。我Python的最后一个大项目是一个新的Python数据库API,NDB。 我已经来Dropbox7个月了,我在这主要的工作是设计Dropbox数据存储API。用到这个词来描述这个数据存储有点讽刺,但是不是我的错——Dropbox数据存储和Google App Engine数据存储有一点重叠。 更讽刺的是,即使我做了如此多的设计工作,用Python完成了两个原型,但是我们上个月发布的SDK里面只支持Java,Object-C和Javascritp。不过我正在完善它,这次采访拖累了我的进度。
为什么Python避开了一些常见的面向对象风格由 i_ate_god 提问:“接口,虚类,私有成员,等等…为什么Python没有这些特性” Guido:我能想到的有两个原因:你并不是真的需要它们,并且如果没有编译时的类型检查会很难实现。Python是作为一个臭鼬工厂的项目开始做的(没有被管理层支持和鼓励但也没有阻止),并且我希望能够快点出一些成果。这指引我移除了一些不是真正需要或者继续的特性;这也让我进行运行时的所有类型检查,它限制了Python能够支持的特性。我也不是面向对象的忠实信徒——我只是想要一个简单的语言,它因为意外或多或少地变得有一些面向对象。 在现代的Python里,针对这些特性有一些粗糙的等价语法,但是它们并不是一直很好的工作,或者它们导致了一大堆的上面的执行,所以它们一般是被避免的,但是它们也有其用处。
函数式语言由 ebno-10db 提问:“有些人提出,Python是,至少一部分,是一种函数式语言。你不同意,我也是。只是有一些map和filter类型函数并不会让它成为函数式语言。以我的理解,这些函数是被一些思念list的人加到库里的,并且你已经尝试了几次去掉它们。总的来说,你不是一个函数式编程的粉丝,至少从Python上来看不是。 问题:你是否感觉函数式编程方法总的来说不是特别有用,或者它不是十分适合Python?很希望听到你不同方面的原因。” Guido:我并不是把一个想法做到极致的信徒,我试着在设计选择的时候走实用主义的路子(但不是“太”实用主义)。我会衡量现实代码的可读性和可用性。有些地方 map( ) 和 filter( ) 是适合的,但是另一方面Python有列表推导。我不再讨厌 reduce( ),因为我曾经只用 (a) 来实现sum( ),或者用(b) 可读性不好。所以我们添加了内建的sum( ),将reduce( )移除出内建函数,移到了一个工具函数里。 我对函数式语言的看法,就是它们都用非常强大的编译器,比如Haskell。对这样的一个编译器,函数式泛型是非常有用的,因为它让大量的转变成为可能,包括并行化。但是Python解释器并不清楚你的代码的含义,这也是很有用的。所以,我不认为把一下函数式的思想加入Python是合理的,因为这些在函数式语言里是很有用的,但是不适合Python,并且这会让代码对不使用函数式编程的人非常不具有可读性(这里指的是大部分程序员)。 我也不认为现在函数式语言的成果已经让它准备好成为主流。不可否认的是,我对于Haskell一些相关的领域并不是很了解,但是任何没有Haskell流行的语言都有它的实际用处,我也没有听过有别的函数式语言比Haskell更流行。对于Haskell,我认为让很多编译器技术得到证明是非常棒的,但是它的“纯净”会是它被人接受的最大障碍。它的单一让它对于大部分人是不适合的。
|