您的位置:首页 > 科技 > 丑小鸭如何变成白天鹅:JavaScript崛起史

丑小鸭如何变成白天鹅:JavaScript崛起史

时间:2019-12-01 16:42:46

神一局是一个36氪以下的编辑团队。它专注于科学技术、商业、工作场所、生活等领域。重点介绍国外的新技术、新观点和新趋势。

编者按:很少有人能想象过去玩耍的语言会成为一个专业平台。诚然,javascript的成功是被迫的。Javascript在我的生活中从未被喜欢过。其他人支持java applet,然后是flash,甚至更喜欢silverlight。Javascript对抗所有这些挑战者,打败了所有人。这是一个关于丑小鸭成功攻击的童话。原文由matthew macdonald在媒体上发表,标题是:howjavascript greaUP,并成为一种真正的语言。

皮诺奇在等待生命中的机会

如果你在1999年预测javascript将在20年内成为世界上最流行的语言之一,那么要么你被尊为精神巫师,要么你有大脑问题。

在世纪之交,javascript不仅不能做专业语言能做的事情,甚至没有被设计成一个严肃的编码工具。毕竟,需要开发网络应用程序的开发人员已经拥有了他们更喜欢使用的成熟工具。也就是java,applet嵌入系统的方式。

但是在1995年,网络浏览器的先驱网景意识到他们需要给别人一个更简单的选择。当时他们处境艰难——他们在市场上与微软竞争,他们与太阳微系统公司的主要战略伙伴关系濒临崩溃,时间不多了。他们雇佣布兰登·艾希在几乎不可能的时间框架内创造了一种新的语言。他在10天内完善了javascript的第一个版本,正好及时将它嵌入到这个漂亮的浏览器中:

网景2:javascript的首次亮相

艾希真正想做的是开发一个浏览器托管版本的学术编程语言,比如scheme。但是网景的想法不同。他们想要一种看起来像java的语言,即使它的行为不同。Java和javascript有相似的名字,这导致了多年的混乱。

营销需要我让它看起来像java,但不要夸大其词。就是让它看起来像java的弟弟,对吗?把它变成爪哇,伙计。

布伦丹·艾希

在最初的五年里,javaScript是一种为那些还没有准备好Java编程的人填补空白的工具。它的观众包括业余爱好者和渴望做简单事情的人。网页设计者也是受众之一——这是一群新技术工作者,他们的工作是使网页的用户界面更加时尚和图形化。他们想要的比

在专业领域,这是javascript的主要工作——成为用户界面的粘合剂和组合设计过度的网页。每当您需要交互式按钮、弹出式菜单和图片效果时,您必须使用javascript。

谁需要按下按钮?每个人都想要。

2000年左右的周转按钮

不久之后,javascript被广泛应用于世界上最不重要的工作--当鼠标经过时,把一幅图片换成另一幅。

尽管认为开发人员会使用代码自动照亮按钮,然后将这些代码与网页一起分发似乎有些疯狂,但这是每个人都在一遍又一遍地做的事情。(css今天也提供了这个功能,但是它使用了样式设置和动画,而不是预先生成的图像文件,这样更容易维护。)很少有人期望javascript能走得更远。此外,许多程序员更喜欢使用服务器端编程语言,这削弱了对javascript的需求。javascript可以为应用程序的业务逻辑提供支持的想法和用excel宏替换数据库存储过程的想法一样荒谬。

