当前位置:首页 > 知识 >

Java转型Go区块链工程师:我的经验分享

前言

本人在加入比原链之前一直从事Java开发。当我第一次了解Go语言时,还有些犹豫,担心自己无法通过面试。但实际上,掌握一门语言并不是决定入职的最重要因素。我成功地加入了比原链,并在短短半个月内迅速掌握了Go语言,并能够进行核心项目开发。

Java语言在大型成熟项目上具有优势,但在区块链开发中存在许多不足。比如,在协程处理方面,Java语言并不够灵活等等。选择使用Go语言的主要原因在于它在区块链领域的流行程度。

区块链的流行语言

在区块链公链的开发领域,有许多流行的编程语言,如C++、Go、Python和最近兴起的Rust等等。我们对比较著名的项目采用的编程语言进行了统计,结果如下图所示:

老一代公链,如比特币和莱特币,通常使用程度较高的C/C++(当时Go语言还未普及)。新一代公链,如以太坊和超级账本,则开始更多地采用Go语言。当然,我们看到Rust的发展势头也很猛,近两年来,很多公链,如波卡和Grin,也开始采用Rust语言进行开发。

Go语言的优势

1. 部署简单

Go语言编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖。这让部署变得异常方便,目标机器上只需要一个基础的系统和必要的管理、监控工具,就无需考虑应用的各种包、库的依赖关系。Go语言可以直接编译成机器码,不依赖其他库。只需要满足一定的glibc版本要求即可进行部署。

2. 性能优秀

尽管Go语言的性能不如C语言和Java,但通常比原生Python应用性能要高一个数量级,因此适用于编写一些瓶颈业务。此外,Go语言的内存占用也非常省。

3. 并发性&通道

Goroutine和channel不仅让编写高并发的服务端软件变得相当容易,而且很多情况下不需要考虑锁机制及其带来的各种问题。单个Go应用也能有效地利用多个CPU核,从而实现并行执行的性能优化。

4. 良好的语言设计

Go语言的设计十分简单,易于学习。尽管从学术上说,Go语言并不支持许多高级语言特性,但从工程的角度来看,Go语言的设计非常优秀。规范足够简单灵活。正是由于Go语言的简单性,任何有经验的C/C++、Java、Python、Scala等开发者都可以在一个月内构建一个高效的Go团队。

5. 标准库&工具

目前,Go语言已经内置了大量的库,尤其是网络库非常强大。更重要的是,Go语言具有完整的工具链,这大大提高了团队协作的一致性。例如,gofmt可以自动排版Go代码,很大程度上可以避免因不同人编写的代码排版不一致引起的问题。在编辑器配置中设置gofmt运行时,一旦编写的代码有格式不规范的地方,编辑器将自动对其进行排版处理。另外,gofix和govet等工具对于团队协作也非常有用。

6. 团队实力

Go语言得到了谷歌的支持,它在各种领域都得到了检验,并且其创始人还是C语言之父。这预示着Go语言有着很好的发展前景和创新潜力。

7. 成功项目案例

随着云时代的到来,Go语言在各个领域都得到了广泛的应用。尤其是Docker

猜你喜欢

微信二维码

微信