中企动力 > 头条 > 泛型

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

泛型

Slashdot对Python之父的采访:关于Python的未来 推广视频课程

img

沈缨缨

关注

Python之父GuidovanRossum在2013年1月正式从Google离职后并正式加入Dropbox。2013年8月19日,Slashdot网站发起了一个对Guido的访谈主题帖,网友在评论中提问。8月25日,Slashdot在另外一个帖子中汇总了“面向对象、函数式编程、PyPy、Python3”等问题和回复。该汇总帖现已由贱圣OMG翻译成中文。

从Google到Dropbox

nurhussein提问:“Hi,是什么促使离开Google去Dropbox的?你之前在Google主要做什么?以后在Dropbox会做什么?”

Guido:在Google呆了7年之后,我已经准备好生活里有一些变化,而这时Dropbox的工作机会正好契合了我的想法。以较高的层次来看,我的工作仍然没有什么变化:

1、花费一半时间来做作为Python的BDFL需要做的事情

2、在公司里作为一名普通的工程师(不是一名经理或者团队领导者)

3、做什么代码审查,架构和设计工作

4、处理很多email

5、用Python来完成我的很多工作

一些细节当然是不同的。我在Google只做了两件事:最开始的两年我从事在线代码审查工具Mondrian的开发。这个工具从来没有被开源,但是它促使了Rietveld的产生,它被Python,Go和Chromium社区使用。在我加入GoogleAppEngine后,我做了很多不同的事情,大部分是Python方面的事情。我Python的最后一个大项目是一个新的Python数据库API,NDB。

我已经来Dropbox7个月了,我在这主要的工作是设计Dropbox数据存储API。用到这个词来描述这个数据存储有点讽刺,但是不是我的错——Dropbox数据存储和GoogleAppEngine数据存储有一点重叠。更讽刺的是,即使我做了如此多的设计工作,用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,我认为让很多编译器技术得到证明是非常棒的,但是它的“纯净”会是它被人接受的最大障碍。它的单一让它对于大部分人是不适合的。

多行lambda表达式

由NeverWorker1提问:“对于Python,有一个最常见的抱怨就是它的对于lambda表达式的限制,也就是说一行里不能赋值。很明显,Python对空格的处理是导致这样的主要原因。我已经花了一些事件思考实现多行lambda表达式的可能性,然后我能想出的最好方法是硬塞进一些不用的符号,比如C语言风格的大括号,这样最多有点乱。有没有更好的方法,你觉得这个功能会被添加上吗?”

Guido:真的?我基本上从来没听到过那些抱怨,除了在Slashdot采访里提问题的人。

这确实是更好的方法,这里使用def关键字在本地作用域定义一个正规的函数。这个被定义的函数对象变成了一个本地变量,而这根使用lambda是相同的语义,除非这里用到了一个本地变量,并且这里没有任何语法的限制。例如,以下两种写法的语言是相同的:

1defmake_adder(n):

2__defadder(x):

3____returnx+n

4__returnadder

然后这是使用lambda的表达式:

1defmake_adder(n):

2__returnlambdax:x+n

AndrewKoenig有一次向我指出了在一种场景下,lambda是非常适合的,那就是你有你个很长的list或者dict包括很多lambda表达式,因此如果你想不用lambda实现的话,那么定义一大堆函数,给它们命名,然后用list或dict里的名称来引用它们就会让你受不了。但是,在那种情况下,lambda表达式是足够简单的,如果你有一些异常,在list或dict之前使用def才是一种好的妥协。

PyPy

由Btrot69提问:“你觉得PyPy代表未来的发展方向吗?你是否对此表示怀疑?如果是,为什么?”

Guido:我对此仍然持怀疑态度,有两个原因:(1)它们还不支持Python3。(2)还有很多扩展模块不能很好的支持。但是我希望它们能修复那些问题。作为PyPy项目的竞争者,Jython和IronPython会让CPython项目保持其发展势头。

浏览器运行Python?

多年以来,曾经尝试几次创建一个沙箱版本的Python,使之能够运行在浏览器上。主要是因为Javascript的问题。而现在针对Javascript做的工作,我们有了一个很好的替代品CoffeeScript——那现在是不是已经是时候来实现让Python运行在浏览器里的功能了?

Guido:我在1995年就放弃了这件事。并且请不要把Python编译成Javascript。它们的语义非常不同,结果是你用Javascript写了一个Python运行时,它会让运行变得太慢。

Python3

由MetalliQaZ提问:“你对目前向Python3的迁移的迁移感觉怎么样?从一个用户的角度来看,一些流行的库的转变还差得很远,而这阻碍着这种过渡。在我的专业所及的地方,基本上我用的所有系统都没有安装3.x解释器。事实上,2.7也很少,我想听听你的看法。”

Guido:很好奇你在哪工作。我同意向Python3的迁移会持续很长时间,但是如果你的系统还没用上2.7版本的话,那就真是有点古老了!在我离开Google的时候,所有向Python2.7过渡的工作全部完成了(在前几年已经成功的从2.4迁移到2.6),在Dropbox这里,客户端和服务器端都是用的2.7。这两个公司都在考虑Python3的问题了。

