时间:2023-06-18|浏览:231
如今,Go语言常用于构建去中心化系统,许多公司也使用它甚至在网站开发中也广泛应用。
在我们决定构建Karachain时,我们考虑了许多语言,包括C、C++、Java和NodeJs,并尝试使用算法作为考虑标准。最终,我们采用了Go语言来实现我们的目标,并且效果不错。
构建一个区块链就像建立一个操作系统一样复杂!
在构建一个复杂的东西,如区块链平台时,我们需要专注于解决核心问题。在经过大约4周的开发和探索之后,我们才意识到这门奇妙的语言如何优雅地解决了我们的问题。
Go语言非常简单易学。每次当你回到代码时,它没有太多复杂的错误会让你浪费时间。由于其广泛的语法,开发者的学习曲线很平缓,这使得它非常吸引人,并且减少了出现Bug的可能性。因此,整个开发过程变得简单快速。
一般来说,代码量越多,项目的维护越困难。由于一个区块链系统需要的代码量可能达到几千行,因此我们需要一种语言,使维护变得容易。
我们开始时有20位出色的工程师,大多来自JavaScript、Java和Python等领域,也有系统工程师,熟练掌握C。我们需要让所有人都使用同一种语言协同工作。尽管说服他们学习Go语言非常容易,但让他们在一个月内成为Go语言工程师也相当简单。我不确定用其他语言是否也能取得相同的进展。
与Python不同,Go是一种编译型语言,这大大减少了在运行中出现Bug的可能性。这类似于C语言,代码在运行之前会先被编译并在编译时得到处理,然后才能运行。相比C更高一些,比JavaScript和Python更生产力。
区块链需要高效性,因为它使用加密算法,处理和传输大量数据。这一点在那些用Go语言编写的工具和软件中非常明显。Docker是一种微服务容器,也是用Go语言编写的。
我们已经看到了我们能够使用Go语言构建的微服务如何轻松地处理数百万数量的请求数量。
并发是让几个程序或一些程序的部分同时运行,以提高计算机吞吐量的方法。通常,在Java或其他语言中,线程用于实现并发。Go使用的是" Goroutines "方法。Goroutines表示一组函数,它们可以与其他函数同时执行。一个Goroutine大概占用4kb的内存,而线程需要大约1024kb的内存。因此,Goroutines占用的内存小250倍,这使得它可以同时执行不断增加的其他Goroutines。
在Java中,对象在工作单元之间共享,某单元想要访问该数据必须先获得对象锁。在Go中,工作单元之间共享一种称为信道(channel)的内容,它基本上是一种FIFOpipe。工作单元可以向信道发起数据读/写。
Go语言遵循着它的准则——“不要通过内存共享进行通讯,应当通过通讯来共享内存”。
并行操作在区块链中具有特殊意义。同时运行大量函数——这一巧妙、天然的特性使得Go程序灵活地运行于分布式系统,这正是区块链的主要需求。这一特性已经被应用于Docker、MongoDB、Netflix、Uber等高并发产品的开发。
许多基于稳定区块链的DApps和工具都是用Go语言编写的。你可以很容易地找到与所需功能相对应的库。
Go是一种编译型语言,所以直接由操作系统执行。这使我们可以更自由地实现像以太坊沙盒(EVM(EthereumVirtualMachine))这样的技术。如果是Java,由于它的运行载体JVM是一种虚拟机,再在其上实现沙盒就是一层更高的抽象,这是没有必要的,会浪费计算机资源。
当然,Go的使用体验类似于脚本语言,学习成本很低,因此非常适合于小型项目。相比Java,它能够更快地响应查询,适用于构建高请求量的服务。
以下是一些出色的Go代码片段:
1、将指针返回给局部变量:
2、在函数内部定义其他函数,可以将函数作为返回值,其中局部变量将被视为闭包内变量:
3、基于对象编程:
总之,Go语言简单易学,简洁易懂,“实用主义”是它的标签,高性能是它的特点。它被设计用于团队工作,效果十分出色。
本文内容来自网络,如果侵犯了您的权益,请联系我们删除。
用戶喜愛的交易所
已有账号登陆后会弹出下载