在2019年的ReactiveConf 上,《Elm in Action》的译者Richard Feldman对今后5年Web合作开发的产业发展做了预估,很有趣,撷取给我们。
假如你有良机一气呵成做两个工程项目,你会是不是优先选择控制技术栈?
这是演说已经开始之前Richard提的难题, 坚信许多人单厢优先选择成形平衡的、非主流的控制技术栈。
假如天数返回2006年,那个非主流的控制技术栈是LAMP:
L : Linux
A: Apache
M: MySQL
P : Perl 或是 Python 或是PHP
Richard在2006年创业者的这时候,就优先选择了LAMP, 优先选择了Perl 。但优先选择平衡的小东西并无法确保安全可靠,Perl迅速就走了上坡路,慢慢地连Perl 开发人员都不太好招工到了。
所以Richard 说:“不管我们优先选择的控制技术多么流行,多么非主流,在今天多么吸引人,我们依然是在下注赌博。所以预估当前控制技术会向什么方向产业发展并且跟随,要比一已经开始就盲目接受别人所用的控制技术要更安全可靠一些。”
有了这么两个大前提, 他的预估已经开始了:
1. TypeScript将会接管JS世界
到2020年底,TypeScript将会成为新的商业工程项目最常见的优先选择。
到2025年底,每天使用TypeScript编程的开发人员将超过使用普通JavaScript的开发人员。
TypeScript许多人都知道,它是JavaScript的两个超集,对JS增加了静态类型的检查, 那个关键的特性受到了许多开发人员的欢迎,许多错误可以在编译时就被发现,而不是遗留到运行时,并且有了静态类型以后,阅读、修改、重构现有代码也变得更加轻松。
从Google 趋势来看,TypeScript正处于蓬勃产业发展的阶段,而CoffeScript则走向上坡路。
不仅如此,许多框架都已经支持TypeScript:
尽管如此,还有许多人不喜欢TypeScript,觉得TypeScript代码变得像Java一样冗长,设计也不健全,在某些情况下给人以错误的安全可靠感。
Richard说预估今后的最重要因素是看看这门控制技术如何影响团队, 许多团队单厢说:“我们会尝试TypeScript, 我们已经使用TypeScript”, 从来没有团队说:“我们尝试了TypeScript,后来又返回了JavaScript。”
值得一提的是,现在微软养着两位大神,都在TypeScript和JavaScript领域耕耘,两个是TypeScript的设计师Anders Hejlsberg, 他同时是Turbo Pascal , Delphi, C#等知名语言的设计者。另外一位是Erich Gamma ,他专注于编辑器和IDE,设计模式,Eclipse,VS Code是他的得意之作。
2. WebAssembly 会扩大WebApp的领域
到2020年末,WASM对Web的组成不会有太大影响。
到2025年末, WASM将会创建两个新的领域:“重量级的Web App”。
WebAssembly 是什么小东西?可以简单理解为在浏览器中执行的“汇编语言”, 可以提供接近本地代码的速度,肯定要比JavaScript快得多。
开发人员肯定不会直接写“汇编语言”,程序员可以用C/C++/Rust来写程序,编译成WebAssembly后在浏览器中执行,当然,WebAssembly代码也可以被JavaScript调用。
可能会有人说,现在有了V8 之类的执行引擎,我们觉得JavaScript的性能已经不错了啊,为什么还要搞个Web汇编?
Richard举了两个例子:Figma,这是两个重量级的图像编辑软件,像Photoshop, Sketch 那样,但它与众不同的是在浏览器中运行的。
那个软件是用C++合作开发的,最早的这时候编译成了JS的两个子集ASM.js在浏览器中执行,采用了WebAssembly以后,速度提升了3倍之多。
另外两个更好的例子是游戏。比如下面那个场景,假如想使用CSS,估计是不行的, 但WebAssembly可以搞定。
这就意味着WebAssembly打开了一扇门, 那些重量级的本地应用,可以通过Web的方式来安装,分发了。Web浏览器将会和传统的App Store, 安装程序做竞争了!
以后你想用某个应用,只需要浏览器中输入网址,立刻已经开始使用,不用安装。和别人撷取也非常的方便,发个link就行了。 (是不是和小程序的理念有点像?但本质是不同的。)
HTML/CSS/JS就此死去?当然不会,WebAssembly扩大的Web合作开发的基本盘, WebApp 的盘子会更大。
3. npm将在更多的难题中艰难生存
到2020年末, 至少两个npm的安全可靠事件会登上新闻头条。
到2025年末, 至少两个恶意的npm package 感染大量合作开发者的机器。
这几年,合作开发人员已经目睹了好几次npm的灾难。
2016年, 一名 npm(Node.js Package Manager)的贡献者 Azer Koçulu 出于对 npm管理层的怨愤,删除了自己在 NPM 的250个模块,其中两个叫做left-pad,非常简单,是用特定字符填到两个字符串的左边,达到指定的长度,但那个模块被引用得非常广泛, 导致了一次NPM生态系统的大地震,Node.js, Babel , 还有其他数千个工程项目直接罢工。
2018年npm又爆发了著名的event-stream事件,
此外npm的packagte安装脚本中的也存在安全可靠隐患,Richard建议在本机执行:npm config set ignore-scripts true 。
4. JS的替代品会稳健成长
到2020年末,编译成JavaScript的那些语言会继续增长,但都没有TypeScript增长快速。
到2025年末, 那些非JS的方言还会稳健成长,虽然TypeScript会很流行。
JavaScript有两类替代品,一类是JavaScript方言,如TypeScript, Dart, Coffeescript等,还有一类是非JavaScript方言,例如ClojureScript, ReasonML, 和Elm, 虽然都是编译到JavaScript来执行,但它们提供的体验和JavaScript不同。
Richard本人是Elm的合作开发人员,自然给Elm做了广告,渲染速度快,体量小,不崩溃,有自己的生态体系,并且因为有非常详细的错误信息而广受赞誉。
所以Richard认为,虽然以后TypeScript会更受欢迎,但优先选择了这些小众的替代替代品的“粉丝”将会继续使用它们。
一直CRUD,一直996,我烦透了,我要转型
CPU 阿甘