Web简史

你可能认为web就是javascript?是,但不仅仅是。javascript

这篇文章可能有点长,涉及大量历史资料,建议安排一个充裕的时间 + 充足的兴趣 + 充足的耐心来通读(预估10分钟)。php

在今天的编程领域,web已然是一颗明星,固然,你也能够以为他很快不那么火了,but whatever,它确实已经产生了足够大的影响力,并对社会、职业产生了很深的影响,看街边小广告培训班、网上满天飞的高薪就业班就知道大概一二了。html

好了,言归正传!咱们先从头开始前端

计算机的诞生

二战时期,美国军方为了计算炮弹弹道,让科学家Mauchly和其学生Eckert造出历史上第一台计算机ENIAC。html5

ENIAC诞生于1946年2月14日,占地170平,重30吨,每秒能跑5000次加法运算和500次乘法运算。java

来看看这你们伙,满满的电容晶体电气哈程序员

互联网的起源

互联网的前身是阿帕网(ARPANET),是隶属于美国国防部高级计划署( ARPA – – Advanced Research Projects Agency )的一个网络。web

冷战期间,美国国防部担忧若是惟一的的军事指挥中心被苏联摧毁,全国的军事指挥会瘫痪,有必要设计一个分散的指挥系统──它由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工做,而这些分散的点又能经过某种形式的通信网取得联系。(跟现代CDN挺像)chrome

1969年,ARPA开始创建阿帕网,把美国的几个军事及研究用电脑主机联接起来。起初,ARPAnet只联结4台主机,从军事要求上是置于美国国防部高级机密的保护之下,从技术上它还不具有向外推广的条件。编程

直到1983年,ARPA和美国国防部通讯局研制成功了用于异构网络的TCP/IP协议,加州伯克莱分校把该协议做为其BSD UNIX的一部分,使得该协议得以在社会上流行起来,从而诞生了真正的Internet。

要从物理层面说,就是用分别分布在不一样层级的信号解码编码装置(网卡/路由器/交换机/猫...)将光/电信号不断地转换为二进制脉冲发送,再不断地接受并转换回来,给计算机拿去计算渲染展现。

那几年,各类协议、系统也便随之诞生和应用。

网络时代

当时的互联网只是一群极客的玩具。

1994-95年两家创业公司的出现改变了一切。

  1. 网景公司(Netscape) 在1994年10月推出第一款浏览器
  2. 雅虎于1995年3月推出的免费检索服务

先说雅虎:

杨致远,生于台湾,10岁移民加州,自小天资禀赋...成绩优异,高中毕业时柏克莱、斯坦福、加州理工以丰厚奖学金抢着录取;

在斯坦福读书的时候,这哥们常常在图书馆作兼职,作的最多的就是给图书馆的图书系统地分类整理。

没几年,硅谷软件业开始火了,读博的时候,便选择了CS专业,还遇到了David Filo,俩人一见如故,都爱运动,爱数学,爱科学,很快成了莫逆之交。

留学完,杨致远和Filo发现网站愈来愈多但彼此孤立,互不连接,想要找到想要的内容很是不便。

因而产生一个想法:把众多网站收集起来,分门别类地连接到一个站点上。

随后,俩人创建了以两人名字命名,统称为“杰里和大卫的万维网向导”(Jerry & David’s Guide to the World Wide Web)的站点。

说白了就是个超级简易版的hao123的网址导航吧,找了个图:

最先,哥俩把程序跑在斯坦福校内网。访问人数太多,影响到学校电脑的访问,被驱逐了。

接着就进驻了当时最著名的互联网公司“网景”,并从“网景”的浏览器获得一个按钮位置(相似今天的书签或主页按钮吧)。

在网景里长这样:

借助网景浏览器的庞大用户规模,杨致远和费罗的站点迅速爆红。到1994年秋,他们的站点访问量已突破100万人次。
杨致远和费罗从小听着硅谷神话长大,对这里的玩法很是熟悉。
网站访问量和影响力的成倍增长,让他们看到创业的可能。1995年3月,风险投资公司Sequoia Capital给了杨致远和费罗200万美圆,4月,他们成立了本身的公司:Yahoo!。

2000年的时候,雅虎已是人类史上的第一家千亿美金互联网公司了。

谷歌也是在那会诞生的,不过因为雅虎自身缘由,终被击败。(吴军老师《浪潮之巅》中的观点)

若是不是雅虎,互联网可能将在很长一段时间里成为富人的奢侈品。

再说网景

这么说吧,网景公司诞生那会 Mark Zuckerberg 还在读中学,网景第一个版本浏览器发布时,微软刚出Windows95,IE仍是自带的1.0版本。

因为当时软件的匮乏和浏览器的跨平台特性,当时的网景曾一度是微软的威胁,98年时市场占有率超50%,(至关今天的chrome了哈),不过次年就下滑了。

