如何看待微信小程序?

最近微信小程序挺火的。我赶紧把书架上三年前买的书拿出来,擦掉上面的土,捏碎。

作为一个没有经验的程序员。从程序员的角度分析微信小程序,欢迎指教。

第一次吐槽

微信小程序只发了200个邀请号。果然不出我所料,张小龙没有翻我的牌。不能干湿两用吗?

我们先来了解一下什么是微信小程序。转自知乎

微信可能重申了“我们是一个交友软件”

微信也提供了很多接口和组件(不好意思,废话)。

以下是禅叔的看法:

applet的原理是用JS调用底层原生组件,和React Native很像。只是证明了任何能用JS开发的东西,最终都会用JS开发出来。

证明任何能用JS开发的东西,最终都会用JS开发。

解决方案:

根据我多年的经验,这句话是真命题。

语言设计者分为两派。有人认为程序员的语言应该防止程序员做傻事,也有人认为程序员应该可以用编程语言为所欲为。C/Java语言是前一阵营的代表,JS是后一阵营的代表。

往往第一阵营的语言强调性能,int是int,double是double,第二阵营强调方便,int是var,double或者var。

选择语言的时候,其实就是在做选择题。选择方便还是性能。

往往新的语言非常方便,因为硬件性能提高了,为了方便可以放弃性能要求。

编程语言的主要矛盾是程序开发的便利性和硬件水平之间的矛盾。

如果你能穿越回70年代(先在中南海西边买块地),当你坐在巨大的电脑前写代码的时候,不小心抖了一下小手,多打了两个空格,然后编程oom。

不要觉得以上事情不可思议。那时候内存低得可怜。每个角色都被严格定义,不允许浪费。运行java虚拟机是不可能的。怎么会有java语言?

节俭是一种美德,浪费不一定是坏事

随着硬件性能的提升,越来越多的编程语言出现,新的语言往往在性能上浪费,在方便性上提升。按照几十年前的标准,一些用新语言开发的流行应用惊人地浪费硬件资源。

这种现象不仅存在于编程语言中,而且是一种普遍的历史趋势。随着科技的发展,每一代人都在做上一代人觉得浪费的事情。你可以想象30年前打长途电话,现在别说打长途了,还有人坐飞机去预约,这在以前是很难想象的。

浪费可以分为好的浪费和坏的浪费。用更多的浪费换取简单的设计,并不是一件坏事。

如何才能充分利用新硬件更强大的性能,最有利地“废”掉它们?

这时候问题又回到了开头,证明了凡是能用JS开发的,最终都会用JS开发。

JS是一种扩展性很强的语言,性能只能和其他语言比。但是硬件的速度会迅速提高。

保罗·格拉厄姆计算出如果摩尔定律一直适用。一百年后,计算机的运行速度将是10的74倍18倍。(准确的说是73 786 976 294 838 206 464次)

总有一天,你会在选择的时候忽略性能,选择方便。

上学的时候经常去网吧玩大话西游和传说。现在任何页游都可以做出这种游戏效果。10年前,你很难想象在网络上玩这个游戏。

你现在可以试着想象一下,再过几年,打开网页就可以玩魔兽世界了。这不是不可能的。

一种强调性能的语言能生存吗?

我们都知道C/C++是一种强调性能的语言,我们玩游戏或者视频的东西都需要性能。它们会被新的语言取代吗?

我可以郑重证明不会。

虽然我上面说的Java语言属于第一阵营强调性能的语言。但与C/C++相比明显增强了便利性。

语言是发展和迭代的。随着硬件性能的提升,基本上每个节点都会产生一种新的语言,相比之前的语言,浪费了性能,增强了便利性。

但是很难取代以前的语言,对性能要求高的程序还是会出现。即使未来魔兽世界可以在网页上玩,但还是会有很多对性能要求很高的新游戏出现,比如《超级魔兽世界》、《泰坦世界》、《宇宙世界》。

微信小程序会取代其他app吗?

问题回到我们的主题微信小程序。微信小程序会取代其他app吗?

我的观点很明确,

现在不会被取代,将来会,但将来会被微信取代;未来会取代未来,但未来会出现,未来的微信取代不了。.....

其实这也不难解释,10年前我们玩不了web上的传奇,现在可以了。但是现在有了魔兽世界,10年后可能还能在网页上玩,但是那个时候肯定会有超级魔兽这样的游戏不能在网页上玩。

作为程序员,我们需要学习什么?

有人会担心,微信小程序出来了,做Android和iOS开发的会失业。

其实你放心,只要能学,就绝对不会失业。不学习,即使不推出微信小程序,也会失业。

目前小程序总是很小,场景有限。它不能完全替代APP,也可以通过小程序引导用户下载APP。就像简的书,网页能浏览不代表你不开发APP软件。

但是要认清大势,这个时候是给你学习的。

具体怎么学?

看文档学习。首先你要了解JS的语法基础,React Native的原理,学习JS,rn,H5,CSS,运营,测试,产品设计规范,平面设计,神经网络,OpenGL。.........

总之,根据具体的文件,学你所用。

作为一名程序员,你可以忘记高等数学、英语和线性代数...但是别忘了学习。