程序开发语言 Go 的七宗罪_程序语言谁发明的
老妖觉得目前 Go 语言并不适合在规模化项目中使用。为避免大家踩坑,总结和整理了一些 Golang 目前存在的问题,希望能有所帮助。
一、没有框架
这凸显的就是生态的问题。比如,我想搭建一套微服务框架,使用 Spring 可以毫不费力气地轻松做到;使用 Go,就得从一无所有处全部自己编写,等你规范完框架。Java 开发的程序都已经上线运行了,
在这个时间就是金钱的时代,放弃 Go 就是一个显而易见的选择了。
二、多环境部署
这在很多人看来不是什么问题。但不要忘了当年 Java 是怎么火起来的,正是靠着 Java 虚拟机实现了一次编译多环境部署。Go呢?直接就是编译成二进制文件,也就是每个不同的运行环境都要重新编译。
有人说,这不是个事,我们用 Docker 就一马平川了。我对此嗤之以鼻,我就不信从开发环境,测试环境再到生产环境就真能做到一马平川。
三、成本高
Go 还是比较新的语言,会得人很少。而且也都是大厂在招聘 Go 开发人员,我觉得 Go 语言现在的火就是大厂单方面为了自己的利益而撺掇出来的。
从招聘角度来看,一个 Go 开发人员的待遇成本比一个 Java 开发人员至少要高三分之一,且 Go 的开发能力未必就高于 Java 人员的开发能力。
从企业角度看,能使用较低的成本就达到目的,何乐而不为呢?毕竟,新的技术只有纯技术人员在追求,企业才不在乎技术是不是新的呢,只要花最少的钱赚到更多的利润就行了。
四、没有异常处理
这是一件非常扯的事情,Go 没有异常处理,是通过多个返回值来实现的。我对此不想再说什么。懂得会懂,不懂得也就不懂了。
五、没有三元运算符(?:)缺少泛型
这两个应该是一个现代化开发语言的基础,但 Go 都不支持。是 Go 觉得自己引领了世界的潮流,不需要这些东西了吗?
六、包管理
Go 语言的软件包管理绝对不是完美的。默认情况下,它没有办法指定特定版本的依赖库,也无法创建可复写的 builds。相比之下 Python、Node 和 Ruby 都有更好的软件包管理系统。
七、自动生成代码很麻烦
使用 Java,尤其是在使用 Spring 框架时,大家都知道,有很多的非业务代码可以通过工具来生成,不要小看这些生成工具,这给开发效率的加成不是一星半点的。
反过来看 Go,由于各种规则的限制,尤其各种语法糖的使用,使使用生成工具生成出来的代码极难使用,不如自己从头重新写呢。
总之,老妖极不赞成在规模化的项目中轻易地就采用 Go 开发。当然如果仅是解决某一方面的问题,那么拿来用用也许不会有什么影响。