当年的网景浏览器长这样:

当年也是一场“浏览器恶战”,网景浏览器当时是收费的,Windows也是收费的,但IE属于免费附赠的,俩厂商为了超越彼此,拿下Web市场,拼命往浏览器加功能,
甚至加一些无论能不能用用不用获得的功能,版本号也是火速飙升,很快地,IE出了3.0、4.0,到了4.0的时候,因为微软的资金、人员储备大大胜于网景,IE胜出,占有率超过网景成浏览器市场老大。

固然网景失败也是有必然缘由的,好比这样...

题外话了,有兴趣去读吴军老师的《浪潮之巅》

语言的诞生

这有个小插曲:1994年,网景发布了Navigator0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。
可是这是一款名副其实的浏览器--只能浏览页面,浏览器没法与用户互动。
好比你登陆一个网站输入完用户名点击提交的时候。浏览器并不知道你是否输入了,也没法判断。只能传给服务器去判断。
网景急于解决浏览器与用户交互这个问题。当时解决这个问题有两个办法,一个是采用现有的语言,好比Perl、Python、Tcl、Scheme等等,容许它们直接嵌入网页。另外一个是发明一种全新的语言。
这两个选择各有利弊。
第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;
第二个选择,有利于开发出彻底适用的语言,实现起来比较容易。

到底采用哪个选择,网景公司内部争执不下,管理层一时难如下定决心。
就在这时,1995年Sun公司将Oak语言更名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言能够"一次编写,处处运行"(Write Once, Run Anywhere),它看上去极可能成为将来的主宰。
网景公司动了心,决定与Sun公司结成联盟。它不只容许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java做为脚本语言嵌入网页,只是由于这样会使HTML网页过于复杂,后来才不得不放弃。
总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司彻底介入网页脚本语言的
决策。 所以,Javascript后来就是网景和Sun两家公司一块儿携手推向市场的,这种语言被命名为"Java+script"并非偶然的。

此时,34岁的系统程序员 Brendan Eich 登场了。

来看看祖师爷长啥样:

1995年4月,网景公司录用了他。祖师爷 哦不 是 Brendan Eich 的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言做为网页脚本语言的可能性。祖师爷本人也是这样想的,觉得进入新公司后,会主要与Scheme语言打交道
仅仅一个月以后,1995年5月,网景公司作出决策,将来的网页脚本语言必须"看上去与Java足够类似",可是比Java简单,使得非专业的 网页做者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。
Brendan Eich被指定为这种"简化版Java语言"的设计师。

可是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。
因为设计时间过短,语言的一些细节考虑得不够严谨,致使后来很长一段时间,Javascript写出来的程序混乱不堪。若是Brendan Eich预见到,将来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?
总的来讲,他的设计思路是这样的:

  1. 借鉴C语言的基本语法
  2. 借鉴Java语言的数据类型和内存管理
  3. 借鉴Scheme语言,将函数提高到"第一等公民"(first class)的地位
  4. 借鉴Self语言,使用基于原型(prototype)的继承机制
    因此,Javascript语言其实是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
    若是不是公司的决策,Brendan Eich毫不可能把Java做为Javascript设计的原型。

做为设计者,他一点也不喜欢本身的这个做品:
"与其说我爱Javascript,不如说我恨它。它是C语言和Self语言一晚上情的产物。
十八世纪英国文学家约翰逊博士说得好:

它的优秀之 处并不是原创,它的原创之处并不优秀。

The part that is good is not original, and the part that is original is not good.

标准化进程

网景在1997年和微软竞争的过程当中,便率先向当时的 ECMA(欧洲计算机制造商协会)提交了 Javascript 的草案以做为 ECMAScript 的第一个版本标准,
此后的 ECMAScript 每次更新均以此为基石,同时也不断地有浏览器厂商,如 Google、Apple、微软等加入进来共同发展维护;
这在当时对网景是极其有利的,IE当年就几乎是一副我行我素的模样,在今天咱们都能知道IE老版本浏览器上留下的独一无二非标准API有多么麻烦,
当年的的IE尝试过想要本身主导标准,模仿网景在IE上创造并内置了Jscript 解释器,致使当时写网页甚至要对两种浏览器分别写两套脚本;
无奈网景先行一步,此后的 Jscript 才开始向 ECMAScript 标准靠拢,事实上今天咱们所使用的不一样浏览器核心引擎各有不一样的实现,但都是遵守 ECMAScript 标准实现的,微软最新的 Edge 浏览器是目前对 ES6 支持率最高的浏览器。

