[eiffel 翻译 artima.com 访谈录]Matz 关于技术的对话

翻译 2004年02月03日 13:54:00

[eiffel 翻译]Matz 关于技术的对话


注: Matz 就是著名的编程语言 Ruby 的创始人(日本人)

这段对话翻译自 artima.com 网站对 Matz 的访谈的第四部分。

英文文章原址: http://www.artima.com/intv/craft.html


未经本人同意,不要任何地方转载这篇翻译文章(最先发表在本人的网站 http://www.eiffelqiu.com/index.jsp?date=20040131)。

 

关于技术

Bill Venners:
在一次CIPS Connections的交流中,你曾经说:” 我读过很多开放源码软件的源码,
例如,Perl,Python,和很多风格LISP解释器的源码,我知道在写Ruby 之前我应该了
解他们“ 你觉得程序员通过读源码可以得到哪些益处?

Yukihiro Matsumoto:
程序员通过读源码可以收益颇多。你无法简单的告诉别人如何成为一个好的程序员,你
可以向他们提供一些好的编程原则,你可以向他们描述一些你自己的一些好的设计经验,
但是你无法给予他们如果成为一个好程序员的实际知识。我相信获取这些实际知识的最
好方法就是读代码。写代码当然可以帮助你成为一个好的程序员,但是读代码这种方式
更好一些。

Bill Venners:
为什么

Yukihiro Matsumoto:
因为成为一个好的程序员实际上是跟经验有关,代码是对程序员思想,态度,想法的表
达。通过读代码,你不仅可以了解程序员要完成一个什么特殊的任务以及知道他们是如
何实现的,而且你也可以通过他们的思考方式而增长见识。这就是为什么读程序可以让
你成为更好的程序员的原因。
除此之外,如果你想知道如何用代码实现一些东西,你可以打开一本计算机科学方面的
书籍,书本可以向你解释算法,但是如果你想更快的了解算法,那么读代码将是最好的
方式。此外,你可以执行代码以实现算法。你可以在代码执行算法的时候使用一个调试
器来观察它。这种方式要远比读书本要好。

 

Bill Venners: 在CIPS Connection的交流中, 你给出了程序员的十个技巧。其
中之一是: ” 学不只一种程序语言,最好是不同风格的,比如脚本语言,面向对象语
言,函数式语言,逻辑式语言,等等“,学习多种程序语言有什么好处?

Yukihiro Matsumoto:
每个程序或者系统都有它自己的文化。每种语言或者系统都有自己的核心概念。这些
概念中大多数是好的,但是他们是不同的,通过学习多种语言和系统,你可以接受不
同的想法,进而增强你自己的观点。

例如,如果你不了解Prolog语言,你就不会了解目标指导性编程的威力
(通过应用指定规则描述要解决的问题来编程的方式)。这是一个非常有趣的概念,
是一种不同的思考方法。但是如果你不了解Prolog或者谓词逻辑的话,很难自己发现
这种思考方式。了解其他的系统和范式将会扩展自己头脑中的世界。这就是为什么我
极力推荐学习多种语言的原因

Bill Venners:
在你的十个最高技巧中你也说过:”不要太过多的关注于工具,工具是会变化的,而
算法和基本概念不会“,你这是什么意思。

Yukihiro Matsumoto:
部分是关于以人为本而不是以机器的观点。人的变化非常的慢,但是系统变化的非
常快。100 年前的人们和现在没什么太大的不同。 100 年前我们没有计算机,50
年前我们拥有了计算机,但是他们非常原始。从今之后的20年,我无法想象计算
机将会是什么样子的,但是我可以想象的出20年后的人们将会如何思考。

另外一个例子是数学。数学拥有非常悠久的历史。它是非常成熟的科学,但是计算
机科学不是。所以从数学中获取思想是非常好的。

工具会随着时间的流逝轻易的变化。如果你太多的关注现在的工具,那么你的努力只
能得到短期的回报。如果你想获得持久的收益,你应该更关注一些基础的东西。关注
数学和人类心理学。关注那些已经建立起来的科学和已经建立起来的思维方式。


懒惰:

Bill Venners:
你曾经在你的十大技巧中提到:”懒惰,机器将会服务于人类。经常程序员会不经意
的服务于机器。让机器服务于你。尽可能做哪些让你懒惰的事情“,为什么我们要设
法变得懒惰?

Yukihiro Matsumoto:
因为你想变得懒惰。你要做任何可以减轻自己工作的事情,我努力工作来减轻自己
的工作,变得懒惰。
Bill Venners:
我相信这点

Yukihiro Matsumoto:
我非常渴望变得懒惰。


考虑接口

Bill Venners:
你在十大技巧中也提到了:”对他人友好,首先考虑接口: 人对人,人对机器和机器
对机器的接口。再次记住人的因素是非常重要的 “ ,你这是什么意思,”首先考虑接
口?“

Yukihiro Matsumoto:
接口是我们作为一个用户所看到的一切。如果我的计算机正在内部做非常复杂的事情
,但是复杂性并没有表露在外面,我不在乎。我不在乎计算机是否在内部辛苦的工作。
我只要以好的方式呈现正确的结果。这就是说接口就是一切,至少对于普通的计算机
用户使用计算机的时候,情况就是如此,那就是为什么我们要关注接口的原因。

一些软件人士,比如天气预报员,数字计算者,他们更多的是了解事物的内部,但是
他们所处的是非常有限的计算机科学领域。大多数程序员需要关注表面,接口,因为
对他们来说那才是最重要的。

Bill Venners:
你也提到了机器对机器的接口,你的意思是不是仅仅是对用户的接口或者机器的接口

Yukihiro Matsumoto:
不只是用户接口。当机器之间通过一个协议互相对话的时候,他们不在乎对方内部是
如何实现的,最重要的是通过恰当的协议正确的传递恰当的结果,这才是最重要的。

如果你有的系统有一个好的接口,足够的时间和财务预算,你可以继续工作在你的系
统上。如果你的系统有错误或者是太慢,那么你可以改进它。但是如果你的系统有一
个糟糕的接口,那么你就基本上是一无所有了。内部实现有多高的技巧并不重要。如
果你的系统有一个糟糕的接口,没有人会使用它。所以接口或者系统的表面特征,无
论是对用户还是对其他机器来说,都是非常重要的。


邱海峰(eiffelqiu)


mail: eiffel_q@163.com
www: http://www.eiffelqiu.com
weblog: http://mulder.5d.cn

[eiffel 翻译 artima.com 访谈录]Ruby 语言中 blocks 和 Closure 结构

  注: Matz 就是著名的编程语言 Ruby 的创始人(日本人)  这段对话翻译自 artima.com 网站对 Matz 的访谈的第三部分。 英文文章原址: http://www.artima....
  • eiffelqiu
  • eiffelqiu
  • 2004年02月03日 13:54
  • 1311

Eiffel语言教程——Eiffel语言的软件开发过程(An Eiffel Tutorial——ET: The Software Process in Eiffel)

Eiffel语言的软件开发过程前面已提到,Eiffel支持整个生命周期。下述软件开发周期观点不仅从根本上不同于传统的“直瀑”模型(指一连串的独立步骤,如需求分析、总体设计、详细设计、实现,由主要的方法...
  • Carzpurzkey
  • Carzpurzkey
  • 2011年02月08日 12:26
  • 1017

初探Eiffel

摘要:      当前面向对象领域存在着众多的方法和语言。它们或高举统一建模方法的大旗,在软件开发的高端领域呼风唤雨;或在设计思想上独辟蹊径,拥有一大批狂热的社区信徒;或已经根深蒂固,用户群广泛,尤在...
  • wuxianglong
  • wuxianglong
  • 2010年10月01日 13:48
  • 1683

Eiffel语言教程——概览(An Eiffel Tutorial——ET:Overview)

概览Eiffel是一门编程语言,同时它也是一种方法,通过这种方法,您可以有效地开发高质量的软件系统,并用同样的方法描述之。Eiffel是一门编程语言,而又不仅仅是一门编程语言。它没有局限在实现方面意义...
  • Carzpurzkey
  • Carzpurzkey
  • 2011年02月06日 22:49
  • 980

对话翻译官-实时语音对话翻译

对话翻译官可以将您所说的话实时翻译成英语、日语、韩语、法语、西班牙语、泰语、阿拉伯语、俄语、葡萄牙语、德语、意大利语、希腊语、荷兰语、波兰语、丹麦语、芬兰语、捷克语、罗马尼亚语、瑞典语、匈牙利语、加泰...
  • hu_yong
  • hu_yong
  • 2016年11月18日 09:06
  • 2073

什么是契约——Eiffel的观点

什么是契约——Eiffel的观点    假设你现在正在面试,主考不紧不慢地给出下一道题目:“请用C语言写一个类似strcpy的函数。要考虑可能发生的异常情况。” 你会怎么做呢?很明显,对方不是在考察你...
  • myan
  • myan
  • 2003年02月11日 11:52
  • 5050

关于技术文档的翻译

最近有人与我探讨有没有必要把时间花在技术文档的翻译上面,我个人觉得是非常有必要的,理由如下:(1)提高英文的阅读能力和对单词的理解能力。翻译有个特点,就是要字斟句酌。所以翻译即是精读。你不会漏过任何一...
  • bbisonic
  • bbisonic
  • 2006年09月22日 21:15
  • 1130

程序员翻译技术类书籍的总结

 2013年到现在,已经翻译了3本书了,其它杂七杂八的文章也不少。其中有一些经验和教训,势必要总结一下。 将译稿纳入版本管理 没有版本管理的代码修改起来是战战兢兢地,而译稿也类似。我习惯在G...
  • donghong2008
  • donghong2008
  • 2014年09月24日 09:35
  • 740

10086 的搞笑对话

 10086:您好!很高兴为您服务,请说! A:小姐啊!我短信.........#¥%……(该用户时段性语言表达不流畅!) 10086:很抱歉!麻烦您把刚才的问题重复下好么! A:我短信下不下来,后来...
  • zhujiangm
  • zhujiangm
  • 2007年09月18日 13:50
  • 10601

Kerberos原理--经典对话

这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerberos的原理而写的一篇对话集。里面有两个虚构的人物:Athena和Euripides,...
  • dog250
  • dog250
  • 2010年04月09日 21:48
  • 4541
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[eiffel 翻译 artima.com 访谈录]Matz 关于技术的对话
举报原因:
原因补充:

(最多只允许输入30个字)