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好?