如何評價 Go for android 或 Swift for web 這種現象?
各自入侵彼此不擅長的領域。編程語言為何要互相傷害。如此行事是否違背設計初衷?外行辦事是否能幹得漂亮?請大家隨便水一水。
Java 設計出來是為了給電冰箱發郵件,卻入侵了電腦,入侵了 Web,現在又入侵了 Android。
JavaScript 設計出來是給網頁做動態效果,現在入侵了伺服器端(該死的nodejs),還入侵了手機App(該死的react)。
LISP 設計出來是表處理,現在~~~卻用來裝逼。Swift for Android才叫傷害....
啥叫各自入侵?C++ Java C# 這種本來就叫 general purpose language。 意思就是啥都能幹,啥都能寫。從桌面,到移動,到server。
swift只是想加入這個陣營而已,而且本身他也有加入這個陣營的條件, server不說。蘋果本身就已經有了桌面和移動著兩大平台。第一個計算機設計出來是為了打仗的。
...我覺得,無論一門語言,感覺多簡單,都需要投入很多時間和精力。既然有投入就有感情,就覺得肯定是最好的(不然投入那麼多,不好自己不是頭豬嗎?)期望有回報。既然現在用起來舒服了,就想方設法想要擴展它的局限性。
比喻說 Go 語言做 Android 程序:
熟悉 C/C++ 有財力的公司,會捨棄生態鏈異常完整的 Java ,捨棄 C/C++ 攫取硬體性能的能力,選擇 Go 語言?
為了什麼?Go 語言的編輯的效率?得益於開發工具,Java的編寫效率一點也不慢。而用 Go 語言折騰一個開發環境,又是一件費力不討好的事。
再者說,Swift,聽說它的主力開發是 LLVM 的作者。而且相對封閉,不像 Rust 廣泛聽取社區的意見。
所以有人說,它的未來可能更好,因為現在盛行的語言,所有都是1,2個人做出來的。一個社區砸進去,不見的是件好事。
但 Swift 真的能打敗前任,擠進伺服器市場嗎?
Swift 為了避免重複造輪子,對 C 和 Object-C 的兼容性很好,基本可以直接調用它們寫的庫。採用引用計數垃圾回收。
但問題是,它本身的目的是為了更傻瓜化 iOS 軟體的開發的。它無論現在還是未來,都會偏向這個目的。
那為什麼偏要用不是專業干這件事的工具,折騰來折騰去,來干這件事呢?
現在 Swift 離開了 iOS 平台,基本什麼事都幹不了。如果不調用 C 庫的話。但能調用 C 庫幹這種事的語言太多了。它們的生態也比 Swift 完整多了。
語言只是工具,對公司而言,選擇成熟的穩定的方案遠比慢慢去踩坑更佳靠譜。對Golang而言,定位最初還是操作系統語言呢,現在看起來主要的方向還是高效分散式應用方向。Swift離開iOS不是不可以,對外部社區的態度目前還不清楚,不過會的基本是iOS程序員,你讓他們去寫服務端了,誰來寫iOS程序呢?
現在語言的跨平台跨方嚮應用主要還是為了讓人員發揮更大作用,儘可能的榨乾它們的價值,比如前後端分離之類的。語言的應用場景越多,對初創或者個人作坊幫助比較大,但是伴隨著體量和需求的增加,大部分還是回到老路上來(分工明確與協作)。
另外,你都不說Javascript嘛?什麼叫 "各自入侵彼此的領域。編程語言為何要互相傷害。" ???
除非專用語言比如Fortran/lua之類的,否則和其他語言有一定的交集和競爭很正常。有競爭不好嗎?有選擇恐懼,技術保守的話,用的時候可以只選擇該領域的「老大」不就好了嗎?關於swift談一下看法(或者說感覺吧)。
雖然不做iOS相關的開發,但是我個人非常看好swift。
swift語法相對平易近人,開源加上蘋果的持續投入,未來類庫和性能也不會差。掌握它一門能iOS和後端都能玩,群眾基礎會非常好。只要群眾基礎好,語言持續發展搞出便於前後端開發的庫和內置並發之類的根本就不是個事。有好爹投入,群眾基礎好,大牛坐陣,其他語言只有眼紅的份。JS怎麼樣,罵得人那麼多,不是照樣火?
JS本身設計時定位沒有什麼什麼性能考慮,就是因為有適用空間,不照樣出來V8?JS本身設計時定位跟後端服務八杆子打不著,因為人多,自然就湧現出node這種有點變態(意思是指js使用範圍遠超出當初的想像)的玩意,而且火的不行。人多就可以持續跟進投入,自然就會更好。想想連JS這種"天賦"的,有了群眾基礎都能蓬勃發展成這樣,更何況swift這種。前陣子看到一個評測,在一些case上的性能swift甚至都超過rust了。
iOS領域自不必說,現在swift開源支持多個平台。
用swift在linux寫寫服務也是很自然的。未來swift在前後端都用太正常不過了。
估計有人要吹了,後端不是了解一個語言就搞定的,你還得掌握xxx,blah blah一大堆。
呵呵,大多數做後端的還不是照樣在大牛定好的框架里玩?epoll知道的人多如牛毛,但是能從頭到尾寫一高性能應用的有多少?有幾個開發不是基於libevent/libev/libuv等等之類的?更多的甚至這些都被隔離了,就是在既有的代碼上填一下功能,這時候如果懂的是同一門語言難道有多難上手?swift最大的潛在問題就是Chris Lattner千萬不要把它語法B格升的太高,一定要持續走現在相對樸素的路線,過於高冷不適合廣大群眾。------------之所以這麼說,是因為放假前看到Chris Lattner在考慮swift是否加上一些類似於rust那種風格的Lifetimes ,Ownership 的東東。這些東西一旦引入了,容易脫離廣大群眾。
我對swift談不上什麼喜歡,但是非常看好它的未來。PS,本人是半個rust粉絲
手機的設計初衷是打電話
語言是有學習成本的,個人也有喜好。我選擇了Go,用得飛起,最近有項目在搞移動的,趕緊搜索有沒有方案,不然得學大java,需求就產生了。
一個語言在某個領域沒有拓展,也是個機會,你搞了這塊就是這個語言在這個領域的第一人,只要發展起來影響力可想而知了。不過我覺得大部分走出這一步都是信仰最推動,我喜歡這個語言,為啥不讓它多做點事,畢竟在心中可是最好的語言!
我還是挺喜歡這種發展的,科學發展好多都是無心插柳出來的,說不準swift真就可以寫android了,雖然現在看不到。
死守c、c++
go for Android swift for ios
就跟沙縣小吃和麥當勞遍地開花一樣,吃什麼不是吃,就好這一口。
入侵, 互相傷害.... 違背設計初衷
你真是要多逗有多逗.
所以php是最好的語言
推薦閱讀:
※為啥 Erlang 沒有像 Go、Scala 語言那樣崛起?
※如何看待「Go 2.0」?
※如何看待GO語言的新GC(TOC)?
※這樣一段代碼在軟體工程界屬於什麼水平?
※現在想再學習一門編程語言,應該選擇go還是python?