热门标签
区块链公司 区块链原理 区块链系统 区块链项目开发 区块链应用开发 以太坊区块链开发 深圳区块链开发 区块链游戏开发 区块链开发技术 区块链项目 java区块链开发 区块链开发语言 fomo3d 区块链技术开发 vpay 区块链钱包 EOS区块链开发
小编推荐
大家都在关注
最新区块链百科
随机推荐

当前位置:主页 > 新闻资讯 > 区块链百科 > 区块链为什么用go开发?

区块链为什么用go开发?

2020-02-23 02:34:40 301 文章来源:汉全科技 作者:Thinker

标签:

  很多人不清楚区块链开发为什么要用go语言,我在这里用我的实际经验来说明下这个问题。

  Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。

  我们在决定做Karachain的时候,考量(benchmark)了C,C++, Java, 甚至NodeJs,我们也试着用一些算法来作为考量标准。而现在,我表示我们正在用Go来实现此目标,并且感觉不错。

  啊,现在建造一个区块链,恰如当时建造一个操作系统!

区块链为什么用go开发?
 

  我们在建造像区块链平台这样复杂的东西时,把注意力放在了那些核心问题上。经过差不多4周的开发与探索,我们才发现这门奇妙的语言是如何优雅地解答了我们的难题。

  Go语言很简单。并且每次你中途休息(cessation)之后回到代码中时,它没有那么多诡异的错误(quirk)来浪费你的时间。再加上,它所需要的学习量很少,因为它的语法比较大众,开发者的学习曲线很平缓,这样的特性本身就很吸引开发者。这也导致(facilitate)出现Bug的几率很低。所以整个开发过程显得如此简单快速。

  一般来讲,代码量越多,项目越难维护。而一个区块链系统需要的代码可达几千行,所以我们需要一门语言,来让维护变得轻松。

  我们初期有20位出色的工程师,大多来自JavaScript, Java, 和Python,也有的是系统工程师,善使C器。

  我们自然需要同一个语言来协同工作。说服(convince)他们来学习Go非常容易,但让他们一个月速成Go语言工程师,却也是挺简单。。。我倒不确定选择其他语言是否也能有此神速。

  不似Python, Go不是一种解释型语言——它是编译型的。这大大地(drastically)减少了在运行中突然出现的Bug。这一点有点像C语言,代码先被编译,错误会在编译时出现并得到处理,然后才能运行;但是,它比C更高级,比JavaScript和Python更具生产力。

  一个区块链非常需要高效性,鉴于其使用的是加密(cryptographic)算法,鉴于它把大量数据传输(propagate)于网络,并存储于网络。

  这一点,在那些用Golang打造的工具和软件中显而易见。Docker,作为一种微服务的容器,也是用Golang打造。

  我们已经看到了我们能用Golang打造的微服务轻松驾驭百万数量的请求。

  并发(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等等等,他们的产品功能也都主要依赖于高并发。

  很多基于稳定区块链的DApps和tools都是用的Go语言。你所需要的某个功能,很轻松就能找到一个相对应的库。

  Go是编译型的,所以直接由操作系统执行。这让我们可以更自如地实现像以太坊沙盒(EVM (Ethereum Virtual Machine))一样的技术。而如果是Java,因为它本身的运行载体JVM就是一个虚拟机,要再在上面做一个沙盒,实质是更高一层的抽象,这完全没有必要,会浪费计算机资源。

  当然,Go的使用体验像是脚本语言,学习成本很低,所以非常适合小型项目。而在QPS(The Queries per second)上,比起Java好太多,所以又适合用来构建高请求量的服务。

  一些美妙的Go代码片段

  1, 这个是轻易地从一个函数返回一个指针到局部变量:

  2, 你可以在函数内部再定义另外的函数并可以用函数作为返回值,其中的局部变量会被当做闭包内变量:

  3, 基于对象编程:

  Go语言是简单而易学的,是简洁而易懂的。“实用主义”是它的标签,性能高于观感。它被设计用于团队型工作,并且,效果十分出色。

本文链接:https://www.a6shop.cn/wiki/983.html

相关案例

南方航空安联云系统开发
南方航空安联云系统开发
汉全私有链开发
私有链开发
汉全联盟链开发
联盟链开发
选择汉全    品牌保证
01
雄厚公司资质
02
强大产品优势
03
敏锐行业前瞻
04
优质售后服务
汉全科技广东省高新技术企业证书
高新技术企业

汉全科技获得广东省高新技术企业,技术驱动商业创新

汉全科技广东股权交易中心证书
广州股权交易中心

汉全科技于2016年在广州股权交易中心成功挂牌,赢得广大企业事业的信赖

广州汉全信息科技有限公司团队照片
200+强大技术研发团队

团队核心成员来自实达集团,中国软件,唯品会,枫特红外等知名大型企业

广州汉全信息科技有限公司软件研发中心
13年+互联网行业技术沉淀

13年专注新商业程序研究和开发,万千用户品质见证

广州汉全信息科技有限公司软件知识产权证书
30项+软件著作权证书

获得30+互联网创新产品自主知识产权软件著作权证书

广州汉全信息科技有限公司资质荣誉
荣誉资质

汉全科技-中国区块链专业委员会创始会员单位(理事)

独家源码出售

各系统均提供专门的独家源码出售,方便客户自行系统开发。

产品更新迅速

每周均提供不同系统的功能点更新及优化,产品更新迅速,让您时刻立足行业前沿。

产品原生开发

产品原生开发,运行更快更流畅,让客户拥有更良好的体验。

专属定制开发

汉全可根据需求,为您专属定制开发,满足您全方位的产品需求。

方便二次开发

提供系统程序及二次开发文档,大大缩短开发进程,让您的系统快速上线。

全球3000+客户共同选择

产品功能稳定,获全球3000+家商业企业客户信赖,品质有保障。

设立战略研究院

设立专门的行业战略研究院,与行业内专家时刻保持密切联系,形成汉全独特的市场敏锐前瞻。

产品领先全国

领先全国,首家推出“汉全区块链商城”、“汉全区块链溯源”、等创新产品,并取得骄人的市场业绩。

国内最早开发搭建区块链商城系统

国内最早着手区块链商城系统平台的开发搭建,经过持续优化已达到系统稳定、功能持续全面更新中。

产品更新迅速

每周均提供不同系统的功能点更新及优化,产品更新迅速,让您时刻立足行业前沿。

强大的售后团队

强大的售前售后团队。配备专门的服务人员及技术人员1v1服务确保客户碰到的问题第一时间予以解决。

完美的技术支持

产品手册、操作教程、安装帮助等服务手册一应俱全,汉全为您提供完整的技术指导和行业支持,使您快速上手,轻松应对。

迅速响应服务

电话、QQ、工单、上门...汉全的售后人员随时为您提供迅速响应服务,及时应对客户提出的一切运营、技术难题。

全方位服务

QQ、电话等聊天工具全方位解答客户各种操作、技术难题,确保客户系统安全稳定,bug及时修复。

平台搭建部署全程指导

为各平台的搭建部署提供全程指导,即使创业小白,汉全也能助您实现平台快速上线和运营。

更多其他的服务

汉全将与您协同配合,提供优质的解决方案。持续跟进用户反馈,满足您的多方位其他需求。

0元免费试用
免费试用
6网合一网合一
全渠道营销
7*12小时售后×12小时
售后支持
100+营销功能
营销功能
200+团队支持
团队支持
30万商家选择万+
商家选择
广州汉全信息科技有限公司公众号
Title