Rob Pike:走進Go語言

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

序言:關於Go

Go語言是一個開源、並發、高效、簡單、有趣(但對某些人來說可能很無聊)的程式設計語言,支援記憶體回收(GC),具有很好的延展性。Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發布了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社區。

Go最初是為瞭解決Google的問題而開發的,要知道Google面臨著很多大問題。Google的中伺服器最主要是C++編寫的,除此之外還有很多Java、Python代碼。另外,Google還有數千名工程師、無數行代碼、龐大的分布式構建系統以及數不清的機器(我們認為相對於一個中等規模的叢集)。Google的開發可能很慢,甚至笨拙,但它總是很有效。

所以毫無疑問Go對“大硬體”的支援非常好,也適合“大軟體”的開發。CSDN之前也編譯了一批Rob Pike的文章——Go語言之父談Go:大道至簡,在這裡Rob描述了Go的創作起源和初衷。

為什麼應該用Go?

Go是為了協助人們閱讀、調試和維護大型軟體系統而生的,所以目標是

  • 不再緩慢

  • 不再笨拙

  • 提高效率

  • 保持(甚至提升)擴充性

但是在使用C++或者Java開發中卻常常遇到各種問題:

  1. 構建緩慢

  2. 依賴性難以控制

  3. 每個程式設計語言都使用不同的語言子集

  4. 程式難以理解(文檔等原因)

  5. 重複工作

  6. 更新成本高

  7. 版本交叉

  8. 自動化不方便(工具問題)

  9. 跨語言構建

而Go語言則是為瞭解決這些問題而設計的。

另外,C語言的依賴一直是個大問題,包括依賴疊加、編譯時間引入依賴的情況都很難處理,同時你也沒辦法查清哪些依賴是可以刪除的,那些不可以。在C++中,這一點變得更加明顯:

  • 每個類裡都有#include檔案

  • #include檔案中有代碼(而不僅僅是聲明)

  • #ifndef的殘留

所以一直無法在一台機器上構建大型Google二進位。(To build a large Google binary on a single computer is impractical.)

當然,工具確實很有協助,於是做了如下改進:

  • 新的分布式構建系統

  • 不再需要Makefile(但仍然使用BUILD檔案)

  • 多緩衝

  • 多複雜度(大程式本身所具有的)

即使在Google的分布式構建系統的的協助下,大型構建工程依然會花費不少時間(以其中一個二進位檔案為例,在2007年花了45分鐘,現在是27分鐘)。生活品質還是太低。

走進Go語言

我們都希望擁有更高品質的生活,所以必須解決這些問題,所以就有了最初的想法:

  • 必須是可擴充的

  • 適合大型程式、大型團隊以及擁有大量依賴的應用

  • 必須易於接近,例如接近C語言那樣。

  • 現代化

  • 適合多核機器

  • 適合網路機器

  • 適合Web開發

Go語言的設計是以軟體工程為目標,所以它有這些優點:

  • 清晰的依賴

  • 清晰的文法

  • 清晰的語意學

  • 簡單的模型(記憶體回收和並發性)

  • 便捷的工具(go tool、gofmt、godoc、gofix等)

還有那些問題?

Go語言目前所面臨的最大問題在於,還沒有足夠的經驗來證明Go是否真的是一個成功的產品,缺少大型應用實踐。但是在Google內部,如golang.org、youtube.com、dl.google.com都已經開始使用Go語言開發,除此之外還有一些其它小應用(有的是在GAE上)也選擇使用Go;而在Google之外,BBC Worldwide、Canonical、Heroku、Nokia、SoundCloud也都在嘗試Go。

總而言之,Go是由軟體工程驅動的程式設計語言,但富有成效並且有趣,這樣的設計非常高產。

Rob Pike演講的Slide可以在這裡看到。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.