自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google Go有啥用?以及何謂好的系統(tǒng)編程語言

原創(chuàng)
開發(fā) 開發(fā)工具
在過去20年中,系統(tǒng)編程一直是C和C++程序員的地盤。Google上個月推出了Go語言,但是似乎沒人知道這個語言適合哪些開發(fā)者!有人提出Go應該是一個不錯的系統(tǒng)編程語言,但是本文作者通過Go與C語言的一系列比較證明了這是不可能的。最后作者還編了首小詩,認為Go一無是處。

【51CTO精選譯文】Google在2009年11月推出了Go語言。關于這個Go,我經常聽到的一個問題是“Go語言適合哪些開發(fā)者?”我一直未能找到一個合適的答案。甚至連Go語言自己的FAQ頁面也沒有對此問題給出一個確切的答案。

我認為,多數(shù)非初學者程序員不會把Go語言納入自己的應用程序編程語言列表之中。當我指出它永遠無法取代Java后,有人說我沒有看到正確的統(tǒng)計數(shù)據。他們認為Go非常適合系統(tǒng)程序員。眾所周知,在過去20年中,系統(tǒng)編程一直是C和C++程序員的地盤。通常來說,如果你進行真正的系統(tǒng)編程,必然屬于這兩個陣營之一,當然也有可能使用一點匯編語言。

好的系統(tǒng)編程語言

下面我將具體解釋這個問題。首先,我們看一下一門好的系統(tǒng)編程語言的標準是什么。以下幾點是我們希望它所具備的:

1、能夠運行在資源受限的環(huán)境中;

2、效率高且運行時(runtime)開銷小;

3、具有一個非常小的運行時庫,或根本沒有;

4、允許編程人員直接且“原始”的控制內存訪問和控制流;

5、讓編程人員能夠直接以匯編語言編寫部分程序。

那么Google Go語言是否滿足上述要求?下面讓我們逐一分析:

1、平均來說,Go語言的性能數(shù)據大約比C++差6倍左右。Go性能測試的最佳結果與C的最差結果相當。在一個應用程序環(huán)境中測試性能,Go和Java已經占了一定便宜,因為在這種環(huán)境中可能存在許多其它非內存和非CPU瓶頸,真實系統(tǒng)世界對原始執(zhí)行時間和資源占用的要求要嚴格的多。(Go得10分)

Go的性能 
性能數(shù)據,左側為C系列語言,右側為Go

2、Go所需的內存和執(zhí)行占用空間要比C和C++高得多,并非兩者理想的接班人。一個有趣的實驗:在Go和C++中編譯Hello World示例,Go的內存開銷為38K,而C++則僅為6K,比前者小84%。(Go得10分)

Go語言的內存和執(zhí)行占用空間
時間、內存和代碼量,Go所用與C系列所用之比

3、如果你考慮垃圾收集器,Go運行時的空間占用肯定要比C/C++大得多。更糟糕的是:Go的垃圾收集器目前還不太安全。(公正的講,這是目前Go團隊首要解決的事情)(Go得15分,此題20分)

4、在Go中可以實現(xiàn)原始且直接控制內存訪問。如果你愿意,你可以使用這一點來研究其運行時架構。(Go得20分,此題20分)

5、Go有一個類似Java的本地接口(JNI),不過是靜態(tài)連接的。(Go得20分,此題20分)

以上問題每題按20分計算,那么在滿分為100分的測評中,Go的得分為75分。如果你是一個C/C++程序員,以上測評的得分肯定是滿分,那么你轉向Go的動機何在?加上系統(tǒng)編程人員通常不會迅速采用新推出的領先技術。C++也是經過了數(shù)年時間才被嵌入式C語言用戶所接受??紤]到進行高質量系統(tǒng)編程所需要的可靠性程度,我對該領域任何新技術被接受的可能性持懷疑態(tài)度。

語法

#T#最后,我們再次看一下Go語法方面的爭議,我認為這是Go所有問題的核心所在。首先我要聲明,就我個人而言,不存在對Go語法的任何問題。作為一個軟件開發(fā)迷,我已經學習了大量語言,如果報酬可觀的話,再多學一門語言不是什么大問題。不過根據我作為一個語言講師的經驗和帕金森蒜皮定律(Parkinson’s Law of Triviality)來看,語法學習對多數(shù)人來說是一個攔路虎。(51CTO編者注:平心而論,Go語言的語法還是很出色的,而且有著陣容強大的設計者。作者此處強調帕金森定律雖然沒錯,但未免一廂情愿,有失偏頗。)

簡單來說,帕金森定律認為,我們在討論一件事情上所花費的時間和精力,往往和這件事的重要程度成反比,也就說,越不重要的事情,我們都能理解,就會花越多的時間去討論;而越重要的事情,因為我們不能理解,就會花更少的時間去討論。該定律對編程語言和語法來說尤其適用。上世紀90年代中期,向C++用戶教授Java時曾遭遇阻力。從C++轉向Go所面臨的阻力要比從C++轉向Java大的多,而這種阻力對Go的采用率非常關鍵。

因此,我不認為Go會取代C/C++成為新的系統(tǒng)編程語言。

原文:Google Go: Good For What?  作者:Dave

結語——Dave編寫的一首小詩

“Go! Huh!  Yeah! (Go!哈!耶?。?/p>

What is it good for? (它有什么好?)

Absolutely nothing. (它一無是處。)

Say it again.” (再說一遍。)

51CTO編者后記:Go語言自亮相以來并沒有展示一個明確的方向,Google員工將Go語言稱為一個“試驗性語言”,稱其試圖融合Python等動態(tài)語言的開發(fā)速度和C或C++等編譯語言的性能和安全。一位Go語言的支持者概括而言Go語言如下:簡單、快速、安全、并發(fā)、快樂編程、開源;但Go語言缺乏方向以及其“集大成者”的嘗試很容易會導致其學貓不成學狗也不成,淪為四不像。盡管如此,編者仍然覺得Go語言有相當大的潛力:很多開發(fā)者對它感興趣——不僅它的最初設計者陣容強大,而且在參與修改源代碼的人群中也不乏大牛級人物。這很有可能幫助Go語言找到適合自己的方向,開拓系統(tǒng)編程的新方向。

責任編輯:yangsai 來源: 51CTO.com
相關推薦

2009-12-10 10:33:09

Go語言

2012-07-06 13:16:37

Google Go

2012-03-13 10:40:58

Google Go

2022-04-26 09:23:07

Hare編程語言C

2019-05-15 11:38:22

GoogleGo編程語言

2011-01-05 10:58:05

Google Go

2010-01-11 09:38:28

編程語言排行榜Google Go

2014-12-08 09:47:48

Go

2023-02-22 08:36:47

顯卡VBIOS存儲

2012-11-08 09:36:10

Google Go

2017-01-09 11:28:31

編程語言排行榜

2020-09-26 21:43:59

Linux系統(tǒng)編程條件變量

2020-10-05 22:01:02

Linux系統(tǒng)編程線程屬性

2020-10-10 07:18:14

Linux系統(tǒng)編程管道

2020-10-18 07:13:44

Linux系統(tǒng)編程信號捕捉

2014-07-16 09:41:12

Swift傳統(tǒng)編程

2019-02-11 08:32:22

編程語言Go

2021-05-16 18:02:52

系統(tǒng)編程JavaScript

2020-09-25 07:34:40

Linux系統(tǒng)編程信號量

2020-10-05 22:05:10

Linux系統(tǒng)編程時序競態(tài)
點贊
收藏

51CTO技術棧公眾號