对话jQuery之父John Resig:JavaScript的开发之路

在参加完CSDN组织的TUP对话大师系列演讲活动后,27岁的jQuery之父John Resig接受了本刊总编刘江的深度访谈,这篇对话文章,让我们一窥这位著名程序员的人生及技术感悟。

编程初体验

《程序员》:你是如何开始编程的?

John Resig:第一次编程大概是在初中,14、15岁,当时有个朋友带来张软盘,里面有QBASIC。在DOS系统下他向我展示了他自己的程序,我觉得非常有意思。从那时起我就开始想编程了,先后借了很多相关的书。最初是学习编写HTML,之后又转向CGI。

《程序员》:你编写的第一个有意思的程序是什么,还有印象吗?

John Resig认为,JavaScript和HTML一样会长久存在,20年内开发者肯定会一直用JavaScript写网页应用程序
John Resig认为,JavaScript和HTML一样会长久存在,20年内开发者肯定会一直用JavaScript写网页应用程序

John Resig:高中时,有一阵我通过编写网站应用来挣钱。我还会做一些诸如网站设计的工作,当然没有专业人员做得那么好。记得曾编写了一个订早餐的网页应用,让那些熬夜无暇早起买早餐的人通过这个网页应用订餐。不过,这还算不上最有意思的程序。我的第一个最有趣的程序是在大学时编写的。那时我们要建立自己的时间表,以分配好上课时间,所以我编了一个选课的程序,它可以推荐出最优的选课结果,例如:如果你要选数学、计算机和除此之外的一门科学课程,程序可以推荐出可在一天内完成三门课程的时间表,这样你就有六天的空闲时间去做自己想做的事情。

《程序员》:学生时代的生活和以后的编程生涯,两者之间有没有内在的联系?

John Resig:这说不太清楚,我喜欢编程,它可以让我完全理解一个东西。选择Web编程是因为自己愿意做别人不乐意做的事情。比如很多人不愿意处理同样的网页在不同浏览器下表现各异的问题。但这很有挑战,也很有乐趣。

《程序员》:能不能谈谈你在大学生活中印象最深的事情?

John Resig:对我来说最重要的事情,是那些计算机科学课程。大学期间我并没做很多Web编程,而是做了很多和数据库相关的工作。这是我感兴趣的方面。我还喜欢研究社区,做数据挖掘研究,其中就包括判断社交网站怎样增长之类,那时我还发表了两篇关于数据挖掘的论文。离开大学后,我又回到Web编程,尽管数据挖掘很有意思,但我还是觉得Web编程的吸引力更大。

《程序员》:大学最喜欢的计算机课程有哪些?

John Resig:我喜欢有挑战性的课。例如XML,我本来以为课程很简单,可以轻松得个A。结果老师第一堂课就把我知道的东西都讲完了,从第二节课开始所讲内容我完全听不懂,很难学,结果我得了B。但我还是很自豪,因为学了很多东西。

jQurey 背后的故事

《程序员》:向我们透露一些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:从高中时我就开始使用Java-Script,具体做什么记不大清了。大学时我加入一个研究工作组做一些商业项目,例如为一些地方公司设计网页。设计师的工作是用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:用浏览器,12~20种,不同的版本,不同的类型。我还要使用各类系统如Windows、Mac等。
此外Firebug是一款很棒的工具。

《程序员》:你现在是在本地还是在云端工作?

John Resig:我基本还是在本地,在云端工作的确很好,因为设定所有的模拟器是很困难的,所以我们都是设定一次,然后放到云端,这样能避免一些测试的问题。

《程序员》:你觉得好的程序员应该是怎样的?

John Resig:面试JavaScript程序员时,我一般问两类问题,一类是JavaScript的技术问题,另一类是浏览器Bug方面的。比如你最喜欢的浏览器Bug,要是他不能回答,就说明他做的工作不够。喜欢这个工作的人,都会有花两三天修复一个浏览器Bug的经历。

