神通广大的JS

转载 2017年08月30日 16:12:06

​点击标题下「异步图书」可快速关注            



一切可以用 JavaScript 编写的程序,最终都会使用 JavaScript 编写

——Atwood 2007


就在前几天“JavaScript是世界上最好的语言”这句话火了,PHP的地位遭受了前所未有的挑战。JavaScript到底有何神通,能登上世界上最好的语言的宝座?


JavaScript是诞生于 1995 年的一种直译式脚本语言,原名Mocha。JavaScript是一种动态类型、弱类型、基于原型的语言,内置支持类型。JavaScript具备简单灵活和跨平台的优势,会成为解决大部分IT问题的优选方案。著名程序员Jeff Atwood在 2007 年发布了著名的Atwood's Law: “Any application that can be written in JavaScript, will eventually be written in JavaScript.(一切可以用 JavaScript 编写的程序,最终都会使用 JavaScript 编写)”。就像世界上大多数人都是白种人一样,GitHub上用JavaScript写的代码也占据了大多数,JavaScript的开放性和简洁性功不可没。


网页前端


JavaScript最初是用来给HTML网页增加动态功能的。与JavaScript同时出现的JScript、ActionScript和ScriptEase等都几乎销声匿迹,但JavaScript仍然被广泛用于Web应用开发,也用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果,甚至成为了前端开发的代名词,这就说明了JavaScript的强大之处。

 

为传统企业做一个展示网站通常耗时以周计,此时开发者只要找一个模板就够了。而开发时间以月计的互联网公司前端开发工作就不得不选择一个合适的框架了,以下是世界主流的JavaScript前端开发框架和类库:


出自Google的前端开发框架Angular.js自带MVC框架,通过新的属性和表达式扩展了HTML,并且通过被称为指令(directives)的结构让浏览器能够识别新的语法,现在已经凭借数据双向绑定成为了使用人数最多的前端开发框架。


来自FaceBook的前端开发框架React.js的设计思想是用组件套组件的方式来绘制Web画面。现在大家开发前端的思路早已不是当年的Web page,而是Application——传统的HEML+CSS已经不适合这个时代了,组件化开发即将成为主流。


国内前端专家尤雨溪的前端开发框架Vue.js在GitHub的Star数量已经非常接近React.js,Vue.js能像织席贩履的刘备一样与出身名门的Angular.js和React.js鼎足而立的原因在于提供了更加简洁、更易于理解的API,更加轻量级也更加容易上手。自带MVVM架构的Vue.js必将以开源世界中国人的骄傲载入史册。


体量并不能称为一个“框架”的jQuery是一个号称“Write Less,Do More”的JavaScript类库,封装了大多数常见、但写起来复杂的实用代码段,如优化HTML文档操作、事件处理和动画设计等。


服务端和大数据


JavaScript不仅适合前端开发,Node.js的出现使得JavaScript程序员进行后台开发成为可能。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,其包管理器npm是全球最大的开源库生态系统。无论公司自备机房还是使用阿里云、金山云等云服务,Node.js都是创业团队的最佳选择。但因为JavaScript是单线程语言,在处理高并发和大数据等问题上常常力不从心。


如果你是一个Android或iOS开发者,服务器仅仅是给自己业余项目或开源项目用的,那么Bmob云(没错,Bmob云端代码也是JavaScript)也能为你提供一个小而美、并且价格低廉的服务器。


网页游戏


网页游戏不都是粗制滥造的“一刀999级”或“屠龙宝刀,注册就送”等圈钱产品,用浏览器玩的游戏也能做到画面精美、特效绚丽。


Cocos2d-x-js是全世界最著名游戏框架Cocos2d-x专为HTML5游戏设计的JavaScript版本,采用原生JavaScript语言编写。随着Flash退出历史舞台,掌握Cocos2d-x-js技术的程序员就是新一代的闪客。


2014 年 2 月创立于北京的Egret是一套完整的HTML5游戏开发解决方案,其核心产品白鹭引擎(Egret Engine)凭借上手简便、性能强大已占据国内超七成的手机页游引擎市场份额。Egret布道师徐聪(笔名:臭臭打不死人)不但能用自己精益求精的技术和助人为乐的精神帮助开发者解决使用Erget时遇到的技术问题,还经常向有探索精神、帮助其他开发者了解Erget的开发者赠送礼物。


移动端


最著名的HTML5移动开发框架当属Facebook发布于 2015 年的React Native(顾名思义,是上文提到的React.js的一个分支),这是一套跨平台、动态更新的Javascript框架,口号是“Learn once, write anywhere”,与之类似有同属舶来的PhoneGap等。


国产的HTML5开发框架在国内也百家争鸣,常见的有HBuilder和AppCan,二者共同特点是都为了便于新手入门制作了专用的编译器。2016 年,在Qcon大会上宣布开源的Weex也异军突起,来自阿里的它因为开发的软件与原生App别无二致受到很多人的青睐。


掌握JavaScript的程序员在国内还有一个新出路,就是微信开发。在国内有 7 亿用户的微信向广大JavaScript程序员提供了无数公众号和小程序开发的就业岗位,并且现在的移动互联网创业公司或者想涉足移动互联网的传统企业都可以先用微信公众号和小程序试水而不必一开始就开发成本高昂、进度缓慢的原生App。


VR


