昨天朋友圈被微信小程序刷爆了。java
我趕快在書架上拿出三年前買的書,把上面的土擦乾淨,壓壓驚。程序員
做爲一個並非資深的程序員。 從程序員的角度分析一下微信小程序,歡迎指點。編程
微信小程序只發了200個邀請號,和我預想的同樣,張小龍並無翻我牌,難道就不能雨露均沾嗎?小程序
先來了解下什麼是微信小程序。 轉自知乎微信小程序
微信也許重申了」咱們是一款約炮軟件」微信
微信還提供了一大堆接口和組件(很差意思,說了句廢話)。markdown
下面是禪叔的觀點:網絡
小程序原理就是用JS調用底層native組件,和React Native很是相似。偏偏又證實了,凡是能用JS開發的最終都會用JS開發。app
解:
據我多年經驗,這句話是一個真命題。
編程語言
語言的設計者是有兩個派系的,有些人認爲程序員語言應該防止程序員幹蠢事,另外一些認爲程序員應該能夠用編程語言幹一切他們想幹的事。 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嗎?
個人觀點很明確,
如今不會取代,之後會,可是之後會出現之後的微信取代不了的;之後的之後會取代之後的,可是之後的之後會出現之後的之後的微信取代不了的 …..
其實也不難解釋,10年前咱們不能在網頁上玩傳奇, 可是如今能夠。可是如今又有了魔獸世界,也許10年後網頁上就能玩了,但那時候確定還會出現 超級魔獸世界之類的遊戲不能在網頁上玩。
有的人會擔憂,微信小程序出來了, 作Android、IOS開發的會不會失業啊。
其實你大可放心,只要你會學習,永遠不會失業,你不學習,就算微信小程序沒有推出你也會失業。
就目前而言,小程序始終是小,場景有限。還不能徹底取代APP , 還能夠經過小程序引導用戶下載APP。就像簡書同樣,網頁端能瀏覽不表明不開發APP軟件。
可是要認清大的趨勢, 這段時間就是用來給你學習的。
具體怎麼學啊?
看文檔學習唄, 首先了解JS語法基礎, 瞭解React Native原理,學習JS , RN,H5,CSS,運營,測試,產品設計規範,圖形設計,神經網絡,OpenGL………
總之,根據具體文檔,用到什麼學什麼。
做爲一個程序員,你能夠忘了學習的高數,能夠忘了學習的英語,能夠忘了學習的線性代數…. 可是千萬別忘了學習。
更多精彩請關注微信公衆帳號likeDev