[eiffel 翻譯]Matz 關(guān)于技術(shù)的對(duì)話
注: Matz 就是著名的編程語言 Ruby 的創(chuàng)始人(日本人) 這段對(duì)話翻譯自 artima.com 網(wǎng)站對(duì) Matz 的訪談的第四部分。 英文文章原址: http://www.artima.com/intv/craft.html 未經(jīng)本人同意,不要任何地方轉(zhuǎn)載這篇翻譯文章
(最先發(fā)表在本人的網(wǎng)站 http://www.eiffelqiu.com)。
關(guān)于技術(shù) Bill Venners: 在一次CIPS Connections的交流中,你曾經(jīng)說:” 我讀過很多開放源碼軟件的源碼,例如,Perl,Python,和很多風(fēng)格LISP解釋器的源碼,我知道在寫Ruby 之前我應(yīng)該了解他們“ 你覺得程序員通過讀源碼可以得到哪些益處?
Yukihiro Matsumoto: 程序員通過讀源碼可以收益頗多。你無法簡單的告訴別人如何成為一個(gè)好的程序員,你可以向他們提供一些好的編程原則,你可以向他們描述一些你自己的一些好的設(shè)計(jì)經(jīng)驗(yàn),但是你無法給予他們?nèi)绻蔀橐粋(gè)好程序員的實(shí)際知識(shí)。我相信獲取這些實(shí)際知識(shí)的最好方法就是讀代碼。寫代碼當(dāng)然可以幫助你成為一個(gè)好的程序員,但是讀代碼這種方式更好一些。
Bill Venners: 為什么
Yukihiro Matsumoto: 因?yàn)槌蔀橐粋(gè)好的程序員實(shí)際上是跟經(jīng)驗(yàn)有關(guān),代碼是對(duì)程序員思想,態(tài)度,想法的表達(dá)。通過讀代碼,你不僅可以了解程序員要完成一個(gè)什么特殊的任務(wù)以及知道他們是如何實(shí)現(xiàn)的,而且你也可以通過他們的思考方式而增長見識(shí)。這就是為什么讀程序可以讓你成為更好的程序員的原因。除此之外,如果你想知道如何用代碼實(shí)現(xiàn)一些東西,你可以打開一本計(jì)算機(jī)科學(xué)方面的書籍,書本可以向你解釋算法,但是如果你想更快的了解算法,那么讀代碼將是最好的方式。此外,你可以執(zhí)行代碼以實(shí)現(xiàn)算法。你可以在代碼執(zhí)行算法的時(shí)候使用一個(gè)調(diào)試器來觀察它。這種方式要遠(yuǎn)比讀書本要好。
學(xué)習(xí)語言
Bill Venners: 在CIPS Connection的交流中, 你給出了程序員的十個(gè)技巧。其中之一是: ” 學(xué)不只一種程序語言,最好是不同風(fēng)格的,比如腳本語言,面向?qū)ο笳Z言,函數(shù)式語言,邏輯式語言,等等“,學(xué)習(xí)多種程序語言有什么好處?
Yukihiro Matsumoto: 每個(gè)程序或者系統(tǒng)都有它自己的文化。每種語言或者系統(tǒng)都有自己的核心概念。這些概念中大多數(shù)是好的,但是他們是不同的,通過學(xué)習(xí)多種語言和系統(tǒng),你可以接受不同的想法,進(jìn)而增強(qiáng)你自己的觀點(diǎn)。例如,如果你不了解Prolog語言,你就不會(huì)了解目標(biāo)指導(dǎo)性編程的威力 (通過應(yīng)用指定規(guī)則描述要解決的問題來編程的方式)。這是一個(gè)非常有趣的概念,是一種不同的思考方法。但是如果你不了解Prolog或者謂詞邏輯的話,很難自己發(fā)現(xiàn)這種思考方式。了解其他的系統(tǒng)和范式將會(huì)擴(kuò)展自己頭腦中的世界。這就是為什么我極力推薦學(xué)習(xí)多種語言的原因
關(guān)注基本概念
Bill Venners: 在你的十個(gè)最高技巧中你也說過:”不要太過多的關(guān)注于工具,工具是會(huì)變化的,而算法和基本概念不會(huì)“,你這是什么意思。
Yukihiro Matsumoto: 部分是關(guān)于以人為本而不是以機(jī)器的觀點(diǎn)。人的變化非常的慢,但是系統(tǒng)變化的非?。100 年前的人們和現(xiàn)在沒什么太大的不同。 100 年前我們沒有計(jì)算機(jī),50年前我們擁有了計(jì)算機(jī),但是他們非常原始。從今之后的20年,我無法想象計(jì)算機(jī)將會(huì)是什么樣子的,但是我可以想象的出20年后的人們將會(huì)如何思考。另外一個(gè)例子是數(shù)學(xué)。數(shù)學(xué)擁有非常悠久的歷史。它是非常成熟的科學(xué),但是計(jì)算機(jī)科學(xué)不是。所以從數(shù)學(xué)中獲取思想是非常好的。工具會(huì)隨著時(shí)間的流逝輕易的變化。如果你太多的關(guān)注現(xiàn)在的工具,那么你的努力只能得到短期的回報(bào)。如果你想獲得持久的收益,你應(yīng)該更關(guān)注一些基礎(chǔ)的東西。關(guān)注數(shù)學(xué)和人類心理學(xué)。關(guān)注那些已經(jīng)建立起來的科學(xué)和已經(jīng)建立起來的思維方式。
懶惰: Bill Venners: 你曾經(jīng)在你的十大技巧中提到:”懶惰,機(jī)器將會(huì)服務(wù)于人類。經(jīng)常程序員會(huì)不經(jīng)意的服務(wù)于機(jī)器。讓機(jī)器服務(wù)于你。盡可能做哪些讓你懶惰的事情“,為什么我們要設(shè)法變得懶惰?
Yukihiro Matsumoto: 因?yàn)槟阆胱兊脩卸。你要做任何可以減輕自己工作的事情,我努力工作來減輕自己的工作,變得懶惰。
Bill Venners: 我相信這點(diǎn)
Yukihiro Matsumoto: 我非?释兊脩卸琛
考慮接口
Bill Venners: 你在十大技巧中也提到了:”對(duì)他人友好,首先考慮接口: 人對(duì)人,人對(duì)機(jī)器和機(jī)器對(duì)機(jī)器的接口。再次記住人的因素是非常重要的 “ ,你這是什么意思,”首先考慮接口?“
Yukihiro Matsumoto: 接口是我們作為一個(gè)用戶所看到的一切。如果我的計(jì)算機(jī)正在內(nèi)部做非常復(fù)雜的事情,但是復(fù)雜性并沒有表露在外面,我不在乎。我不在乎計(jì)算機(jī)是否在內(nèi)部辛苦的工作。我只要以好的方式呈現(xiàn)正確的結(jié)果。這就是說接口就是一切,至少對(duì)于普通的計(jì)算機(jī)用戶使用計(jì)算機(jī)的時(shí)候,情況就是如此,那就是為什么我們要關(guān)注接口的原因。一些軟件人士,比如天氣預(yù)報(bào)員,數(shù)字計(jì)算者,他們更多的是了解事物的內(nèi)部,但是他們所處的是非常有限的計(jì)算機(jī)科學(xué)領(lǐng)域。大多數(shù)程序員需要關(guān)注表面,接口,因?yàn)閷?duì)他們來說那才是最重要的。
Bill Venners: 你也提到了機(jī)器對(duì)機(jī)器的接口,你的意思是不是僅僅是對(duì)用戶的接口或者機(jī)器的接口
Yukihiro Matsumoto: 不只是用戶接口。當(dāng)機(jī)器之間通過一個(gè)協(xié)議互相對(duì)話的時(shí)候,他們不在乎對(duì)方內(nèi)部是如何實(shí)現(xiàn)的,最重要的是通過恰當(dāng)?shù)膮f(xié)議正確的傳遞恰當(dāng)?shù)慕Y(jié)果,這才是最重要的。如果你有的系統(tǒng)有一個(gè)好的接口,足夠的時(shí)間和財(cái)務(wù)預(yù)算,你可以繼續(xù)工作在你的系統(tǒng)上。如果你的系統(tǒng)有錯(cuò)誤或者是太慢,那么你可以改進(jìn)它。但是如果你的系統(tǒng)有一個(gè)糟糕的接口,那么你就基本上是一無所有了。內(nèi)部實(shí)現(xiàn)有多高的技巧并不重要。如果你的系統(tǒng)有一個(gè)糟糕的接口,沒有人會(huì)使用它。所以接口或者系統(tǒng)的表面特征,無論是對(duì)用戶還是對(duì)其他機(jī)器來說,都是非常重要的。
本文鏈接:http://www.95time.cn/tech/program/2004/1597.asp
出處:牧羊人手記
責(zé)任編輯:jimbob
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|