每日最新頭條.有趣資訊

為什麽說跨平台和大前端是趨勢?

【回復“1024”,送你一個特別推送】

在 2018 的年終總結上,我談到了未來前端開發的一個趨勢是什麽?我當時說:跨平台是趨勢,大前端更是趨勢。當時,沒有細說,說改天我會從語言發展的角度來講一講為什麽是趨勢。

在具體談談我的看法之前,咱們先看看大家的對於我半個月以前發起的一個投票。投票結果如下:

其實,我看到這個投票結果還是比較震驚的,為什麽這麽說呢?因為我認為大前端是一個趨勢,但是沒想到這個趨勢已經鋼彈到了 40% 。說不定照這個速度,今年就會超過只要求會一種前端平台技術的佔比。所以:技多不壓身是有道理的

那為什麽這種趨勢越來越明顯呢?可能大部分人想到的原因如下:

一、節省成本

我這裡說的大前端不是說移動端和 Web 端組建了一個大前端部門,我這裡指的是公司會要求越來越多的程式員需要掌握大前端的技術棧,即就是既能做 Web 端的開發,可能也需要會手機端的開發(不是指的原生,小程式也是手機端,RN 跨平台的也算)。

這樣節省成本的原因在於:省人力成本。不管你是用原生開發移動應用,還是會做 Web 端網頁和應用開發,這樣當然也行了,因為你一個人就把活都幹了,不需要招一個移動開發者,一個 Web 開發者了。當然,很多公司最希望的就是你能高效的使用 React 類似的技術,既能做網頁,也能順便用 React Native 給做了。

二、高效快速

怎麽高效快速的呢?比如有很多前端框架類似 React 和 Vue 吧,有很多基於他們的 UI 框架可以做到開發 Web 應用的同時,做到適配手機。寫一套代碼可以用在兩個地方,不是更加高效了麽?再比如前兩年如日中天的跨平台 RN ,寫一套代碼可以同時運行在 Android 和 iOS 端。

被炒的火熱,是因為它確實可以節省成本,高效快速,但是一直沒有真正運行起來,打敗原生開發,原因就一個:體驗不好,界面卡頓,不流暢。

它雖然沒有真正打敗原生開發,但是這就意味著不是趨勢麽?

答案是不一定

以上兩個角度說白了都是從企業節省成本,提高效率的方向上講的。我們下面就從語言發展的角度來講一講為什麽是趨勢?

不知道有多少人讀過這本書《黑客與畫家》,在《黑客與畫家》中,作者保羅 · 格雷厄姆講到:

無論一百年後的電腦是什麽樣子,我們基本上可以斷定它們的運行速度一定會快得多。如果摩爾定律依然成立,一百年後電腦的運行速度將是現在的74乘以10的18次方倍(準確地說是73 786 976 294 838 206 464倍)。真是讓人難以想象。不過實際上更現實的預測並不是速度會提高這麽多,而是摩爾定律最終將不成立。不管是什麽東西,如果每18個月就增長一倍,那麽最後很可能會達到極限。但那時的電腦比現在快得多大概是毫無疑問的。即使最後只是略微快了100萬倍,也將實質性地改變編程的基本規則。如果其他條件不變,現在被認為運行速度慢的語言(即運行的效率不高)將來會有更大的發展空間。

……

既然在現實中一些應用程式本身的效率較低,而另一些應用程式會耗盡硬體提供的所有運算能力,那麽有了更快速的電腦就意味著編程語言不得不應付更多的極端情況,涵蓋更大範圍的效率要求。我們已經看到這種情況發生了。要是以幾十年前的標準衡量,有一些使用新語言開發的熱門應用程式對硬體資源的浪費非常驚人。

不僅編程語言有這種現象,這實際上是一種普遍的歷史趨勢。隨著技術的發展,每一代人都在做上一代人覺得很浪費的事情。30年前的人要是看到我們今天如此隨意地使用長途電話,一定會感到震驚。100年前的人要是看到一個普通的包裹竟然也能享受一天內從波士頓發件、途經孟菲斯、抵達紐約的待遇,恐怕就要更震驚了。

我已經預測了,一旦未來硬體的性能大幅提高將會發生什麽事。新增加的運算能力都會被糟蹋掉。

看到保羅 · 格雷厄姆說的,是不是有一點恍然大悟,或者是這麽個道理的感覺?所以說:隨著 CPU 等各種硬體性能的提升,語言之間帶來的一些性能差,慢,都會被硬體提升所抵消,甚至在以後讓你都感覺不到了,即使語言性能很差,但是硬體的提升,還會讓你感覺有些硬體性能過剩,語言這麽爛,都乾不過硬體。

這時候,我感覺講到了跨平台,講到了大前端,就不得不講講最近大熱的 Flutter 了。很多人都不看好 Flutter ,就會舉例子說:RN 剛出來的時候,也被炒的很熱,你看現在怎麽樣?還不是沒起來?就目前來講,Flutter 所基於的 Dart 語言,還是第三方庫都不如其他成熟的框架和語言,很容易理解嘛,剛出來,不能生態這麽完善。

但是 Flutter 的好,就一點跨平台好。Flutter 真的是把大前端和跨平台融合在一起了。Flutter 可以說真的是寫一次,可以運行在任何地方(Write Once,Run Any Where)。Android ?可以,iOS?可以,Windows ?可以!簡直無所不能。

Flutter 的體驗不如原生?但是總比 RN 強吧,又是 Google 的親兒子,程式流暢還易於編寫。關鍵是硬體性能的提升,可以抵消他們的弱點。

很多人都槽點這麽一個問題:人的精力是有限的,不可能什麽都會,這是對於大前端,對於什麽都需要做的一個吐槽!說:“只有廣度,沒有深度,精力有限,從而導致,你什麽都不能做好!

但是,你們沒有發現這麽一個趨勢麽?就是現在的框架和語言,會讓你使用一種框架,可以把所有的事都幹了,只需要一種框架和語言,這或許就是發展趨勢呢?所以說:大家槽點的這個問題,將來或許就不會存在。

最後,留一個開放性的話題供大家討論。今天看到李彥巨集在央視的新年採訪中談到未來可能就不會有手機了,隨著人工智能的發展,將來可能只需要通過語音互動,可能會植入芯片,隨時隨地的方便了解世界各地的事情。而最近在知乎上我又看到了一個話題說:前端只是後端的一個輔助,那麽隨著技術的進步和發展,未來,前端還有必要存在麽?前端的存在形式在未來 10 年,20 年裡可能會有哪些變化呢?大家可以暢想一下。

以上觀點,僅是自己的一點看法和想法,如不認同,那就不認同吧!哈哈……

公眾號對話框,回復關鍵字“1024”

免費領取30本經典編程書籍

獲得更多的PTT最新消息
按讚加入粉絲團