阅读更多
【听译大师说话】是我最近打算搞的一个系列。我以前觉得看这些大师访谈并没有什么意思,他们的想法大多在书本和网站都有所介绍,他们本人也接受了很多访谈,估计说的也都是些套话,所以没必要看。最近听了两个访谈,一个是采访 python 创始人 Guido van Rossum 的,另外一个是采访 php 创始人 Rasmus Lerdorf, 让我感触很深,很多以前的一些困惑得以解释。我想这些访谈节目应该让更多的人知道,所以我觉得应该把这个系列搞下去,一是锻炼自己的听力,二是更好的学习技术。 我的英语水平不算太好,好在我也算是一个程序员,相信做此类访谈的翻译要比英语专业的人要更准确一点,而且我听译的内容大多是我喜欢的,也有兴趣做下去。我不是干这个事情的最合适的人,但是很多比我更合适的人却不愿意做它,所以大家只能凑合看了。我尽量做到不翻译错,如果有那些地方说的不对,希望大家指正。

下面是这个【听译大师说话】系列的第一篇的第一节《  python 创始人访谈录 1: 关于 django 和 ruby  》
[img]http://blog.codingnow.com/mengyan/python.jpg" alt="" width="533" height="400[/img]
主持人: Chris DiBona (Google 开源网站负责人) and Leo Laporte (Twit 网站创始人)

被采访人:
Guido van Rossum (python 创始人)

