我们真的需要Go语言吗
其实我都“羞于”问自己这个问题:我们需要xx技术吗?我们需要xx语言吗?
就好像我们已经站在了巨人的肩膀上,可以在那里吆五喝六了。其实我们自己做了什么呢?我们真的没做什么,我们只是一群功利主义的菜鸟而已。
国外有句话我非常的不认可,这句话一直在坊间盛传,那就是:不要重复发明轮子。这句话毒害了多少中国的工程师、程序员?每当我们遇见某种需求,我们首先会考虑——这个东西从技术上是A+B+C+D。然后再近一步,A,B,C,D都有网上的开源方案。
然而事实上,基于开源方案我们做出来的是(A-)+(B-)+(C-)+(D-)。也就是说,很多东西都变味了,我们有美好的理想(需求),但是我们不得不去将就技术。
我们中国人最擅长的就是一个字——改。这是我们化腐朽为神奇的第一源动力。我们可以把A-改成A+,A*,A#...但是对不起,我们永远也无法把它变成A,这其中也许就是缺少了那么一点东西,它由两个字来表示,就是:本质。或者说:真理。
这就是为什么国外编程语言百花齐放,有那么多的人热衷于重复造轮子,虽然造轮子用了那么多的“重复劳动”,但这件事并不重要。重要的是,他们在不断接近轮子背后的那个——本质或真理。
所以我也在时时刻刻以此来鞭策一下自己——稍微的发明一点点东西吧,即便是那东西在牛人看来,真的像屎一样,但是这也算是我们这帮不入流的菜逼程序员为了尽人事而付出的一丁点儿的努力。
仅此而已。
go 很有可能没机会像c++一样在各个领域被用的那么广泛。其快速开发的理念,简易的部署(几乎没有外部依赖)极大的解放了为解决如同C++一样的痛苦过程。go 诞生之初的首要目标之一也是解放c++项目的复杂构建过程,因为根据绝大多数经验,c++项目很多时间浪费在了解决构建(和相关)问题上。因此go以脚本面孔,原生的姿态进入服务器(企业)市场,得到了极大的欢迎,而Google似乎也打算将go打造成更适合为其GCP开发应用。其生来开放的姿态,的确赢得了不少粉丝。
纵观语言本身的适用范围以及诸多历史原因,go在其他诸多领域并没有做得更好,也根本没有太大的可能性与c/c++进行更深入比较。尤其是在移动开发方面,谷歌似乎从一开始就有意要避免将go大规模使用于移动开发。到目前为止,go的移动开发始终是实验性的(社区有过不少自发的尝试,包括游戏开发)。但仔细研究会发现,go在开发移动环境甚至是IoT等应用没有太多优势。很多人喜欢用它,更多的是因为他极大地减轻了开发的外部复杂度。开发者可以更多地专注于自身程序的设计,并得益于其快速构建应用的产出效率。因此可谓最佳企业端开发语言!
总结一句,go与其他语言(尤其是c/c++)没有太多可比性,他们诞生于不同的市场定位,为解决不同的问题而设计。有没有必要使用,完全取决于项目需要。
看你怎么看。
如果是实用角度我觉得意义不大。至少我看了一遍语法。本质就是把很多想法加入到语法层。channel就是mq,然后slice就是减少数组的复制,goroutine其实netty也是类似的事情,好像nodjs也是差不多的理念。唯一觉得没有加入reactor。但是go的理念就是小,加入不见得有多大的意义。
你要说实验性质的话,我觉得还是有意义的。因为以后服务器必然是微服务的时代。这类都在语法层面的东西,一来性能强。二来不用引用一堆库。其实还是不错的尝试。
做技术吗,好奇心很重要。不要太功利。就像是我学GO的主要原因,还是为了在aws里面的lambda来用。
还没有评论,来说两句吧...