Google的新操作系統Fuchsia沒有使用Go語言開發,Go作為系統開發語言的定位是否已經失敗?

Google新一代的操作系統Fuchsia沒有使用GO語言開發,還是使用的C/C++,GO作為系統開發語言,目標是取代C/C++,但Google自己新的系統很少使用GO,是不是說明Google自己並不重視GO,或者說Google自己也不看好GO呢?


幾個基本問題:

  • Go 的目標是取代 C/C++ 嗎?來源請求?
  • 系統編程語言就是寫操作系統內核的語言嗎?
  • 沒有用 Go 寫的 「廣為人知」 的內核等於 Go 不能寫內核嗎?
  • 哪些語言特性是這門語言能寫內核的充分條件?
  • 所有內核都是硬實時的以至於不能容忍任何 GC STW 嗎?

幾個基本事實:

  • 有非常多的基礎設施層的項目使用了 Go 語言,比方說資料庫 pingcap/tidb ,容器 moby/moby(以前的 Docker 項目改名過來的),分散式文件系統 chrislusf/seaweedfs 等等。
  • 雖然在用戶代碼中 Go 不能內聯彙編,但是 Go 能夠輕易跟彙編交互,而且在 Go 編譯器里是有內聯彙編函數的。
  • 在非常非常久遠的時候,曾經有一個能在裸機上運行的 Go runtime 版本,不過後來 Go team 覺得這個沒卵用就放棄了。runtime: remove tiny · golang/go@434f1e3 感謝 @唐生
  • 用 Go 編寫的系統內核一:achilleasa/gopher-os 還在開發。
  • 用 Go 編寫的系統內核二:Go-FuckYourSelf An Operating System by Cat-v.org Trolling Inc.比較久遠,已經放棄治療了。

那麼題主,你聰明的,告訴我,Go 作為系統開發語言的定位是否已經失敗了呢?

PS:Go 語言的正確且唯一的名稱是 "Go",而不是 "Golang" 或 "GO" 或什麼別的。ref: https://groups.google.com/forum/#!topic/golang-nuts/pR5cyDaZd1E


fuchsia 的網路棧是用 go 實現的,還有構建工具、處理文件系統的工具、包管理工具等等。基本上處於實現內核的 C/C++ 和寫應用程序的 Dart 之間的位置,算是搶了一點 C/C++ 在 os utilities 領域的一點空間。


你聽誰說GO的目標是取代C/C++?

在我看來,GO的目標是在Python的基礎上提高性能和代碼的可維護性。

最近突然有了幾個贊,我再說一點。

Google SRE內部新的立項如果想用python的話會被建議用go代替。


這裡說的系統不是操作系統。。。


系統級語言乾的是貼近底層編程,並不一定是真的寫操作系統內核吧?


有些人就是喜歡自己給自己喜歡的語言加戲。谷歌是個大公司,團隊非常多,技術非常龐雜,並沒有規定什麼事情必須用什麼語言解決吧?


出個什麼語言,都想把它弄個內核,弄個操作系統,但我覺得 Go 語言最大的意義是,它的源代碼是很不錯的教程。 Rust 的開發者,很多都會去借鑒 Go 語言的源代碼,借鑒當中實現的邏輯和演算法,再者是,分散式很多地方對性能不是那麼苛刻,對整體設計和架構,卻要求很高。Go 語言的出現帶來了平衡和緩解這些問題的希望。

現在這麼多語言。這麼多選擇,這麼多開源代碼,為什麼老想著讓一個語言干很多不適合它乾的事呢?


系統開發語言不是開發系統語言


難道「系統」不是指分散式系統?而是操作系統?


人家說的不是操作系統。


這裡的"系統 " 並不是指操作系統哦


系統級開發語言不是寫系統的語言。 寫系統合適的語言就一個 那就是c

c++也算能寫系統吧。但是沒c那麼常用。就憑不能隨意分配內存就絕對沒go什麼事。


Go的定位是伺服器應用,因此大家說它是系統級語言,它目前只擅長伺服器應用、運維,等。你可以將它當做是一個靜態版本,性能超強的Python,雖然很醜。能夠做的了底層操作系統的語言,必須是可以隨意操縱硬體,編程範式豐富,各方面發展都特別穩定的語言,目前來看只有C++。


正經OS都不能用GC語言寫。

OS沒事兒就stop the world你覺得好玩?


fuchsia上可以支持go語言,c能優雅做好的事,還是用c,c做不好的才會用go


你覺得操作系統能用上go的GC和內存分配?對於操作系統而言,go太重了,封裝的太多了


對於操作系統這件事來說,能夠勝任這項工作的僅僅有C/C++能夠勝任。由於操作系統跟硬體很貼近,用來寫操作系統的語言必須得能在內存分配各個方面遊刃有餘,C/C++具有的很多對硬體操作很友好的特性是其他高級語言所不具備的。

有說的不對的地方,歡迎指正。


推薦閱讀:

scala的akka和go的goroutine有什麼區別,分別更適合哪些應用場景?
Go語言做Web應用開發的框架,哪一個更適合入門?
多線程情況下 很多變數 頻繁訪問 難道每個都要加鎖訪問嗎?
如何看待 Dropbox 從 Go 轉向 Rust ?
nodejs與go語言比較如何,它們的發展前景怎樣,網站後台開發,選擇nodejs好還是go好?

TAG:CC | Android | Go語言 | 操作系統開發 | Fuchsia |