John Resig
John Resig
John Resig, jQuery的創始人和技術領袖,目前在Mozilla擔任JavaScript工具開發工程師。著有《Pro JavaScript Techniques》(即《精通JavaScript》)等經典JavaScript書籍。
John Resig撰寫的《Secrets of the JavaScript Ninja》(即《JavaScript忍者的秘密》)在2011年正式出版。
首先翻譯下題目: John Resig(jQuery的作者):JavaScript 中的 Chuck Norris(查克·諾里斯,美國著名武術家,世界著名空手道巨星)
John Resig 在 JavaScript 上的功力可是不小,由他創建的 jQuery 用法簡潔易上手,優雅而又功能強大,還看過他寫的一本經典的《Pro Javascript Techniques》(中文名字是《精通 Javascript》),受益匪淺,在網上看他的相關資料的時候找到了一片有趣的文章,只是英文版的,遂翻譯了一下下:來看看它說的什麼:
John Resig
(irc.freenode..net 的傢伙們已經得到了一個結論:John Resig,這個 jQuery 的創造者,就是Javascript 世界中的 Chuck Norris,所以讓咱們發個帖兒來膜拜下這個大牛吧!) Note: he might actuallybeChuck Norris, we’re not entirely sure.
(提示:噢!他也許真的是 Chuch Norris,但是誰知道呢?!)
>John Resig has never made a carousel plugin.. when he goes to the carnival, ALL the rides support jQuery.
(John Resig 從未做過旋轉木馬插件,因為當他去遊樂場的時候,所有的木馬都支持 jQuery)
>John Resig can kill you with two lines of code. Sure, he could do it with one, but the force of the explosion would cause the universe to collapse into a giant black hole.
(John Resig 可以用兩行代碼幹掉你!當然,他用一行就夠了,但是爆炸的威力會讓宇宙崩塌成一個巨大的黑洞)
>John Resig’s computer is custom-fitted with a titanium keyboard, because anything less substantial will melt.
(John Resig的電腦特別定製了鈦鍵盤,因為稍微脆弱一點的會熔化掉)
>$(“John Resig”).position(); returns “everywhere!”.
($('John Resig').position(); 返回"無所不在!")
John Resig
(當 John Resig 輸入 $.jump(),控制台輸出"多高?")
>When John Resig types $.require(), it’s not a request, it’s a threat.
(當 John Resig 輸入$.require(), 記住,這不是一個請求,這是一個恐嚇!)
>John Resig does not $.queue().
(哦!這傢伙從來不排隊!)
>John Resig scheduled a cron job to run “rm -rf /” sometime in 2012. How the heck did the Mayans know that?
>The last time John Resig used $.die(), they amended the Geneva Convention to expressly forbid it.
(上一次 John Resig 用 $.die() 的時候,他們修訂了日內瓦公約明確禁止這麼做!- -)
>John Resig triggers onfocus ALL THE TIME.
(John Resig 持續‘onfocus’ )
>$(“John Resig”).length returns “14 inches”.
($(“John Resig”).length 返回~ 14 英寸!)
>John Resig doesn’t query the DOM, he just glances at it and gets all the elements he was expecting.
(John Resig 從不查找 DOM,他只要掃一眼就會得到他想要的東西)
>When John Resig inspects an element, he sees the raw electrons.
(John Resig 查看一個元素時,他看到的是原始的電子!)
>When John Resig edits his hosts file, he doesn’t need sudo.
(當 John Resig 需要編輯 hosts 文件時,他不需要 sudo!)
>When John Resig runs scripts cross-domain, they just run.
(當 John Resig 運行跨域腳本時,那就隨便他運行吧~!!)
>John Resig doesn’t wait for the DOM to be ready, it waits for him to be ready.
(John Resig 從不等待 DOM 變為 ready 狀態,DOM 都在等他 ready)
>When John Resig tests isNaN(), it had better not be a number.
(John Resig 檢測 isNaN() 時,它最好不是一個數字)
>John Resig’s commits ignore all post-commit hooks, because John Resig always has the last word.
(John Resig 提交新版本不需要寫註釋,因為 John Resig 也永遠說不完)
編程初體驗
《程序員》:你是如何開始編程的?
John Resig:第一次編程大概是在初中,14、15歲,當時有個朋友帶來張軟盤,裡面有QBASIC。在DOS系統下他向我展示了他自己的程序,我覺得非常有意思。從那時起我就開始想編程了,先後借了很多相關的書。最初是學習編寫HTML,之後又轉向CGI。
《程序員》:你編寫的第一個有意思的程序是什麼,還有印象嗎?
jQuery之父
《程序員》:學生時代的生活和以後的編程生涯,兩者之間有沒有內在的聯繫?
John Resig:這說不太清楚,我喜歡編程,它可以讓我完全理解一個東西。選擇Web編程是因為自己願意做別人不樂意做的事情。比如很多人不願意處理同樣的網頁在不同瀏覽器下表現各異的問題。但這很有挑戰,也很有樂趣。
《程序員》:能不能談談你在大學生活中印象最深的事情?
John Resig:對我來說最重要的事情,是那些計算機科學課程。大學期間我並沒做很多Web編程,而是做了很多和資料庫相關的工作。這是我感興趣的方面。我還喜歡研究社區,做數據挖掘研究,其中就包括判斷社交網站怎樣增長之類,那時我還發表了兩篇關於數據挖掘的論文。離開大學后,我又回到Web編程,儘管數據挖掘很有意思,但我還是覺得Web編程的吸引力更大。
《程序員》:大學最喜歡的計算機課程有哪些?
John Resig:我喜歡有挑戰性的課。例如XML,我本來以為課程很簡單,可以輕鬆得個A。結果老師第一堂課就把我知道的東西都講完了,從第二節課開始所講內容我完全聽不懂,很難學,結果我得了B。但我還是很自豪,因為學了很多東西。
jQuery之父_John Resig
《程序員》:向我們透露一些jQuery背後的故事吧。最開始您是怎樣做的?
John Resig:做Web編程時,我非常討厭瀏覽器的Bug,不同的瀏覽器有不同的Bug,而且數量非常多。於是我用JavaScript做了CSS選擇引擎,之後還做了個動畫引擎,都是自娛自樂。但與此同時我發現自己不能將製作的一些應用放到瀏覽器里。為了將應用放到Firefox瀏覽器中,我開始製作相關的API,以應用那個CSS選擇引擎和動畫引擎,這些最終成為了jQuery。幾個月後,我將那些應用做進Firefox里,之後在IE里也可以運行。如今這仍是我的目標——讓每個人都可以在網頁里寫點什麼,並且寫的東西能夠在瀏覽器中順利運行出來。
《程序員》:支撐jQuery的基本原理有哪些?
John Resig:原則很簡單。作為一名程序員,我希望代碼簡潔,不希望在編程的時候不停地重複某些內容,設計jQuery的目標就是為了簡化代碼,使程序更高效。
《程序員》:jQuery是如何把簡單和高效結合在一起的?
John Resig:很多人想直接做大項目,例如像Gmail、Yahoo!Mail之類。但實際上通過很簡單的過程也可以解決大項目中一些很困難的關鍵點,化大為小,化繁為簡,jQuery就是這樣做的。
《程序員》:如果能重新再來一次,你會在哪些方面做出設計改變?
John Resig:我要改一些方法的名稱。初期在命名上出現了一些失誤,後來我花了很多時間才理解到jQuery應該是現在這樣。有些事情如果一開始就做好,可能會少走很多彎路。
《程序員》:談談jQuery的研發過程吧。
John Resig:我們主要的資源是jQuery的Bug Tracker,有一個Team專門經營Bug Tracker。我負責修改這些Bug。最終我們有一個需要修改的Bug列表。然後有人改程序,提交給別人通過,並處理這些Bug。大多數時候都是我來改Bug,發布新版本。
《程序員》:中國的程序員該如何做才能參加到這個項目?
John Resig:直接加入就可以。所有人都可以看到內部的每次代碼提交,然後更優秀的程序員會加入Bug Tracker。他們能看到我們發現問題和處理問題的整個過程,從而學會怎樣發布補丁。我們的小組一共20個人,只有3個代碼的貢獻者,其餘17人都在做各種各樣其他事情。jQuery網站是世界排名前700位的網站,所以有很多工作需要處理。
《程序員》:在中國有沒有正式的文檔網站?
John Resig:有jQuery..org..cn,但這不是正式的,不過裡面有jQuery文檔的翻譯資料。我們急需有人幫助翻譯這些文檔。
《程序員》:jQuery的未來怎樣?
John Resig:我們基本不加入新功能,目前大多數工作都是優化,讓jQuery變得更快、更強、更容易理解。未來的工作也是優化,使jQuery功能更清晰化。
開源是JavaScript 的出路
《程序員》:說說你學習JavaScript的過程?
John Resig:從高中時我就開始使用JavaScript,具體做什麼記不大清了。大學時我加入一個研究工作組做一些商業項目,例如為一些地方公司設計網頁。設計師的工作是用Photoshop處理網頁圖片,而我的工作是將這些圖片用CSS展現在網站上,這需要在Firefox瀏覽器下呈現出相應的效果。這期間公司還讓我做的事情是在網頁上顯示一個特殊的捲軸效果,所以必須用JavaScript編寫。我一直在琢磨如何寫這個腳本,直到有一天我改了腳本中某個元素屬性,這個功能就實現了。我很高興,開始系統學習JavaScript,之後就用它編程。
《程序員》:最開始你用的是什麼庫?
John Resig:用Prototype,這是2005年出現的一款非常棒的JavaScript基礎類庫,對JavaScript做了大量的擴展,而且很好地支持了Ruby on Rails。Prototype吸引我的一點是代碼乾淨整潔。當我第一次看到Prototype的時候,很難想象JavaScript類庫代碼可以做到如此簡潔。Prototype非常漂亮,讓人產生用它寫代碼的慾望。
《程序員》:你認為什麼時候是JavaScript庫開源的最佳時機?
John Resig:JavaScript與其他瀏覽器語言有很多不同,它的特點是大家都可以看到源代碼,所以我認為從一開始就要開源。如果你注意觀察JavaScript的庫,就會發現所有開源的庫都挺好,而所有閉源的庫都不行。其實現在基本已經沒有人再用閉源的JavaScript庫了。
《程序員》:我知道有些中國的公司開始設計新的框架和JavaScript庫,並打算開源,你對他們有什麼建議嗎?
John Resig:開源是需要的,但最重要的是知道你的用戶是誰,否則就會跟他們有距離。我設計jQuery時就遇到了類似的問題,要考慮究竟哪些人需要用我設計的類庫。目前JavaScript還是有發展的空間,但是如果創造全新的東西就可能沒太大必要。我對開源公司的建議是必須放棄自己的公司立場,把這個當成一個獨立的項目,公司只是這個項目的一個用戶。比如公司有一個需求,也要走正式的申請、Debug之類的流程。也許有些人會覺得這是公司的資源,但如果你要開源,就必須放棄控制。
《程序員》:對剛開始使用JavaScript的開發者有什麼建議?
John Resig:剛開始使用JavaScript的開發者估計對瀏覽器方面的了解也很少。我的建議是用庫。不要把時間花在那些瀏覽器的Bug上,一開始就直接用各種庫。
《程序員》:你怎樣看JavaScript的未來?談一下伺服器端的node.js?
John Resig:我對JavaScript的未來很樂觀。因為網路和瀏覽器會存在很長時間,所以JavaScript和HTML一樣會長久存在。20年內大家肯定會一直用JavaScript寫Web應用。它是一種很特別的語言,在伺服器端也可以用JavaScript。我喜歡JavaScript的原因是它可直接用在瀏覽器上,它跟Python不一樣,很少有語言可以直接用在瀏覽器上。在伺服器端的node.js是很酷的東西,它讓JavaScript脫離瀏覽器而存在。
優秀程序員的標準
《程序員》:談談你在Mozilla的工作?
John Resig:我以前是JavaScript程序員,2007年2月加入Mozilla,工作了幾年。後來jQuery變得很大,我必須全力來做。所以向Mozilla的主管說我要做jQuery,他非常支持,認為這是很棒的事情。所以後來,我就可以將全部精力放在jQuery上。
《程序員》:你最常用的工具是什麼?
《程序員》:你現在是在本地還是在雲端工作?
John Resig:我基本還是在本地,在雲端工作的確很好,因為設定所有的模擬器是很困難的,所以我們都是設定一次,然後放到雲端,這樣能避免一些測試的問題。
《程序員》:你覺得好的程序員應該是怎樣的?
John Resig:面試JavaScript程序員時,我一般問兩類問題,一類是JavaScript的技術問題,另一類是瀏覽器Bug方面的。比如你最喜歡的瀏覽器Bug,要是他不能回答,就說明他做的工作不夠。喜歡這個工作的人,都會有花兩三天修復一個瀏覽器Bug的經歷。
《程序員》:你覺得學習數學或者理論、演演算法是不是對程序員很重要?
John Resig:對有些程序員是,但對JavaScript程序員則不一定,這取決於你要做什麼工作。在大學時我做數據挖掘方面的工作,需要很強的理論背景。在用JavaScript時,我學了一些語言基礎方面的東西。當然多學知識肯定會讓你有更好的理解。演演算法有時不一定都能用上,但熟悉語言的基礎理論會對自己有很大幫助。
HTML 的未來
《程序員》:HTML、JavaScript在將來是不是會佔統治地位?
《程序員》:HTML5會成功替代Flash嗎?
John Resig:大家要用Flash主要是為了視頻、遊戲。但現在主要的視頻網站都已經轉入HTML5,我認為隨著更多的瀏覽器支持HTML5功能,Flash就會更加無關緊要。
《程序員》:越來越多人在用HTML和JavaScript,會不會取代所有的本地應用?
John Resig:是的,因為用它們可以開發很多功能。HTML會不會取代所有的本地應用,關鍵還是看要用什麼功能,比如你不能用HTML編寫瀏覽器,還是要使用底層的語言。當然不排除但首先Web技術可能變得更厲害,厲害到能開發瀏覽器的程度,就可以編瀏覽器。要讓所有瀏覽器都能支持,這是未來的關鍵。
2011年5月,John Resig離職Mozilla,加入在線教育集團Khan Academy。在那裡,他仍繼續從事jQuery相關工作,同時負責該組織的開源項目及未來的iPad應用的開發。Khan Academy是一個非盈利組織,正在嘗試對“學生的學習方法及老師的教育方法”進行一次徹底變革。John Resig的加入,意在為教育提供更好的工具,讓更多的人參與到開源中來,為提升教育質量貢獻一份力。與jQuery創始人面對面,John Resig北京見面會