《程序员》:你觉得学习数学或者理论、算法是不是对程序员很重要?

John Resig:对有些程序员是,但对JavaScript程序员则不一定,这取决于你要做什么工作。在大学时我做数据挖掘方面的工作,需要很强的理论背景。在用JavaScript时,我学了一些语言基础方面的东西。当然多学知识肯定会让你有更好的理解。算法有时不一定都能用上,但熟悉语言的基础理论会对自己有很大帮助。

HTML 的未来

《程序员》:HTML、JavaScript在将来是不是会占统治地位?

John Resig:现在已经处于统治地位了,以后浏览器和web只会更流行。它是网络的核心,不像Flash不能运行在iPhone上。

《程序员》: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的加入,意在为教育提供更好的工具,让更多的人参与到开源中来,为提升教育质量贡献一份力。

本文选自《程序员》杂志2011年08期,更多精彩内容敬请关注08期杂志

《程序员》杂志订阅火热进行中

转载于:https://www.cnblogs.com/solq/archive/2011/08/16/2141462.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网产品研发的典型流程

这张图是互联网产品研发的一种最佳实践,这张图中没有包含异常流的处理。通常异常出现在进入开发甚至测试阶段了还在变更需求,进入封版发版阶段了还在修改代码,所以在这两个时间点都有需求冻结和代码冻结。 转载于:https://www.cnblogs.com/mo…

智力杠杆

智力杠杆是我在车上看一本财经书时从金融杠杆联想到的; 言归正传,先从金融杠杆开始: 金融杠杆 金融杠杆(leverage)简单地说来就是一个乘号(*)。 使用这个工具,可以放大投资的结果,无论最终的结果是收益还是损失&#…

vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1

由于本职工作中经常做图像处理,于时大量的图片浏览是不可避免的。怎么样不离开最近经常使用的VSCode,同时去看大量的图像对我来讲就是个不错的需求,尤其是某个目录下的文件。先谈基本的需求吧,显示一个目标下的所有图像&#xff0…

JS闭包实例

学习闭包的时候看的例子&#xff0c;记录上来&#xff0c;以便以后可以再次深入理解&#xff01; 1 <script type"text/javascript"> 2 <!-- 3 //事件处理封装函数 4 function f(obj,method){ 5 return function(e){ 6 e e || win…

JAVA mysql存数组_JAVA数组怎么存放数据库的元素