今天,当人们批评javascript时,他们通常会质疑语言本身的局限性——修补的面向对象语言(object-oriented language)、糟糕的类型安全性、笨拙的dom模型、= =和= = =愚蠢的点不清楚等等。但这并不是javascript在早期看起来如此糟糕的编程工具的原因。毕竟,有许多丑陋的编程语言变得至关重要,因为它们在正确的时间出现在正确的地方。(短名单可以包括基础、cobol、sql和php。Javascript是所有web浏览器本机支持的唯一语言。正如网站主宰着世界一样,它绝对是在正确的时间出现在正确的地方。

javascript的真正限制是沙箱——一个严格控制的环境,允许您的代码被修复。沙盒将javascript从桌面世界中分离出来。例如,javascript代码不能直接访问文件系统、显示器或任何硬件。此外,它切断了javascript与网络服务器上一切的联系,比如存储客户列表和产品目录的数据库,以及运行业务逻辑的服务器端代码。Javascript被迫独自生活,所以javascript除了翻动网页上的按钮之外几乎无事可做也就不足为奇了。

奇怪的是,有人站出来保存了javascript。这个人是微软,不是今天的微软。今天的微软支持所有操作系统的开源开发。然而,与此相反,微软当时是一个赤裸裸的反开源斗士,总是用“拥抱、扩张和消灭”的概念来消费竞争对手。

这是怎么回事?大约在全世界都疯狂喜欢翻盖按钮的同时,微软的一个团队正在研究一种让outlook的网络前端响应更快的方法。他们正在开发一种名为outlook网页访问的产品,如下所示:

Outlook网络访问2000

微软团队的目标不是太多。他们想成为一个在浏览器上运行的高效电子邮件阅读器。最重要的是,他们不想每隔几秒钟刷新一整页。相反,他们使用一种技术,允许网页在后台悄悄地检查新邮件。这个目标看起来并不是一个惊天动地的举动,但是记住gmail并不是在那个时候发明的。事实上,整个谷歌公司只有几年的历史。

微软团队使用一个名为xmlhttprequest的activex组件来创建一个小管道。xmlhttprequest的基本思想很简单——它为javascript代码提供了一种发送web请求的方式。就像网络浏览器可以联系网络服务器并提出请求一样(例如,“嘿,请给我这一页!”同样,javascript代码可以使用xmlhttprequest对象来提出自己的请求(例如,“嘿,请再给我几封电子邮件。”).

突然间,网页可以使用网络服务器的所有资源。需要数据库中的一些数据吗?打电话给服务器,让它给你。您是否需要服务器对超级机密执行计算、安全测试或验证检查?也请打电话给服务器。最重要的是,当在后台发起呼叫时,页面不会受到干扰。

Xmlhttprequest并非没有其怪异之处。首先,它的名字很奇怪,而且它的情况不一致。对于像javascript这样区分大小写的语言来说,这是一个头痛的问题。其次,这个名字似乎表明您的代码将发送和接收xml消息。事实上,消息几乎可以是任何东西——纯文本、html块或序列化为json的javascript对象。然而,也许最大的问题是xmlhttprequest是使用activex开发的,这意味着它只能在windows计算机上运行,并且只能在internet explorer中运行。

但是这些奇怪的东西并不能阻止javascript向前发展。在短短的几年里,其他浏览器已经提供了自己的xmlhttprequest实现——代码使用相同的对象,但是没有activex问题。

尽管微软开发了xmlhttprequest,但他们在开发自己的网站时并没有充分利用它。他们不愿意在hotmail中使用xmlhttprequest,这是一个基于公共网络的电子邮件系统。相反,他们这么做了,因为他们知道谷歌在xmlhttprequest上震惊了网络开发社区,先是在2004年实现了gmail,然后在2005年实现了谷歌地图。这是圣杯的一瞥:运行无响应桌面应用程序的基于网络的程序。

谷歌地图2005

Xmlhttprequest是改变javascript过程的关键元素。然而,后面还有更多拐点。

javascript语言已经被冻结了很多年。问题在于,市场领先的网络浏览器——互联网浏览器——根据操作系统的时间表,升级速度非常慢。开发人员被迫编写代码来检查浏览器版本,并且必须进行实时调整。

2006年,开发人员想出了一个解决方案,那就是以jquery的形式进行检查。虽然jquery在今天已经过时了,但是如果你想花时间开发特性而不是解决浏览器兼容性问题,它在10年前就是一个必不可少的工具。

2008年,谷歌发布了一个名为v8的新javascript引擎。正如jquery首次为开发人员提供了广泛的兼容性一样,v8也为他们提供了出色的性能。因为v8引擎是一个独立的开源组件,其他项目也可以使用它。未来,它将为node.js和电子等创新打开大门。

2008年下半年,html5的第一份工作草案出现。Html5本身与javascript没有任何关系,但是它对于新一波javascript api来说是完美的。突然间,开发人员拥有了存储本地数据、管理浏览器历史、使用音频和运行后台任务的工具。网络功能和桌面功能之间的差距再次缩小。

javascript的成功是浏览器特权地位的必然结果吗?还是这是一个需要运气和完美时机的幸运成功?

诚然,javascript被迫获胜。Javascript在我的生活中从未被喜欢过。其他人支持java applet,然后是flash,甚至更喜欢silverlight。Javascript对抗所有这些挑战者,打败了所有人。

也许最公平的评价是javascript证明了每个开发人员发自内心的想法。也就是说,决定新技术命运的最重要因素是它的受欢迎程度。如果你的技术覆盖面很好,你不需要从一开始就尽力而为。你只需要足够好。

Javascript的未来将是一条快速分化的道路。现在,我们有运行在网络服务器上的javascript(感谢node.js)和支持桌面应用程序的javascript(感谢node.js和电子)。我们还有远至打字稿的语言,可以编译成javascript,从而为开发人员提供了一种在不违反道德标准的情况下编写网页的方法。将来,webassembly可能会完全摆脱语言限制,并依赖其javascript引擎为开发人员提供使用任何高级编程语言的方法。

是时候承认自己的立场了。尽管需要缝合和修补,尽管有很多不一致之处,javascript无疑是最棒的编程语言之一。布兰登艾希把javascript放入网景导航器。我们把整个世界都塞进了浏览器。结果是一个现代网络。

总是打赌javascript会赢。

布伦丹·艾希

译者:博西。

贵州十一选五 江西11选5投注 福建快3 新疆十一选五开奖结果 11选5下注