Go语言的设计初衷
2007 年,受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 纠集 Robert Griesemer 和 Ken Thompson 两位牛人,决定创造一种新语言来取代 C++。
根据 Google 当时内部的一些实际情况,比如大部分工程师使用的都是C语言,所以新设计的语言最好跟C语言类似,而且要简单易学。另外,因为已经有二十年左右的时间没有出现新的编程语言了,所以新设计的语言一定要足够现代化(例如内置 GC),因此才出现了现在的Go语言。
在Go语言问世后,很多人将它称为 21 世纪的C语言,因为Go语言不仅拥有C语言的简洁和性能,还拥有媲美解释型语言的开发效率以及近乎于完美的编译速度,同时还很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性。
Go语言的优势
Go语言借鉴了很多编程语言的优点,并运用到了自身当中。下面我们来看看与其他主流语言相比,Go语言具有的优势。
1) 学习成本低,因为Go语言语法相对简单,同时包含了许多类似C语言的语法,所以Go语言学起来非常容易,开发人员可以很轻松的开发出高性能的应用。在国内大家都追求效率,讲究一个“快”字,这也是Go语言在国内比较流行的原因之一。
2) Go语言的编译速度快,而且运行效率高。相对于 Java 和 C++ 而言,Go语言在编译速度方面占据着绝对的优势,同时Go语言还拥有着接近C语言的运行效率和媲美解释型语言的开发速度。
3) Go语言的标准库非常丰富,主要包括互联网应用、系统编程和网络编程等方面。Go语言的标准库中包含了绝大多数的常用库,虽然有些库并不是很好用,但随着Go语言的不断发展,相信这些问题最终都会被解决掉。
4) Go语言从语言层面实现了并发编程,并且使用起来比绝大多数编程语言要简洁,在当今这个多核心的时代,并发编程的意义不言而喻,这也是Go语言最大的亮点之一。
Go语言的劣势
下面,我们来客观地看一下目前Go语言需要加强或改进的地方。
1) Go语言中的包管理并不完美。为 Go 添加某个依赖时仅仅只是将依赖项的源代码库拷贝到 GOPATH 中,但是使用什么版本呢?如果不同项目需要不同版本的依赖项怎么办呢?没办法。Go语言中版本的概念基本上等于不存在。相比之下 Python、NodeJS(npm)和 Ruby 都有相对维护良好的包管理系统。
2) Go语言不支持泛型,对于大多数静态类型语言(如 C++、Java 等)来说都是支持泛型的,这无疑会使得从 Java 或 C++ 语言转向Go语言的开发者感到不爽。
3) Go语言第三方库的数量还远远不及其他几门主流语言(比如 Java、Python、Ruby 等)。不过与Go语言的年纪相比,用它实现的第三方库已经相当多了,并且它们的数量在持续地飞速增长中。
4) 另外,Go语言网络资源比较匮乏,虽然网上也有不少关于Go语言的帖子,但是有价值的并不多,针对某个问题搜索到的答案往往都是些重复的内容,这点很让人上火。
总之,没有十全十美的编程语言,虽然Go语言还有一些瑕疵,但从整体来看,它已经是一门非常优秀的通用编程语言了。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23372.html