爲什麼要用golang語言進行區塊鏈編程開發?

Go語言現在常常被用來做去中心化系統(decentralised system)。其他類型的公司也都把Go用在產品的核心模塊中,並且它在網站開發中也佔據了一席之地。

我們在決定做Karachain的時候,考量(benchmark)了C,C++, Java, 甚至NodeJs,我們也試着用一些算法來作爲考量標準。而現在,我表示我們正在用Go來實現此目標,並且感覺不錯。

啊,現在建造一個區塊鏈,恰如當時建造一個操作系統!

我們在建造像區塊鏈平臺這樣複雜的東西時,把注意力放在了那些核心問題上。經過差不多4周的開發與探索,我們才發現這門奇妙的語言是如何優雅地解答了我們的難題。

1
長期項目中的易維護代碼
Go語言很簡單。並且每次你中途休息(cessation)之後回到代碼中時,它沒有那麼多詭異的錯誤(quirk)來浪費你的時間。再加上,它所需要的學習量很少,因爲它的語法比較大衆,開發者的學習曲線很平緩,這樣的特性本身就很吸引開發者。這也導致(facilitate)出現Bug的機率很低。所以整個開發過程顯得如此簡單快速。

一般來講,代碼量越多,項目越難維護。而一個區塊鏈系統需要的代碼可達幾千行,所以我們需要一門語言,來讓維護變得輕鬆。

2
輕鬆變成Go語言大師
我們初期有20位出色的工程師,大多來自JavaScript, Java, 和Python,也有的是系統工程師,善使C器。

我們自然需要同一個語言來協同工作。說服(convince)他們來學習Go非常容易,但讓他們一個月速成Go語言工程師,卻也是挺簡單。。。我倒不確定選擇其他語言是否也能有此神速。

3
速度與效率
不似Python, Go不是一種解釋型語言——它是編譯型的。這大大地(drastically)減少了在運行中突然出現的Bug。這一點有點像C語言,代碼先被編譯,錯誤會在編譯時出現並得到處理,然後才能運行;但是,它比C更高級,比JavaScript和Python更具生產力。

一個區塊鏈非常需要高效性,鑑於其使用的是加密(cryptographic)算法,鑑於它把大量數據傳輸(propagate)於網絡,並存儲於網絡。

4
爲分佈式系統而生
這一點,在那些用Golang打造的工具和軟件中顯而易見。Docker,作爲一種微服務的容器,也是用Golang打造。

我們已經看到了我們能用Golang打造的微服務輕鬆駕馭百萬數量的請求。

5
Goroutines
併發(Concurrency)是讓幾個程序或者一個程序的幾個部分同時間運行,或者說並行,以提升計算機的吞吐量(throughput)。通常,在Java或其他一些語言中,通過線程(threads)來實現併發。而Go則用的是“Goroutines”方法。Goroutines就是說一些函數,它們可以同另外的一些函數同時被執行。一個Goroutine在內存中佔用大概4kb,而一個線程需要大約1024kb的內存。所以,Goroutines同其他語言所使用的線程比起來,小了250倍,這使得它也可以同時執行不斷增加的其他Goroutines。

以下是Go語言在處理線程方面與Java的不同之處:

在Java中,對象(object)在工作單元間共享,其中某一單元爲了訪問到這個數據,必須先得到它的對象鎖。在Golang中,工作單元間共享一種被稱爲信道(channel)的東西,一個信道基本上就是一個先入先出通道(FIFO pipe)——工作單元可以向信道發起數據讀寫。

Go語言遵循着它的準則——“不要通過內存共享進行通訊,應當通過通訊來共享內存”(not to communicate by sharing memory, instead share memory by communicating)。

並行操作對於區塊鏈是有着特殊意義的。同時跑大量函數——這一巧妙而天然的特性使得Go程序靈活地運行於分佈式系統,這正是區塊鏈的主要需求。不過這一特性早已被髮掘,有Docker,MongoDB,Netflix,Uber等等等,他們的產品功能也都主要依賴於高併發。

6
區塊鏈領域的所有人都用它
很多基於穩定區塊鏈的DApps和tools都是用的Go語言。你所需要的某個功能,很輕鬆就能找到一個相對應的庫。

Go是編譯型的,所以直接由操作系統執行。這讓我們可以更自如地實現像以太坊沙盒(EVM (Ethereum Virtual Machine))一樣的技術。而如果是Java,因爲它本身的運行載體JVM就是一個虛擬機,要再在上面做一個沙盒,實質是更高一層的抽象,這完全沒有必要,會浪費計算機資源。

當然,Go的使用體驗像是腳本語言,學習成本很低,所以非常適合小型項目。而在QPS(The Queries per second)上,比起Java好太多,所以又適合用來構建高請求量的服務。

參考學習課程下載地址:golang語言基礎區塊鏈編程開發項目實戰全套視頻教程

課程包含:

  1. golang基礎之核心技術 高併發服務器開發
  2. 去中心化前端與web服務器開發
  3. 區塊鏈理論 kotlin 函數式編程
  4. Java分佈式 springboot springcloud 微服務 數據庫技術開發
  5. spring cloud和區塊鏈×××項目、以太坊和智能合約項目實戰
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章