1. 程式人生 > >從程式設計師的角度分析微信小程式

從程式設計師的角度分析微信小程式

我趕快在書架上拿出三年前買的書,把上面的土擦乾淨,壓壓驚。

作為一個並不是資深的程式設計師。 從程式設計師的角度分析一下微信小程式,歡迎指點。

首先吐槽

微信小程式只發了200個邀請號,和我預想的一樣,張小龍並沒有翻我牌,難道就不能雨露均沾嗎?

先來了解下什麼是微信小程式。 轉自知乎

微信也許重申了”我們是一款約炮軟體”

微信還提供了一大堆介面和元件(不好意思,說了句廢話)。

這裡寫圖片描述

下面是禪叔的觀點:

小程式原理就是用JS呼叫底層native元件,和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這種語言擴充套件性極強, 效能比起其它語言只能呵呵了。 但是硬體速度會提高很快。
Paul Graham算過,如果摩爾定律一直成立。一百年後計算機的執行速度是現在的74乘以10的18次方倍。(準確地說是73 786 976 294 838 206 464倍)
這裡寫圖片描述

終有一天,你會在選擇的時候忽略效能,選擇便利性。

以前上學的時候,經常去網咖玩大話西遊和傳奇。而現在隨便一個頁遊就能做出這種遊戲效果。10年前你很難想象在網頁上能玩這種遊戲。

你現在就可以嘗試想象一下若干年後,開啟網頁能玩魔獸世界。這並不是不可能實現的。

強調效能的語言還能否生存

我們都知道C/C++ 就是強調效能的語言, 我們做遊戲或者視訊播放的都是要求效能的。他們會不會被新的語言取代呢?

我可以鄭重證明,不會的。

雖然上面我說的Java語言屬於強調效能的第一陣營的語言。但是相對於C/C++ 它顯然是增強了便利性。
語言是發展的,是迭代的, 隨著硬體效能提高,基本上每個節點下都會產生新的語言,相對於之前的語言浪費效能,增強便利性。

但是很難取代之前的語言,對效能要求高的程式依然會出現的, 即使以後可以在網頁上玩魔獸世界,但是還會出現 超級魔獸世界,泰坦世界, 宇宙世界 等等一大堆新的對效能要求較高的遊戲。

微信小程式會取代其它APP嗎?

問題回到我們的主題微信小程式上,微信小程式會取代其它APP嗎?

我的觀點很明確,
現在不會取代,以後會,但是以後會出現以後的微信取代不了的;以後的以後會取代以後的,但是以後的以後會出現以後的以後的微信取代不了的 …..

其實也不難解釋,10年前我們不能在網頁上玩傳奇, 但是現在可以。但是現在又有了魔獸世界,也許10年後網頁上就能玩了,但那時候肯定還會出現 超級魔獸世界之類的遊戲不能在網頁上玩。

作為一個程式設計師,我們需要學什麼?

有的人會擔心,微信小程式出來了, 做Android、IOS開發的會不會失業啊。

其實你大可放心,只要你會學習,永遠不會失業,你不學習,就算微信小程式沒有推出你也會失業。

就目前而言,小程式始終是小,場景有限。還不能完全取代APP , 還可以通過小程式引導使用者下載APP。就像簡書一樣,網頁端能瀏覽不代表不開發APP軟體。

但是要認清大的趨勢, 這段時間就是用來給你學習的。

具體怎麼學啊?

看文件學習唄, 首先了解JS語法基礎, 瞭解React Native原理,學習JS , RN,H5,CSS,運營,測試,產品設計規範,圖形設計,神經網路,OpenGL………

總之,根據具體文件,用到什麼學什麼。

作為一個程式設計師,你可以忘了學習的高數,可以忘了學習的英語,可以忘了學習的線性代數…. 但是千萬別忘了學習。