2016 年被誉为“中国VR元年”,其实VR并不神秘,只要掌握了眼球追踪和立体视觉,一切3D引擎都可以摇身一变成为VR引擎。而JavaScript恰好编写过几款著名的2D引擎。


Three.js是3D绘图协议webGL的一款框架,也是增长最迅速的和讨论最热烈的3D游戏引擎;React VR是FaceBook今年推出的基于JavaScript框架的虚拟现实创建工具……这些五光十色的框架大大降低了JavaScript程序员涉足VR的门槛。


Egret Engine3D游戏引擎是国产的3D游戏引擎,不但网页兼容性更好,更支持手机浏览器,加载也更快,还配套了3D骨骼等配套工具,更具备支持将VR游戏发布到微信公众号及小程序的中国软件的种族优势。


尽管目前VR领域仍然是Unity-3d的时代,VR程序员都是写C#的,但JavaScript征服VR世界只是一个时间问题。


AI


AlphaGo击败柯洁的新闻在科技界引发了轩然大波,AI一夜之间登上了各大送索引擎的搜索榜首。


理论上一切图灵完备的语言都能成为AI开发语言,而JavaScript正是图灵完备的。无数JavaScript程序员致力于JavaScript在自然语言处理和手写识别等领域的研究,目前国外已经出现用JavaScript编写的人脸识别工具Landmarker.io。


尽管目前业界主流观点还是“AI入门用Python,AI追求性能用C++,AI工业化用Java”,但我们仍然可以坚信克服了AI专业库缺失和无法精确控制内问题的JavaScript终将在AI领域占据一席之地。


loT


loT比一般的软件系统多了一个硬件层,这就决定了loT的架构的复杂程度,常常需要多种语言的配合才行:


1、用Arduino给硬件编写一个控制器;


2、用使用C语言编写的Raspberry Pi连接网络,并传输控制信号给硬件;


3、用“钩子语言”Python连接以上两条;


4、用Java语言编写一个Android应用,用手机作为遥控器;


……


万幸这个需要掌握多种语言才能进行loT工作的时代即将成为过去式。三星设计了用JavaScript编写的物联网引擎loT.js,它的运行内存小于 64kb ,而且全部代码能够存储在不足 200KB 的ROM上,如此轻量的体积在智能家居等硬件设备上有明显的优势。由此可见,物联网也将成为JavaScript工程师的新蓝海。


我是东风玖哥,段子手中最擅长开发Android应用的,Android工程师中段子编得最好的。感谢异步社区及其粉丝们对我的文章的认可和支持,以后每周三会在此奉上一篇原创文章以飨读者。


相关文章推荐

MySQL日志文件之错误日志和慢查询日志详解

实验环境:MySQL Community Server (GPL) 5.7.17、Ubuntu 16.04一、MySQL日志文件分类官方文档:https://dev.mysql.com/doc/ref...

php集成环境和自己配置的区别,php集成环境、php绿色集成环境、php独立安装版环境这三者的区别

php集成环境和自己配置的区别?PHP绿色集成环境和自己安装的有什么区别吗?PHP集成环境与安装版的区别?php集成环境、php绿色集成环境、php独立安装版环境这三者的区别
  • Lccee
  • Lccee
  • 2017-01-01 13:32
  • 820704

《人人都是产品经理》 学习笔记1

产品究竟是什么?   产品就是用来解决某个问题的东西。可以是有形的实物,也可以是无形的服务。   在企业里,产品就是要同时解决用户的问题和公司的问题,一个都不能少。

PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析

PHPWAMP是我开发的一款集成了VC的纯绿色集成环境,支持自定义设置php版本、多版本同时运行、强制修改任何环境数据库密码、一键去除域名非80端口、强制卸载任意环境、强制解除环境阻碍、自动定期任务系...
  • Lccee
  • Lccee
  • 2017-02-16 11:28
  • 364298

模拟JDK动态代理实现

JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例。在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层技术。 JD...

Windows 2008 IIS7 管理器无法验证此内置帐户是否有访问权

windows2008服务器配置为将传递身份验证和内置帐户一起使用,以访问指定的物理路径。但是,IIS 管理器无法验证此内置帐户是否有访问权。请确保应用程序池标识具有该物理路径的读取访问权。如果此服务...

程序员的八重境界

看到一篇有趣的文章The Eight Levels of Programmers。以前似乎看过不少这种程序员的多少个级别、境界,但这篇语言很风趣,而且分类比较细化,让人觉得挺合情合理、无法反驳的。绝大...
  • dc_726
  • dc_726
  • 2017-08-31 04:58
  • 25533

科技的发展带来了什么?- 王圣强

2007-05-16 06:56:28   按道理来说,随着科学技术的发展、工作效率的提高,人们本应有更多的时间来享受生活、充实自己的精神世界。然而,事实恰恰相反,坐在计算机旁的编程人员...

程序员8月书讯

7月书讯中奖名单: zejian_《 Android编程权威指南(第3版)》 奋斗的镇屌 《Swift编程权威指南(第2版)》 bit_kaki《 Android编程权威指南...

多功能php绿色集成环境 700个PHP版本随时切换

文章转载自网络,原作者未知。 很多人都听过WAMP这个词吧,首先来看WAMP是什么意思? Windows下的Apache+MySQL+PHP,称为WAMP。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)