再来说向Python3的迁移,我实际上是相当乐观的。很多流行的库都开始着手做这件事。它确实会持续很长时间,但也有很多进展,过几年之后,我希望所有的代码都能迁移到Python3上来。完全根除Python2的使用可能会花更多的时间,但是呢,WindowsXP不也是没完全死掉吗。

真实的C++之父 推广视频课程

img

Leonard

关注
真实的C++之父

——BjarneStroustrup访谈录

赵玉勇

BjarneStroustrup简介

 

许多重要人物之所以成名,或者是因为其改变了历史或者是因为其创造了历史,BjarneStroustrup先生,C++之父,属于后者;归结个人成功的原因,理由可能有许多,但他只有浅显的两个一点点:他比多数人天真和理想主义那么一点点;比多数人花在解决问题上的时间多一点点。

C++程序设计语言是一种承前启后,被数以百万计的程序员应用在各个领域中的语言,我们正在使用的Windows操作系统,我们上网用的浏览器IE无不是出自C++的手笔。

C++是一种重要的和比较流行的计算机语言之一,也是未来十年内仍然发挥重要作用的语言。C++语言是一种通用的应用广范的程序设计语言,是一种既支持传统的结构化程序设计,又支持面向对象程序设计的系统复杂的语言。C++C语言的扩充首先由Stroustrup先生于1980年在贝尔实验室提出的,于1983年改名为C++。尽管C++的祖先C语言是世界上最受喜爱和应用最广的专业程序设计语言之一,但C++的发明是必需的。C++的本质就是让程序员理解和管理更大更复杂的程序。而对这种语言有着最大贡献的C++之父又是怎样一个人呢?

BjarneStroustrup先生,1950年生于丹麦港口城市奥尔胡斯,1975年在奥尔胡斯大学毕业,1979年获得剑桥大学计算机科学博士学位。他是C++语言的设计者和实现者,现在是得克萨斯州A&M大学计算机系教授。1979年他来到美国的新泽西州并加入贝尔实验室,与C语言之父、1983年图灵奖得主DennisRitchie以及大名鼎鼎的BrianKernighan(两人合著《C程序设计语言》)共事多年,期间参与了贝尔实验室的C语言标准化活动。他的研究兴趣十分广泛,包括分布式系统、操作系统、仿真、设计以及编程,Bjarne还积极推动C++ANSI/ISO标准化。

20世纪90年代以后,BjarneStroustrup步入人生的最辉煌时期。

1990年,Bjarne荣获《财富》杂志评选的“美国12位最年轻的科学家”称号。

1993年,由于在C++领域的重大贡献,Bjarne获得了ACM该年度的GraceMurrayHopper大奖并成为ACM院士(成立于1947年的ACM协会是历史最悠久、目前世界上最大的教育和科学计算协会,成为ACM院士是个人成就的里程碑)。

1995年,BYTE杂志颁予他“近20年来计算机工业最具影响力的20人”的称号。

除了他的专业研究领域外,他对历史,通俗文学,摄影,运动,旅行和音乐等有广泛的兴趣。他对C++

STL之父Alex Stepanov访谈 企业视频课程

img

邬达

关注
数学、电脑和英语——一个也不能少——STL之父访谈录

赵玉勇

AlexStepanov简介:AlexStepanovSTL(标准模板库)之父,并因此而荣获第一届Dr.Dobb's程序设计杰出奖,现在是Adobe公司首席科学家。他曾是康柏电脑公司的副总裁和首席科学家,AT&T实验室副总裁和首席架构师,SGI服务和超级计算机业务首席技术官。

AlexStepanov先生官方照片
什么是STL呢?STL就是StandardTemplateLibrary(标准模板库)的简称,它是由AlexanderStepanovMengLee在惠普实验
室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前,AlexDavid Musser已对该技术进行了很长
一段时间的研究。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有
的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。这里的
“容器”和“算法”是多年来编程应用中常用组件的集合,STL的贡献是将各组件和接口泛化及标准化。这样你就不用重
新开发它们了,但你可以使用这些现成的组件来编写程序,STL现在是C++的一部分,任何C++平台都包含着它。
中国您好!
对于STL之父Stepanov先生来说,这是第一次到中国来参加ICESS会议,对伟大的中国和美丽的杭州的期望和我们大家没有
太多区别——美食+乌龙茶。而他对古代中国和中国数学家的了解,更是让人佩服;当然,更有他对中国程序员们的祝愿!
除了祝愿,还有大师的点滴看法,毕竟不能只说好听的!——真正的朋友都是这么做的。
问:您来过中国吗?你对中国的印象是什么?
Alex:这将是我的第一次中国之行,我期待着参观伟大壮观的中国。当然我也期待着吃一顿丰美的中国大餐,品一杯正宗
的乌龙茶
问:您对中国和中国的程序员有什么认识吗?你最想对他们说什么呢?
Alex:中国是一个伟大的国家。曾有过许多伟大的数学家:秦九韶的《数书九章》就是古代数学中的经典;《孙子兵法》