Leo : Python 缺少一些本地的 gui 库吧,只有 tk 什么的, 你觉得这是不是一个问题呢?
Guido: 现在这越来越不成为一个问题了,因为越来越多的人使用 web 来做任何事情。
Leo :web 就是界面了
Guido: 但是的确也不解决什么问题,正如我说的:“ python 的 web 框架比语言中的关键字还多” , 我个人最喜欢的一个,也是我长期的选择框架是 django
Leo :我正打算问你 django 的事情, 最近有人写了一篇文章,我想是在 rails 网站上最先介绍的,它测试了,django , rails 和 perl 的 web 框架,django 的速度是最快的,远远超过其他。
Guido: 这很有趣,我没听说过这个。
C:你怎么测试一个 web 框架啊?
Leo :他们设置一些 web 测试应用程序,建立一系列的事务测试案例来测试事务操作, django 的速度相当的快,相当的快。 跟我们讲讲 django 吧
Guido:我是一个对 django 非常满意的用户,并在项目中使用了一些 django 。我将 django 称为“第二代” python web 框架, 第一代是指 zope 和 twisted, django 是由两个在堪萨斯新闻报社工作的小伙开发的,并非是一个很有名气的地方。
Chris:很奇怪,Zope, plone 也是来自报纸网站的
Leo :他们要流程化他们的工作流,这对他们可是很重要的事情。
Guido:也许是这个原因吧,堪萨斯的这家报社希望建立一个给当地人提供信息的本地网站,该网站必须对读者的响应非常及时,必须很快地发布内容,并不是简单把文章发布到网站上这样谁都可以做的事情,它必须很容易更换整个网站的外观,添加一些新的创意,一些新功能,增加一些新的应用。例如,发布本地体育赛事新闻,提供关于球队链接和照片等各种感兴趣的信息,他们希望这东西能很快运作。我想他们做这个有两年了吧,这两个小伙子和一群编辑在一起工作,编辑为他们提供内容。在工作的同时,他们觉得有必要做一个框架,他们从他们的第一个网站应用中提取了框架。  通过编辑对他们不断提出的对网站修改需求,他们对框架增加更好的灵活性,后来他们决定说“我们开源吧”,他们的想法得到了报社的支持。然后有趣的事情就发生了。我想现在报社还在部分地使用 django 吧,这两个小伙可能也不再在报社工作了,他们开始了 django 开源项目。我觉得最棒的一点是,我跟这两个人谈过好几次,看了他们的演示,了解他们是如何工作的,他们的确做到了开源。他们有很好的许可证协议,就我而言,最重要的是,整个过程,他们运作用户社区的方式,他们的做法,他们寻求在混乱,民主之间的平衡,让许多用户添加功能,提供想法,但是又不失去原有的想法和框架的灵活性,我觉得做的非常的棒,使得 django 成为一个越来越好的产品, 这已经远远超过当时堪萨斯报社所需要的。
Leo :那个测试是在 ruby on rails 的 wiki 网站上的
Guido: 现在能访问吗,我想看看
Chris:ruby on rails 的 wiki 无法访问了吧
Leo :不,就在那里,文章是 framework performance, django 网站关于这篇文章的链接是坏的,他们测试了 symfony, 不是 perl 的框架,是一个 php 的 web 框架,以及 rails, django ,django 相当的快,几十倍的。
Guido: 哇,我知道 django 开发组的确花费了相当的时间使得他们的模板机制运行的相当流畅
Leo :他们当然使用了 modpython 以获得更好的性能。
Chris: modpython 是一个 apache 的 python 模块,使得 python 的运行更加快速
Leo :我要看看 django ,的确令人印象深刻
Guido:当然,我强力推荐它
Leo :我也看过 turbogear , 我经常上的一个网站“doggdot” ( http://doggdot.us/ ) 是用 turbogear 做的
Guido:什么名字?这名字太难听了
Leo :doggdot.us 结合了digg, slashdot, del.icio.us into , 它是用  turbogear 写的,这也是另外一个 python web 框架,看来还有许多其他的 python web 框架吧。
Guido:哦,看来 turbogear 和 django 现在正在竞争 web 开发的市场份额
Leo :我喜欢 ruby on rails , 我喜欢 ruby 的一个原因是,它从很多方面很像 python
Guido: 的确,它看上去很像 python
Leo :当然了,不过它的面向对象是从头做起的,任何东西都是对象(everyting is object )
Guido: 在pyton中任何东西也都是对象(everyting is object ),但是并不是任何东西都是类(everyting is class ),因为这是我喜欢的方式。
Leo :跟我们讲讲这个吧,为什么你喜欢这样
Guido:因为不是任何编程都会自然而然的采用面向对象的方式,比如一个很极端的例子,很不幸,在 java 中写一个 helloworld 程序要六七行的代码,你无法避免声明类 , 因为方法要定义在类中,这就要输入很多。
Leo :在 ruby ,数字也是对象
Guido:在 python , 也是这样的
Leo :是吗?在 ruby 中很容易重载一些函数,使得面向对象的做法很干净,也很简洁
Guido: ruby 和 python 的不同在于, 在 ruby 中,你总是在类中定义函数,如果你不明确指出函数属于哪个类,那么你可能在一个默认的类中定义函数,在 python 中,所有的数据对象都是类,但你可以在类以外定义函数,比如 module (模块),作为函数的名字空间,函数是对象,模块是对象,但是它们并不像类那样工作。 这么实现跟 ruby 只是不同的选择而已
Leo :你这么做肯定有你的理由吧
Guido:最近我听到一些对于 ruby 的抱怨,的确有点让我吃惊,ruby 的执行速度比python 慢很多,我想这的确影响到你刚才提到的一些性能测试的结果
Leo :而且ruby 的线程也不是本地化的,这的确是个大问题
Guido:哦,天哪。

参考系列其他文章:

[听大师说话4]PHP创始人 Rasmus Lerdorf 访谈1

[听译大师说话]python 创始人访谈录 : 关于 django 和 ruby

[听译大师说话]python 创始人访谈录2: python 的起源 特点和未来
18
0
评论 共 8 条 请登录后发表评论
8 楼 jimok618 2008-11-23 20:28
多谢翻译
7 楼 richard_zhu 2008-07-30 12:30
SVN里面天天更新,不是慢,是很快啊
6 楼 towjzhou 2008-07-28 08:59
这个小孩真有型。
5 楼 bocar 2008-07-23 09:20
感谢LZ的翻译。
4 楼 lynn.wong 2008-07-23 09:01
引用

withyou 2008-07-22 12:12
django的更新速度太慢啊


windows成天让你更新,有意思么
3 楼 snowberry 2008-07-22 15:29
good job,很有收获
2 楼 ruruhuang 2008-07-22 12:14
不错 
1 楼 withyou 2008-07-22 12:12
django的更新速度太慢啊

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...

  • 移除collection中元素的注意事项(应用collection.remove移除元素造成的错误)

    大家已知的遍历collection的方式通常有两种,一种是for(object key :collection<object>),一种是应用iterator。这两种方式都能对于collection进行遍历,但是当要移除collection中的部分元素的时候,使用for对于collection进行遍历,想要移除元素,就要调用collection的remove操作,这样可能会给c...

  • ecshop报错:Deprecated: Methods with the same name as their class will not be constructors in a futur

    我的php版本是: 换成: 即可解决:

  • Collection集合常用方法contains、remove详解

    java Collection常用方法,contains、remove详解

  • “Property or method “***“ is not defined on the instance but referenced during render.”报错的原因及解决方案

    报错问题: 在使用vue-cli运行项目的过程中,在VScode中不报错,但在浏览器调试工具中发出 [Vue warn]: Property or method "pic" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by in.

  • Eslint报错整理与解决方法

    Eslint报错整理与解决方法 1.‘Unexpected tab character’   字面意思理解呢就是意想不到的制表符,当时出现的时候就是我习惯的使用Tab键去打空格,但是eslint默认不认可Tab,所以解决方法很简单:   在eslint的配置文件中(.eslintrc)rules项中添加一行:"no-tabs":"off"。如下: 2.‘expected indentation of 2 spaces but found 1 tab’   字面意思就是预期缩进2个空格,但找到1

  • Struts的updownselect标签

    一视图 <%@ page contentType="text/... charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/...

  • 使用Struts2标签

    Struts2提供了大量标签帮助开发表现层页面,Struts2标签库与Struts1相比,不依赖于任何表现层技术,大部分可以在各种表现层技术中使用,包括最常用的jsp页面,也可以在Velocity和FreeMarker等模板技术中使用。...

  • struts2 updownselect 标签 (表单标签)

    updownselect 标签 :  此标签与 select 标签用户类似,只是此标签生成的列表框可以 支持选项的上下移动。 它支持的属性:  allowMoveUp:是否显示“上移”按钮,默认为true。  allowMoveDown: 是否...

  • Struts 2 标签使用的总结

    struts2标签是struts2的重点,和action配合使用,就是struts2的重点。偶第一次使用struts2,就觉得比jsp/servlet这样的方案,容易多了。在jsp放个input之类的文本框,在servlet中用request.getParameter()来获取值...

  • Struts2基本标签

    1.普通标签:控制执行的流程1.1 控制标签:实现分支、循环等流程控制if elseif else append generator iterator merge sort subset 1.2 数据标签:输出后台的数据和完成其他数据访问功能a ...2.UI标签:以...

  • Learn Objective C(5)Programming with Objective-C - Working with Protocols and Va

    Learn Objective C(5)Programming with Objective-C - Working with Protocols and Values and Collections5. Working with ProtocolsObjective-C allows you to define protocols, which declare the methods expec...

  • sonar常见错误以及处理方案

    2019独角兽企业重金招聘Python工程师标准>>> ...

  • Collection 结构及源码解析

    这个集合的超类,就是集合的祖宗,是个接口,只提供接口 这个是关系 public interface Collection<E> extends Iterable<E> { /** * Returns the number of elements in this collection. If this collection * co...

  • sonarQube扫描bug、漏洞处理汇总

    目录 Bugs 漏洞 Bugs Use an "instanceof" comparison instead. Cast one of the operands of this integer division to a "double" Remove this throw statement from this finally block. 漏洞

  • Part 5 From Tree to Graphs

    Visual Studio Technical Articles An Extensive Examination of Data Structures Scott Mitchell 4GuysFromRolla.com March 2004 Summary: A graph, like a tree, is a collection of nodes and edges,...

  • JSP_struts2标签大全

    JSP_struts2标签大全 1.a 3 2.action 3 3. actionerror 4 4. actionmessage 5 5. append 5 6. bean 7 7.checkbox 7 8.checkboxlist 8 9. combobox 9 10. conponent 9 11. date 11 12. datetimepicker 12 13. debug ...

  • struts2标签的使用总结

    最近做课程项目需要用到,看到这样一篇比较全的博客就...在struts2中有着一套像html一样的标签,俗称struts2标签,大多数公司使用ssh都是使用html标签,但为了保持项目的统一性,有的公司还是使用的struts2的标签,下

  • Struts2标签总结

    Struts2标签总结 一、数据标签 1.标签 property标签的作用是输出指定值。property标签输出value属性指定的值。如果没有指定的value属性,则默认输出值栈栈顶的值。 该标签属性如下: default:该属性是可选的,如果...

  • struts2标签使用详解

    Taglib (Struts2标签库) Struts2 Taglib抽象了不同表示技术,现在Struts2主要支持三种表示技术:JSP,FreeMarker和Velocity。但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。 Tab...

Global site tag (gtag.js) - Google Analytics