javascript会被其他语言代替吗

JavaScript011

javascript会被其他语言代替吗,第1张

首先排除掉Go,这个东西是做服务端的,定位也是系统编程。主要说说dart:

dart这个语言最关键的地方其实是两个:1.相似性;2.dart2JS。

相似性:

google搞的这个dart你会发现如果有java,c#,javascript背景的开发人员,那么这个语言几乎是0学习负担,直接拿来就能用,做项目。里面有很多好的特性都是你非常熟悉的,语法难度(目前)介于java和c#之间,可选类型的动态语言,弥补动态语言tooling,静态分析上的短板(尽管这个可选类型争议很大,尤其是纯粹从设计语言上的角度上去看)。

dart2JS:

dart vm将来会内置到chrome中,但其他浏览器可能不会支持它,所以dart2JS就显得很重要,这样dart写的程序可以在所有浏览器上执行,至于性能和体积等等问题这个变成了编译器优化的部分了,纯粹的技术上问题,没有什么不可逾越的障碍了(例如让其他浏览器接受dart vm这种非技术性障碍,这个很难逾越),只需要时间去完善。最终有点类似于手写汇编和编译器生成的汇编哪个效率高的问题。

有了语法上的高度相似性和dart2JS,那么dart失败与成功其实不是那么重要了,因为google最终的目的不是让大家都一定要去使用它的语言,而是要让web进化的更快一些,或者说有一个比现在更好的javascript快点的到来,这才是它最想要的结果,类似于它的什么高速光纤等等,都是这个套路,让你更加依赖web,因为web是它盈利的关键入口。

2011年google内部有邮件说明过为啥要做这个语言?他们有2套方案会一直并行的去做下去:

1.v8团队继续优化js引擎,一起参与进化javascript语言;

2.发明一个新的语言(dart),最终替代JS。

方案1风险小但进展太慢它等不及,方案2风险大但回报也大。最终他们决定同时执行两套方案。

而dart的开发者大部分就是v8,chromium的团队人马,dart中很多新东西都和v8有关联,dart一些新的特性未来可能也会被ecmascript 接受成为未来js的新标准,所以最终无非就是两个结果:要么dart失败了,但dart里很多好的东西都被js吸收了,js焕然一新;要么dart成功了,代替掉了js。无论是哪种结果,web的进化进程都被加快了,这个就是google的真正目的(有点像它做android但却不直接通过这个系统本身来赚钱)。

所以说:这个语言在设计中【保持相似性】和【dart2js】是很关键的两个方面。那么你觉得它能否代替掉JS对你影响大么?也不会出现什么你学了很久的东西未来某天发现没用武之地了这种情况,所以该用js的继续接着用,想尝试dart的也别担心别的浏览器跑不了,也不用担心要从头开始学一门新的语言的负担,因为它里面大部分东西都是你早都掌握了的。

强大的跨平台编程能力

Bowery团队指出Go能很方便地在不同系统里进行程序编译,这是他们转入Go的重要原因之一。

作为开发平台,对Linux,Windows,OSX等常见操作系统提供支援是能否吸引开发者的基本要素。在Go中,开发者可以针对不同操作系统定义不同的文件来实现相同的功能函数。Bowery团队成员Larz在创建Prompt应用(命令行输入)时,就是借助Go而轻松实现了跨平台编译。而开发者要做的,就是设置好不同的环境变量。

快速部署

在Go平台中,从测试环境到真实环境的切换是非常便捷的,因为它无需额外的系统依赖。特别是对于Bowery提供给用户的命令行工具来说,用户无需安装Java,RVM或者NPM等工具便可正常运行。

并发处理

Node.js在并发处理方面处于劣势,仅有I/O程序或计时器运行在并发模式。因此如果希望打造一个快速响应的跨程序通讯系统,Go无疑是更好的选择。Go提供了低级别的并发处理基元,例如mutexes、wait groups等等。

整合测试框架

如果希望找到一个标准化的整合测试框架,不妨进入Go来体验一番,它内建了完整的测试包,免去了四处寻找的麻烦。如果想编写一个新的测试套件,只要把_test.go文件添加到相同的包里就可以了。有关Go测试的更多信息,请点击这里进行访问。

标准库

Go提供了标准库,标准库的好处是无需包含其他扩展库,从而能节省开发时间并且还提高了健壮性。

强大的开发者工作流工具

Go的工作区界面能帮助建立标准化的工作流,虽然这或许会压缩了开发的自由度,但得到的是一个结构化的有条理的工作区:该区有三个根目录,src用于放置源码包,pkg用于放置编译包,bin放置的是执行文件。把源码和依赖文件集中存储的好处是使团队成员都有一个相同的文档结构,而不会出现杂乱的文档情况。此外gofmt能以相同风格对代码进行格式化,这是一个非常实用的功能。所以一旦需要进行调试,只需集中精力解决当前问题而无需分心处理结构或风格等琐碎问题

先说感受到的先进性:

语法非常简洁,有种在学 C 语言的感觉,学习过程觉得很轻松,没有太陡峭的曲线,但语言也完全够用

自带工具就非常强大,而且各 IDE 和 Editor 都能集成,开发工具完全不是问题

go get = git clone + go install ,从 github 上直接 clone 下源码,编译出 .a 包文件和安装 bin 到 $GOPATH ,就可以本地任意地方使用了。反观 npm ,相信很多人不知道 NODE_PATH 的存在。

gofmt 代码风格统一,码农们再也不用为空格与 Tab 争吵了

go test 支持 benchmarks 和覆盖率测试

godoc 查看文档的工具。支持本地执行 godoc -http=:8080 后就能在浏览器中访问 golang.org 的本地 copy 版,对被墙的同学是个不错的选择

支持 Github ( Gitlab 等也可以)远程包,不需要发布到类似 npm 那样的地方

并发用协程和 channel 非常容易写,业务逻辑中可以尽量避免回调

部署非常简单,可以运行二进制文件,也可以通过 go get 来安装 bin ,运维起来非常方便

API 稳定,据说从发布到现在语法基本没变,只是 Go 内部做了改进和优化

本人还用 Swift 写过 iOS ,发现 Swift 似乎是从 Go 身上学了不少东西。。

劣势:

G...FF..WWW ,想下个 pkg 安装文件非常困难,最后是通过 brew 下载的

国内资料少(这么简单的语言,似乎也不需要什么资料)

社区小不如 npm ,国内想找个工作更是困难

不确定性:

性能与 Java 比如何,相当于什么水平

综上所述,感觉 Go 确实是一个目前比较理想的开发工具,大家一起讨论讨论,人生苦短,为何不用 go ?