Stringsql"selectidfrombuildingwherenumber>?";Stringparas[]{number};spnewSqlHelper();ResultSetrssp.query(sql,paras);while(rs.next()){idrs.getString(1);/i假如循环后id...String sql "select id from building where number>?";String pa…

四十三 常用内建模块 base64

Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时&#xff0c;我们都会看到一大堆乱码&#xff0c;因为二进制文件包含很多无法显示和打印的字符&#xff0c;所以&#xff0c;如果要让记事本这样的文本处理软件能处理二进制数据&#…

ZOJ Problem Set - 1067 Color Me Less

这道题目很简单&#xff0c;考察的就是结构体数组的应用&#xff0c;直接贴代码了 #include <stdio.h> #include <math.h>typedef struct color {int r;int g;int b;}color;double distance(color c1,color c2) {return sqrt(pow((c1.b-c2.b),2)pow((c1.g-c2.g),2)…

JS 导出Excel,Word

//导出Excel function AllAreaExcel() { var oXL new ActiveXObject("Excel.Application"); var oWB oXL.Workbooks.Add(); var oSheet oWB.ActiveSheet; var seldocument.body.createTextRange(); sel.moveToEle…

c语言连接mysql(入门)_MySQL入门之C语言操作MySQL

基本概念C APIs包含在mysqlclient库文件当中&#xff0c;与MySQL的源代码一块发行&#xff0c;用于连接到数据库和执行数据库查询。#include #include #include #include #include int main(){int ret 0;MYSQL mysql;MYSQL *con NULL;con mysql_init(&mysql);if (con N…

Android UI 色板

感谢LZ 点击链接&#xff1a;android ui 色板 地址 转载于:https://www.cnblogs.com/sunjialiang/archive/2011/08/26/2154565.html

Spring中IoC的入门实例[转]

Spring的模块化是很强的&#xff0c;各个功能模块都是独立的&#xff0c;我们可以选择的使用。这一章先从Spring的IoC开始。所谓IoC就是一个用XML来定义生成对象的模式&#xff0c;我们看看如果来使用的。  数据模型  1、如下图所示有三个类&#xff0c;Human&#xff08;人…

方向gravity_逆转重力方向,更加自由翱翔——GNZ48 - 《gravity》

第二期给大家带来的这首歌出自GNZ48 第二套原创公演《双面偶像》&#xff0c;也是GNZ48 team g 在这套公演中的队歌&#xff0c;一首气势恢宏的歌曲。开头的小提琴就带入我们进入了一种紧张的情绪&#xff0c;随着第一个鼓点敲下&#xff0c;歌词也渐渐揭开面纱&#xff1a;“泥…

06-BCD计数器设计与应用——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线——普利斯队长精心奉献 实验目的&#xff1a;1.掌握BCD码的原理、分类以及优缺点 2.设计一个多位的8421码计数器并进行验证 3.学会基本的错误定位以及修改能力 实验平台&#xff1a;无 实验原理&#xff1a; BCD码&#xff08;Binary-Coded Decimal&#xff09;又…

aix6.1 nfs

1.首先需要启动aix 上的nfs 服务 startsrc -g nfs 或者 smit nfs --> Network File System (NFS)  -->  Configure NFS on This System  -->  Start NFS 停止nfs stopsrc -g nfs 2. 在aix系统上&#xff0c;创建一个共享目录&#xff0c;与普通目录无区别 例…

Flash基本工具练习

练习一、按钮 练习二、卡通脸 练习三、图标 转载于:https://www.cnblogs.com/staceydesign/p/3313229.html

韦根w34是多少位_韦根接口读卡器说明书

距离读卡器颜色为:银白色 QZ-8600B 与 QZ-8600 蓝牙远距离读卡器颜色为:可乐红、 蓝色、橙色、黄色 读卡最大距离:1-20 米 标签协议:CDMA 接口类型:韦根 26/......支持 RS485 接口和韦根接口读卡器的接入,RS485 接口采用双接口设计,支 持环路断点故障检测和冗余功能;韦根格式支…

GMT与UTC简介

一、简介 许多人都知道两地时间表简称为GMT或UTC&#xff0c;而世界时区表则通称为World Time &#xff0c;那么GMT与UTC的实质原意又是为何&#xff1f;世界时区又是怎么区分的&#xff1f;面盘上密密麻麻的英文单字代表着什么意义与作用呢&#xff1f;这些都是新手在接触两地…

键盘事件的响应

在应用的程序的控制方面&#xff0c;更多的使用的是屏幕上的控件&#xff0c;但是有的时候也需要直接对键盘事件来进行响应。键盘是Android中主要的输入设备&#xff0c;对按键的响应的处理是响应之间在程序中使用键盘的核心内容。本例需要实现的内容是通过键盘来控制屏幕上的一…

mysql_query 资源标识符_借助PHP的mysql_query()函数来创建MySQL数据库的教程

以mysql_query()函数作为教程的基础前提&#xff0c;我们先来看一下mysql_query()的用法&#xff1a;mysql_query()函数PHP MySQL 函数库中&#xff0c;mysql_query() 函数用于向 MySQL 发送并执行 SQL 语句。对于没有数据返回结果集的 SQL &#xff0c;如 UPDATE、DELETE 等在…

ios PNG Crush error (PNG图片错误)

我是这么解决的&#xff1a; I had the same problem. How to fix : Open up image with Preview -> File > Export > Format change to PNG and you are done 其他被采纳的方法&#xff1a; 12 Answers activeoldestvotes up vote41down voteaccepted Did you check …