Google是否不擅長設計程序語言?
看看Go和Dart = =
然鵝看看隔壁巨硬:C# F#根據Vczh的說法,spj是巨硬的人,那巨硬和Haskell也有千絲萬縷的聯繫咯。巨硬還出品了msvc。然鵝看看隔壁水果:Swift我覺得很穩,配被稱為現代語言。水果還出品了clang。然鵝看看隔壁JB:Kotlin才幾年都四個後端了,也配被稱為現代語言。甚至有類似HM的類型推導(很弱但能看到影子),非常屌。是否Google在這一領域非常失敗呢? 補充:搞錯了Ts的爹,已修復
Typescript 是巨硬的,看看後面的署名 TypeScript - JavaScript that scales.
Dart 沒用過,Go 語言我很不喜歡並且社區普遍給我感覺全是一群自負的人
很多時候語言發展到一定程度後,它的發展走向就不完全是發起公司可以決定的了,還要看社區的意見。如果社區的人本身就不追求變化,語言也不會有改變的動力。
如果是 Go 的話,你提交一個 ticket 很大概率會得到參與者嘲諷的回答 proposal: spec: remove complex numbers · Issue #19921 · golang/go。 同樣的情況還出現在和 Go 的使用者討論泛型的問題時,可以預見的反應他們會問:為什麼需要泛型。以至於現在好不容易才在 Go 2 要把泛型加到語言特性中。
但是在 Rust 社區,如果一個問題真的存在,他們甚至會推翻之前的設計另起爐灶,並且語言一直都有新特性出現
是。
沒啥可以洗地的,Go/Dart特性就是沒別人家好看現代。但是人家Go好學易用工具好也是真的。
擅不擅長設計語言和能不能做流行的語言工具是兩碼事。
go給人的感覺是太自負了,不知道算不算gg的一個特質
以下內容為個人偏見:
google在近年來佔據了IT界政治正確鏈的頂端,導致其及其產品受到了各種程度的過譽(沒錯我就是被node的麻煩氣到了)
apple是真的有錢,對於事實標準語言C++,能夠招到足夠的人來開發編譯器
ms則是老牌產品一脈相承,msvc已經有超過30年的演變史,C#也有15年以上的歷史,其間並沒有停滯,每個版本都在做認真的改進
雖然我不太相信各個語言排行榜的準確性(特別是TIOBE的),但如果Go在各種排行榜中都有突出位置,例如年度語言、開發者最想學習的語言,那至少說明Go的發展超出了其他近年新興編程語言。我曾經一度對Swift抱有興趣,可惜除了Apple自家,Swift在其他平台上的發展乏善可陳,做Web的話Go已經很不錯了,Swift呢?成熟度還不夠。另外不知道現在Swift的語言級的並發特性有沒有了?
Go的語法略簡陋,但不管喜不喜歡它,確實算髮展得可以了。那這也反映出了Google的這個Go還是設計得挺不錯的,成績擺在那邊,迎合了工程在性能、約定、簡潔方面的期望。Dart其實前一陣子有準備著手了解,但還沒開展,就不好說了。首先我認為,設計應該看場景和訴求。我個人無比同意,從學術角度來看,Go的設計是比較「醜陋」的。然而我並不認為Google的人不擅長設計語言,因為我覺得我們應該理解他們背後的訴求。
拿Go舉例,從基本的技術角度來看,Go解決了底層分散式系統編程上的一些痛點,運行效率高、並發高、開發簡單、上手簡單等等。Dart則是在填JavaScript的一些坑。這些都是毫無疑問老生常談的。
然而我想講講其他的因素。一個技術的成功絕不是單單因為他的理論完善和優美,而是必須有背後的各種利益的驅動。對於一個公司來說,技術必須服務於業務,技術是公司戰略的一個組成部分。
拿Google的Go來說,除了技術上的好處之外,Google因為Java被Oracle長年咬著告,加上Java標準並不掌握在自家手中,毫無疑問,如果能將自己的技術體系從Java中換掉,那就可以擺脫Oracle的控制。即便Go做不大,握在手中也是一張牌,需要的時候我可以去用他。所以對Google而言,如何發展Go,重心毫無疑問不是廣大開發者,而是首先服務於自身,讓外面的用戶爽是次要的。換句話說,開發Go的首要目的可能並不是要建立相應的開發者生態。
同樣,Go在伺服器端的嘗試無疑是成功的,但是這種理念在客戶端上的嘗試還行不通,確實缺乏很多優秀的特性。即使為Go補齊這麼多特性,可能效果並不好,花的精力還多。那麼這時候,適時扶持JetBrains的Kotlin,是順理成長的,JetBrains是專門做語言相關開發者工具的,相當中立和單純,有強大的動機去開發一個語言並建設相應生態。與其自己招人搞,不如讓JetBrains來搞更「便宜」。
想想當年Google啟動Chrome這個產品,目的就是為了搶佔瀏覽器入口——入口這個的重要性不言而喻,大家看看國內流氓軟體為什麼這麼多就懂了。作為瀏覽器上唯一的通用語言JavaScript,如何爭奪JS的標準,搶佔市場先機,那麼JS引擎V8就是其中至關重要的一環了,所以Google大力支持V8的開發,要知道V8的團隊比nodejs可大多了。
同時,就和微軟當年IE同時支持VBScript和JScript的路子來看,大家也是能想像為什麼Google會有團隊自搞一套Dart了。
所以Google的語言設計能力好不好,我覺得站在Google自身的角度,站在Google的商業戰略上來看,Google的語言設計是完成的相當好的。
Go 是一個劍走偏鋒的語言,為了語法簡潔捨棄了一大堆東西,還有奇怪的異常處理。或許真像王垠說的設計得很差。
但 Dart 完全就是個四平八穩的語言,真沒啥槽點。該有的都有,寫起來比較舒服,也不像 Java 那麼繁瑣。火不起來和語言設計沒什麼關係,就是命而已,2010 年以前誰能料到 Js 會像今天這麼繁榮?然鵝LLVM之父Chris Lattner現在Google
沒看懂,typescript 不是巨硬出的嗎?
因為google知道解決問題最終是要訴諸於各種演算法,而不是花哨的編程技巧。
相比其他靜態語言,我比較喜歡Golang, 雖然我有很多不滿,但還是用吧。谷歌的安卓操作系統影響力巨大,我相信他的眼光。
語言之美的問題,目前沒有人特別在乎了,都偏向實用,簡潔的方向發展,臉關鍵字都不放過。這可能是一個趨勢?
推薦閱讀:
※無法訪問Google頁面,人在海外,請問是電腦哪裡設置錯了嗎?
※美國CS本科生可以做一些什麼項目來證明自己的軟體工程能力? 大家本科階段自己都獨自實現了一些什麼項目?
※Android 操作系統為什麼不啟用swap?
※大部分安卓手機真的都能升級android 8.0嗎?
TAG:微軟Microsoft | 編程語言 | 谷歌Google |