1998年初,网景竞争失败,IE占据了市场主导地位,为了挽回市场,网景宣布旗下软件免费,并将网景浏览器核心引擎Gecko开源,成立了Mozilla(这会的Mozilla仍是个非正式机构);
然而,年底时网景便被美国在线(AOL)收购了,2000年又和时代华纳合并,03年网景公司(这会是AOL的子公司)正式宣布解散,当天也正式成立了Mozilla基金会;

当时,Mozilla基金会只有一个目的:保证Mozilla能够在没有网景之后能继续生存下去
在今天,Mozilla基金会所宣称的目的是:让浏览器市场保持着竞争的压力,不会再出现像IE6时代这样一家独大的,用他们本身的说法就是“一个致力于在互联网领域提供多样化选择和创新的公益组织
注意,Mozilla基金会下辖有一家叫Mozilla的子公司,这家公司专门还用来开发和维护Firefox浏览器,哈,就是咱们开发者经常使用的火狐啦。

BTW:今天差很少每家大公司都有本身的 developer network,咱们常去的较为权威的 MDN,也是由于祖师爷大大就一直就任在 Mozilla,是 ECMA 主力的推进者,近几年Apple、Google也带动 ECMA 创建了许多新标准。

在这里我强烈安利一部纪录片:《Code Rush》(奔腾的代码)

发展历程

Dom时代

最先的网页都是服务端渲染或者压根没服务端就是个页面,数据组合后吐出html,国内的如dedecms、帝国、discuz、phpwind...各类乱七八糟的程序,有的被收购,有的完蛋...,国际上wordpress是最经典的表明,今天也依然是CMS中的No.1。

前端层面,以DOM模型为核心,一切基于Dom,JQuery是Dom时代当之无愧的霸主,那会的各类“框架”基本上就是各种封装好的函数库(包含UI库),如EXT.js、prototype.js、JQuey...

最先的动画几乎都是经过Dom操做实现的,JQuery的animate也是封装了setTimeout/setInterval,而js中setTimeout/setInterval的精度也仅在16ms左右,又由于js单线程,且dom重绘须要大量计算,基本没法实现出较为流畅的动画,卡帧极为严重

若是是电影时代,这会应该算处于最先的“胶片电影”。

H5C3

H5和CSS3几乎同时出来的,CSS3中增长了许多新的特性,包括大量能够代替dom动画的特性,相比dom动画:

  • CSS和Dom渲染为分开的独立线程,不会由于dom操做而阻塞动画
  • CSS对Dom的修饰/动画,只要不涉及dom重绘,会很是流畅(如opacity、transform...)
  • CSS可优先使用GPU进行加速渲染,若是不支持则自动降级为CPU,而无需代码处理

H5也同时带来了极具生产力的Canvas,甚至诞生了以Canvas为核心渲染方式的框架,就不细说。

这会已经进入“数字电影”时代。

应用化

Angular.js(Angular1)无疑是最成功的开山之做,带咱们进入MV*时代的大门。

今天,Angular1已经完成它的历史使命。
它曾是最全面最强大的前端框架,
它启发了不少人第一次以工程的角度去思考Web,
它让 web app 更加普及,基于它的 ionic 让 web 移动端的实践更加普及,
它也让不少Web开发者有机会认识到复杂web应用的状态管理问题,
没有它就没有今天的Vue,
它是Web开发进程中的一个里程碑,价值不能否认。

这会能够比做 VR 电影时代了。

组件化

感受又返璞归真了,高内聚低耦合的工程结构极大提升了代码复用性和团队分工开发效率。

表明做:Ng四、React、Vue

这会算是 AR 加强体验电影时代。

今天

今天咱们常说一句话:“像1995年那样编写代码”。

最先,有条件的公司,咱们使用一些基于 Python、其余工具来完成部分Web开发工程化的探索和实践。

到今天,从 Node.js 的出现,从 Grunt、Gulp 到 Webpack ...,咱们能极高效率地将Web开发真正地工程化。

从开发、构建、编译、测试、集成、部署、运维...,能覆盖软件开发的完整生命周期。

哦,对了,一两年前就有基于 Node.js 的 NodeOS 和 嵌入式开发系统了。

应用领域

因为Js天生异步的特性和在服务端优异的成绩,Node.js 早已频频被应用于大型商业应用中。

WebView里没法得到的能力:“体验加强”与“端基本能力”,如今也有React Native等各种框架在实践。

将来

web-components、web-service、web-vr...都是开发者在Web开发道路上种下的一颗颗种子,当它成长为参天大树那一天,将不断为软件开发领域孜孜不倦地输出生产力和贡献。

就像 Stackoverflow 大佬 Jeff Atwood 说的那句话:

Any application that can be written in JavaScript, will eventually be written in JavaScript.

部分资料来源于:百度百科、知乎(不详)、《浪潮之巅》、《奔腾的代码》

内容如有误差,期待指正修改。

原文来自:Surmon.me - Web近代史

相关文章
相关标签/搜索