一切可以用 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工程师的新蓝海。

转载于:https://blog.51cto.com/dongfeng9ge/1963519

【玖哥乱弹】神通广大的JavaScript相关推荐

  1. 【玖哥乱弹】祭天时不同程序员的不同杀法

    这两天一张"还杀了一个程序员祭天"的截图火了,很多同行在纷纷谴责这位无良老板的同时把矛头也指向了我,已经遇到好几个人问我:"作为程序员和一个杀程序员祭天的老板做校友是什么 ...

  2. 雷哥带你走进Javascript

    javascript复习笔记 -------------------------------------------- 1.概念 2.面向对象思想 3.作用认识 4.引入方式 5.执行顺序 变量 1) ...

  3. 如果编程语言也来玩权利的游戏,怎么安排角色?

    本文由图灵教育(turingbooks)授权高可用架构发表,作者英子. 编程语言跟<权力的游戏>结合写篇文章的想法有接近2个月了,因为我猜图灵(以及高可用架构)的读者中有很多权游的死忠粉. ...

  4. OSChina 周四乱弹 ——不是二奶不是寡妇,老娘的男人是程序员

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2017)请戳(这里) [今日歌曲] @clouddyy  :#每日乱弹音乐# <いつも何度でも--「千 ...

  5. OSChina 周三乱弹 ——京中有善口技者

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) [今日歌曲] @clouddyy  :<Let Me Be With You - ...

  6. JavaScript成功背后的四个关键人物!

    前言:JavaScript能如此成功,至少有四位关键人物: 1. JavaScript作者Brendan Eich 2. JSLint,JSON作者Douglas Crockford 3. jQuer ...

  7. 挨踢部落故事汇(20):Android程序员的十大转型之路

    玖哥是一个来自东北的Android攻城狮,现在定居被誉为"大湖名城,创(chuan)新(xiao)高地"的合肥.知识面极广,不仅广泛涉猎IT相关知识,还热爱文学,性格幽默,被誉为& ...

  8. 每周荐书 ES6 虚拟现实 物联网(评论送书)

    每周荐书:ES6.虚拟现实.物联网(评论送书) 感谢大家对每周荐书栏目的支持,先公布下上期活动中奖名单 夕阳雨晴 KK-Neven Java Web轻量级开发面试教程 monkey66da 架构小白 ...

  9. 每周荐书:ES6、虚拟现实、物联网(评论送书

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 每周荐书 ...

最新文章

  1. 模板 - 树上问题(树的直径、动态查询树的直径、树的重心)
  2. 解决Eclipse狂吃内存的解决方法(转)
  3. python matplotlib.figure.Figure.add_subplot()方法的使用
  4. airpods_如何通过AirPods与其他人共享音乐
  5. Effective Java~57. 将局部变量的作用域最小化
  6. win10 linux声音,win10电脑突然没有声音的10种修复方法
  7. Profinet 协议
  8. 解决AndroidStudio Locat侧边栏消失
  9. docker运行rabbitmq
  10. [转]深度学习在目标跟踪中的应用
  11. android零宽空格,特殊字符的问题—零宽空格
  12. iOS 初中级工程师简历指北
  13. Springboot过滤器中注入Bean
  14. PHP用curl请求网址的code码
  15. liunx下判断c语言是否挂载U盘
  16. Qt - OpenCV 连续图片生成视频
  17. 查看表所有列名SQL
  18. EDEM v2.7 Win64 1CD(离散元专用分析软件)
  19. Ubuntu下的源码浏览器Opengrok搭建 并集成LDAP认证登陆
  20. 树莓派js调用C语言,SpiderMonkey js中调用c程序

热门文章

  1. 智能锁只需要一个MAC地址就可以打开
  2. 尹孝孫 楸溪 門前刺紙欲生毛
  3. 网易云---手机验证码登录
  4. 嵌入式是什么 ?为什么要学好嵌入式呢?
  5. Apache关联Weblogic启动时爆错!libstdc++.so.5
  6. C语音是什么类型的语言?
  7. Xshell6|Xftp6 要继续使用此程序,您必须应用最新的更新或使用新版本
  8. Java OutputStream.write()的功能简介说明
  9. Android 8.0 状态栏信号显示、信号定制
  10. 「UG/NX」BlockUI 枚举Enum