写了两年多的js了吧,一开始的目标并没有很学术,我只想安安静静做个很厉害的开发者。但是总是沉溺在一种语言里,会让人误以为这种语言很厉害,就像只在村子里混的话,我觉得我自己可以逆天,村外有人,编程世界也需要出去走走,所以我想写一下学习js这段时间所看到的东西,作为出发前的反省
我是Javascript
javascript作为一种解释型语言,执行效率很低,虽然在google v8的推进下,性能提高了几十倍,但是依然是要比中低级语言的性能差很多,所以网页性能很难上去,浏览器呈现网页的能力还是有限的,webAssembly成为突破这种有限的可能。对了,说起我的身世,很重要的是二十多年前,一个伟大的程序员为了完成老板的任务用十天的时间制造了我,所以,你们会知道我其实本身会有很多自打出身就拥有的毛病,比如我是解释型和弱类型的,再比如我只是写在浏览器的脚本文件里的,所以大家起初使用我都是比较混乱的。还有typescript,nodejs,coffeescript,react,angular,vue什么的都是在说我。后来你会明白说web好像就是再说我一样
浏览器的不服输
回顾一下web和h5
以前的网页都是静态页面,php和jsp的后端开发们替前端们写页面和js脚本,这些都是因为js很菜,网页搞不了什么名堂。
世界在改变,浏览器执行代码和cpu执行代码都是执行代码,凭什么js要输,所以nodejs v8 h5出现了。
技术和经济的互相推动
h5规范一出现,canvas和vedio就淘汰了flash,网页三剑客什么的都变成了历史故事。
而v8的出现导致了前端渲染和单页应用,渲染不再是php和jsp做的事情了。
nodejs让js的开发变得工程化,同时也挺身成为了一个不错的后台语言。
当然这些事情都被营销者们看在眼里,他们注视着这些变化,去探究里边的每一个商机。
市场所赋予的名利
网页传播成本很低,网页的生产成本也很低,网页能做这么多事情,这便是一个伟大的商机
这个商机包括建站开发,h5开发,丰富的网页应用以及小程序应用
商业的发展和技术的发展总是互相驱动的,有人投资就有人搞事情,技术的发展制造的商机也会让投资者更加愿意投入资金进去,这是一个良性循环
所以这便迎来了h5最火爆的时期
短短的三四年时间里 js从一个无人问津,被当作玩具的语言跻身成为了一个很受欢迎,需求巨大的语言
js的获取的名利让更多的人介入其中,也让他得以蓬勃发展,比如nodejs,react,angular,天才华裔尤雨溪,rn,webpack,css3,h5,ecma2015-2018等等等等
哦对了,比较可怕的是webVR也出来了,想当年我们浏览网页只是为了百度百科,现在都可以玩vr游戏了,发展的很牛逼吧
执行效率的提升
不管什么执行效率,这些对于开发者以外的所有人来说都只是两个字,体验,
执行效率和网速,带宽和宽带,光纤,js还是jsp .net除了开发者以外,其他人一概不会思考,反应在浏览器上就是打开的快不快。
什么canvas flash vedio,响应式,组件化对于用户来说也只是炫不炫
什么UI UE UX 对用户都是舒不舒服
至此感谢http协议 ws协议 GPU以及英伟达 英特尔 AMD 光纤传输 广电总局为提高执行效率在背后作出的贡献
其实说白了就是js效率的提升,从另一个层面上来看是网速变快了和CPU 变强大了 GPU加速渲染了
入侵了APP和后端
这种名利和发展也让js得到了前所未有的经济驱动,js似乎不希望自己只是混迹在浏览器圈子里的人物了,nodejs和react分别作为js的代表在后端界和app界获得了崇高的地位。
这两个事情也让js赢得了新的名利,一切都可以用js完成,桌面端,app端,浏览器端,后端都有我的身影。
所以js工程师也变得更加受欢迎,因为想要开发一个应用程序,我只需要招js就好了。
全栈在js上变得似乎很实际
CPU可以做的浏览器应该都能做
说到这里,js似乎可以做很多事情了,很多人会觉得我为我是一个jser而自豪,我为我学到了世界上最划算的知识而感到庆幸
加入当时的js设计者可以让js的诟病少点,执行效率高一些的话,那么js或许要远远不止现在的火爆,获取很多年前就风靡了,而不需要等到网络大发展和硬件大发展之后。
其实js并不是那么强,比如LOL不能用js开发吧,有人说一切都有可能,现在的webVR不是js写的么
其实说js不能写LOL,不是说js的API不够,也不是说js写不了炫酷的效果,只是说js性能的问题会导致他总是开发一些性能要求并不高的东西
这也可以看出js出于本身语言特性的原因导致的瓶颈
我相信js可能写出在任何环境场合平台运行的hello world,但我不相信js可以写出比它性能高的语言写的性能更好的程序
开始提到了webAssembly,这玩意呢,可以让其他语言被浏览器执行,效率很高很高,这是一个是性能的突破口
还有一个突破口诸如typescript,dart之类的,当然也很难比c++快,对吧
不幸的消息是这些是浏览器端应用丰富的一个途径,但也是js地位在浏览器端被动摇的极大可能
javascript的可能
js的可能总是那么有趣,我不会怀疑它的乐趣,但会怀疑它的地位,或许终究会被取代,也可能获得了新的方式,也或者性能的大发展,让开发语言之间的。就像加入过有钱,服务器足够多的话,那么数据库的很多优化好像就没必要了
js仍然是一个不二选择,因为它很优秀