有一些技術觀點,如果要一一細說,只怕得搞出幾萬字來,所以趁著春節放假,先寫個概要出來,不打算仔細說,否則肯定寫不完,又弄成虎頭蛇尾的東西了。
一、相對于后端,前端是幸運的
后端的系統,運行的花銷,是老板掏錢。前端的系統,運行的花銷,是用戶自己的電費和硬盤。目前的計算機(智能手機)已經足夠強大,使得大多數用戶,都不太在乎執行效率、網絡傳輸、空間占用之類的問題(大型游戲除外)。尤其是在瀏覽器中運行的程序,現在的網絡速度那么快,加載幾百K的js,簡直就是一眨眼的功夫。雖然還是會有人去優化、壓縮js的大小,其實主要還是出于對服務器壓力的考慮。
為什么就說前端幸運呢?因為后端掌握在公司自己手里,所以會考慮各種選擇,比如后端的操作系統、硬件配置、語言選擇、框架與類庫等等等,排列組合,簡直有幾十萬種選擇。
而對于前端來說,唯一的選擇就是HTML+CSS+JavaScript,而且考慮到很多用戶,從來不會升級自己的瀏覽器,前端開發也不必(不該、不能)專門發揮某種特定瀏覽器的特長。 btw:JS這種語言,地位事實上無可動搖。
另一方面,也可以認為前端還是很不幸的。因為:后端的優劣標準已經很明確了,單臺服務器的負載能力,多臺服務器的平行擴展能力,系統的穩定性、可靠性,都是可以有確切的量化指標的。對于老板來說:同樣的訪問量,他需要花費的成本是否合理,能不能更加減少,這是硬指標。
因此,雖然后端系統看起來花樣繁多,其實架構模式、最佳實踐,都已經相當成熟,現在新出現的容器化浪潮,也不過是在省錢、省電的道路上,更進一步而已。
但是,前端的優劣,現在還沒有什么特別剛性的標準。公說公有理婆說婆有理,說起花樣繁多,后端完全自愧不如。前端工程師疲于奔命,也是難免的。當然,亂世出英雄,也不能說完全是不幸。
二、對于Ruby而言,成也Rails,敗也Rails
沒有rails,ruby大概只會是一門和Java同樣古老,卻始終默默無聞的語言。但是由于rails的火爆,很多人開始關注并喜歡上ruby這門優秀、優雅、但是運行效率卻不夠快的語言。
而且,在硬件高速發展的時代,語言、框架慢一點,似乎也并不要緊,再過18個月,新的服務器就會解決所有性能問題。
但是,隨著后端發展大潮的日趨明確,云計算和容器化的興起,榨干服務器的每一滴性能,成為語言和框架的使命。不能很好的契合這一使命的技術,就會變成事實上落后于時代的技術(即使我們依然喜歡)。
如果展開討論,實在是要說太多,就一句話吧:Rails并沒有什么跡象,考慮對docker的支持。而且,要讓rails對docker有很好的支持,需要在架構層面,做天翻地覆的改造。但是這對于一個誕生接近12年的框架,幾乎不可能。
也許,最理想的期望是:ruby社區誕生一個更好的框架,能夠更加完美的支持容器和微服務的架構。
三、對于后端來說,node.js的潮流會過去的
這個話一出,估計就會有很多人不同意了,比如非常了解我的朋友:雪愚現在就一心認為nodejs非常有前途。
就像我在上一篇文章里說的:“后端開發...真正需要解決的問題,都不是語言層面的,也不是前端知識領域的。一個曾經的后端程序員,能夠用好nodejs。一個專攻前端的程序員,其實用不好nodejs。”
對于后端有好奇心的前端程序員,他們在到達某種階段時,難免會出現力不從心的現象。而對于一個有著豐富經驗的后端程序員來說:其實他們現在有了更好的選擇——“go”。因此,我的判斷是:node.js的潮流會過去的。
四、對于前端來說,TypeScript只是又一個微軟發明的攪局語言而已
“還記得VBScript,JScript,J++,J#嗎?為何我對TypeScript保持警惕,就是因為前面這些技術。 ”
這是我在微博上寫的一段話。微軟曾經發明過很多攪局性的語言,目標都是為了挑戰當時市場上的事實標準——然而,始終沒有成功過。
在上一篇文章里,很多人因為這個觀點,和我爭論,我也不打算再仔細表述,立此存照吧。
五、語言看起來層出不窮,其實卻越來越像了
還是不打算細說,那些編程語言的特性,其實在不同的語言之間,正在不斷的互相借鑒,在實際編程實踐中,各種語言特性,也在不斷的經受檢驗,然后互相學習。
然后,語言的選擇,很多時候就是“偶然+品味+偏好+誤會”的結果,幾乎很難有啥對錯。比如說:我曾經因為go語言的fmt,感覺不爽,就一直沒有下決心開始學,現在想來,也有些后悔。
六、比起語法特性,語言的生態圈更加重要
其實,我一直認為類似于gem、bundler、npm、maven、pip之類的包管理工具,是構筑編程語言生態圈的關鍵設施。
語言在Github開源+依托網絡的包管理工具+所有包也在Github,基本上,現代編程語言,都在走這條路。至于優劣高下,完全取決于生態圈的健康繁榮程度了。
《開源也要講注意力經濟》,學會運營社區,非常重要。