我们真的需要Go语言吗?

葉鱼


看你怎么看。

如果是实用角度我觉得意义不大。至少我看了一遍语法。本质就是把很多想法加入到语法层。channel就是mq,然后slice就是减少数组的复制,goroutine其实netty也是类似的事情,好像nodjs也是差不多的理念。唯一觉得没有加入reactor。但是go的理念就是小,加入不见得有多大的意义。

你要说实验性质的话,我觉得还是有意义的。因为以后服务器必然是微服务的时代。这类都在语法层面的东西,一来性能强。二来不用引用一堆库。其实还是不错的尝试。

做技术吗,好奇心很重要。不要太功利。就像是我学GO的主要原因,还是为了在aws里面的lambda来用。


大象乱弹


对于大多数企业而言,他们早期的Web应用程序在构建时并未考虑到可伸缩性和易用性。随着业务的增长,这些应用程序越来越难以处理更频繁的请求和更重的负载,例如写Java的朋友们会觉得代码量太大太难写,而像写Python这种动态语言到业务多了之后会发现动态类型是一种灾难。

所以Google工程师在2007年开发了一种名为Golang(简称Go)的语言来解决这些问题。它易于部署,强大的并发性和简单的语法使Go语言成为编译快速、可扩展的应用程序并与您的业务一起协同进步的一门编程语言。

我认为是这样子的,随着时代发展,我们是需要一门运行速度又快、代码又稳健、又容易编写的编程语言,虽然Go不是最符合的,但至少目前发展潜力还不错。有用过就知道Go实际上现在已经属于挺成熟的一门语言,至少拥有以下优点:

编译语言

Go是一种编译语言。编译语言以其执行速度而闻名,因为它们被直接转换为机器级代码,可以直接由计算机读取,而不是每次运行应用程序时都被解释,如JavaScript。因此,当您完成源代码的编写时,它会通过编译器运行,该编译器会将源代码转换为可执行文件,该文件可以分发到另一台计算机上运行该程序。

编译器

除了作为一种编译语言的快速之外,Go编译器还具有其他优势,例如能够检查错误,更易于部署以及能够优化代码以提高效率。

错误检查

Go编译器的错误检查能够检测未使用的变量,缺少的包或运行和错误输入或无效操作所必需的导入。

编译器会在程序的生成过程中发现这些错误。因此Go甚至可以在运行程序之前让您了解什么有效,什么无效和错误的,从而节省了开发过程中的时间,而无需搜索错误。

垃圾收集

垃圾回收或自动内存管理是Go语言的一项关键功能。Go擅长对内存分配进行大量控制,并且在最新版本的垃圾收集器中大大降低了延迟,平均延迟低于1毫秒。Go的垃圾收集器通过与程序并发运行并使用三色标记和清除算法来实现此目的。

可扩展性

由于Go是由Google构建的,因此在设计时考虑了可伸缩性。随着应用程序的增长,它们需要同时处理许多较小的子任务,在应用程序中同时运行任务称为并发。Go具有许多旨在处理并发性的内置功能,尤其是goroutine和通道。

Goroutines是能够与其他函数同时运行的函数。通道允许不同的goroutine相互通信,以确定如何最好地完成任务。

简单

这是最明显的优点!Go很简单易懂,可以使用很小的语言规范文档,Go努力做到易于阅读和编写。Go官方网站还包括一个教程,可通过在浏览器中键入和练习代码来开始使用该语言。


大魔王Hacker


go 很有可能没机会像c++一样在各个领域被用的那么广泛。其快速开发的理念,简易的部署(几乎没有外部依赖)极大的解放了为解决如同C++一样的痛苦过程。go 诞生之初的首要目标之一也是解放c++项目的复杂构建过程,因为根据绝大多数经验,c++项目很多时间浪费在了解决构建(和相关)问题上。因此go以脚本面孔,原生的姿态进入服务器(企业)市场,得到了极大的欢迎,而Google似乎也打算将go打造成更适合为其GCP开发应用。其生来开放的姿态,的确赢得了不少粉丝。

纵观语言本身的适用范围以及诸多历史原因,go在其他诸多领域并没有做得更好,也根本没有太大的可能性与c/c++进行更深入比较。尤其是在移动开发方面,谷歌似乎从一开始就有意要避免将go大规模使用于移动开发。到目前为止,go的移动开发始终是实验性的(社区有过不少自发的尝试,包括游戏开发)。但仔细研究会发现,go在开发移动环境甚至是IoT等应用没有太多优势。很多人喜欢用它,更多的是因为他极大地减轻了开发的外部复杂度。开发者可以更多地专注于自身程序的设计,并得益于其快速构建应用的产出效率。因此可谓最佳企业端开发语言!

总结一句,go与其他语言(尤其是c/c++)没有太多可比性,他们诞生于不同的市场定位,为解决不同的问题而设计。有没有必要使用,完全取决于项目需要。


勿与君子斗名


其实我都“羞于”问自己这个问题:我们需要xx技术吗?我们需要xx语言吗?

就好像我们已经站在了巨人的肩膀上,可以在那里吆五喝六了。其实我们自己做了什么呢?我们真的没做什么,我们只是一群功利主义的菜鸟而已。

国外有句话我非常的不认可,这句话一直在坊间盛传,那就是:不要重复发明轮子。这句话毒害了多少中国的工程师、程序员?每当我们遇见某种需求,我们首先会考虑——这个东西从技术上是A+B+C+D。然后再近一步,A,B,C,D都有网上的开源方案。

然而事实上,基于开源方案我们做出来的是(A-)+(B-)+(C-)+(D-)。也就是说,很多东西都变味了,我们有美好的理想(需求),但是我们不得不去将就技术。

我们中国人最擅长的就是一个字——改。这是我们化腐朽为神奇的第一源动力。我们可以把A-改成A+,A*,A#...但是对不起,我们永远也无法把它变成A,这其中也许就是缺少了那么一点东西,它由两个字来表示,就是:本质。或者说:真理。

这就是为什么国外编程语言百花齐放,有那么多的人热衷于重复造轮子,虽然造轮子用了那么多的“重复劳动”,但这件事并不重要。重要的是,他们在不断接近轮子背后的那个——本质或真理。

所以我也在时时刻刻以此来鞭策一下自己——稍微的发明一点点东西吧,即便是那东西在牛人看来,真的像屎一样,但是这也算是我们这帮不入流的菜逼程序员为了尽人事而付出的一丁点儿的努力。

仅此而已。


信息扭曲力场


二十年目睹之技术圈怪现象之一:有那么一群人在那么一段时间内喜欢把某个技术吹上天。


程序猿创业笔记


golang解决了我在用cpp时候的多个痛点,所以我用go。

第一cpp的库,和跨平台是比较恶心的。

第二,线程不能随便开销,要用线程池。而协程就自由多了


小菜狗多多


语法简单,性能高,并发高,部署简单。生态再丰富些,真的不错,拿web开发来说,做java,php等开发者,很轻松就可以切换到go。


分享到:


相關文章: