[Go] 閱讀心得 Why should you learn Go?
Why should you learn Go? 原文網址 這邊文章介紹為什麼要使用Go語言,閱讀後,個人摘錄一些部分並記錄自己的心得。 PART 1 作者首先討論摩爾定律這件事情,並且認為這個定律是失敗的,卡在物理上的限制。其實我認為這個定律還沒完全失敗,如果時間拉長用5年、10年來看的話,哪天突破一個想像的限制,硬體所能提供的運算速度又會飄上去了。 We cannot add more and more cache to the processor to increase performance as cache have physical limits: the bigger the cache, the slower it gets. 這段話有如大學時上課唸到的教科書所述,加大cache並非萬能,越肥的體積占在CPU裡面,帶來的副作用跟幫助效用成反比。 Adding more core to the processor has its cost too. 這也沒錯,無限加core有極限,不是頂天的解法。推論的結果是不能依賴硬體,要靠軟體的協助。 然後作者說非常upset,現代的軟體來講,有效運用硬體資源的程度遠遠不夠,換句話落後很多硬體方面的成長。 這句話我在學生時代就有聽過,但不能夠深刻體會,直到我稍微了解了gorutine是什麼鬼東西。GOD ! 真的是軟體不夠力,還可以靠軟體再進化一個程度。 碰巧下個段落作者馬上就提到gorutine了,gorutine就是golang拿來突破物理限制的銀彈。 PART 2 作者說到Java、Python 是90年代的背景而生的,那時候只有單執行緒,雖然後來都可以執行多個執行緒,但併發、執行緒鎖、競爭、死結,新的執行緒生出需要很久,需要產生1MB以上的heap,更困難的是執行緒之間的溝通,這些不得不面對的問題拖累我們熟悉的這些程式語言。 這部分的背景之前我比較不清楚,但就我所知的Java,可不能小看,Java在管理這些東西運行的非常穩定,他有一套獨特的處理機制。讓我想到有如Apple當初推出iphone5時RAM只有1GB的大小,但人家速度就是吊打16GB RAM的HTC,HTC 掰~ 但單論『併發』的問題,JAVA也許真的很難與擁有...