安德森·奎罗斯(Anderson Queiroz)访谈:Golang是21世纪的完美语言

介绍

我们很高兴对Blacklane的后端主管Anderson Queiroz进行深入采访。 Evrone.com上的开发人员关系部的Grigory Petrov在柏林的GoDays会议上与Queiroz先生进行了交谈,该会议挤满了动手研讨会和有关Go的开发人员讨论。

安德森·奎罗斯(Anderson Queiroz)在会议上发表了“编写代码生成器以使您的代码更安全”的报告,我们不容错过任何一次亲身听取他关于Golang与其他语言相比的优势和劣势的机会。去吧,错误控制和代码生成。

面试

Grigory: Anderson,感谢您的演讲“编写代码生成器以使代码更安全”。 当然,代码生成是当今的重要事情之一。 在我们谈论它之前,您能告诉我们更多有关如何开始使用Go语言的信息吗? 您为何选择Go?

安德森:恩,在我之前回到巴西的公司中,我们的一位开发人员想到了在Go中构建新服务的想法。 他向公司介绍了Go,我们构建了一个非常好的软件,用Go取代了Java。 我对此感兴趣,开始探索Go可以做什么,并意识到它与其他语言完全不同。 使用Go,您可以看到二进制文件的各个方面,速度和内存消耗,所有这些真正有用。

然后,我开始独自学习Go。 我读过“ Effective Go”,对于已经是软件工程师但想学习一种新语言的人来说,这确实是一个很好的资源。 “有效的Go”完美地解释了Go是什么,它如何工作,如何用语言完成事情。 后来,我来到柏林,有机会在Go中开始了一份全职工作。 从那时起,我爱上了它,并始终尝试学习更多并与世界分享Go语言。

格里高利:太酷了! 在会议上,我听说开发人员经常因为二进制足迹和内存足迹而从Java转到Go语言。 但是,让我们承认,围棋并不仅仅与彩虹和独角兽有关。 它确实具有负面影响。 从您从Java到Go语言的过渡来看,与Java相比,Go有何弊端?

Anderson:在Go中,您必须开始控制很多东西。 其他大多数语言已经使用很长时间了,它们具有庞大的库和所有框架集。 在Go中,我们没有很多其他语言习惯的东西,并且没有泛型。 为每种类型实现方法都比较困难。

在Go中,重复一点也不错,因为即使您继续重复代码,您也开始了解成本。 作为编写代码的工程师,我们还有更多工作要做,但它也使人们意识到正在发生的事情。 这种权衡是好的,主要是对于新开发人员。 我很久以前就开始学习使用C进行编程,并且在巴西和格拉斯哥的大学获得了计算机科学学位。

我可以看到代码并了解隐藏的成本,但是很多刚从教程中学习的人却看不到它。 我认为更好地学习和理解东西非常重要。

格里高利:是的。 在谈到Go语言生态系统时,我经常听到它并不大。 例如,如果我们使用Java,Python或Ruby,并且有一个简单API之外的任务,则需要旋转,出现,处理某些音频,压缩或解压缩文件。 在Python,Java和Ruby中,我们有数十种不同的库相互竞争。 我们只是选择最好的库并使用它。 但是在Go语言中,如果我想旋转图像或调整图像大小或在图像上加水印,我将只有一个库,这将是ImageMagic的粗略包装。 那样令我伤心。 从您的角度来看,您对Go语言生态系统有何看法? 它足以完成您的工作,如果找不到手头的任务库该怎么办?

安德森:哦,那确实是真的。 Go是一种新语言。 社区中有很大一部分习惯了“云开发”的想法。 他们正在编写Web服务器或云基础设施工具,每个人都知道Docker和Kubernetes。 我坚信,随着Go变得越来越可用,将会出现许多库。 几周前,我们不得不计算两个点之间的距离,我看到我的同事不得不手动实现该功能。

但这就是重点。 您可以在Internet上快速找到实现的定义。 您需要花几分钟的时间,但是您将获得更多的知识,这很有趣。 您选择了最好的库,您应该重新检查几次以检查代码中要带的内容? 小心导入的内容非常重要。

您应该找到软件包的快速摘要,阅读什么软件包很重要,它做什么,检查它是否被许可。 我认为三思而后行真的很好-我们需要这个图书馆吗? 我们知道这些库在做什么吗? 只需检查依赖性。 我认为这是使用该语言的一部分。 即使Go已整合到市场中,它仍然是新的。 它只有十年的历史,没有我们需要的一切。

如果您发现该语言中缺少的内容,我强烈建议您为开源做贡献! 它将会上线,在Github上获得一些星星,有人会注意到它,并且它可能会变得非常重要。

Grigory:的确,在2020年成为一名软件开发人员真是太神奇了! 让我们谈谈语言本身。 几年后,我们将拥有Golang 2.0。 到目前为止,我们已经成功解决了Gopath问题。 但是,下一个问题(错误控制)尚未解决。 在Java世界中,如果要处理一些错误,则只对代码使用Happy Path,如果希望发生一些错误,则放置一些try-catch块,并且大多数错误控制都在后台进行。 如果发生故障,这是一个例外。 不幸的是,在Golang中,情况有所不同。 您是否认为Go的错误控制过多?

安德森:嗯,当然,当我开始使用Go时,我认为那太多了。 我记得自己曾尝试抽象一些东西,提取一些小的错误处理方法。 使用Go构建的想法没有直接的解决方法。 但是它的右边是什么都不会在您手中爆炸。 因为在Java程序中通常很清楚什么时候可以中断。 当您使用Cotlin,Python或Java语言等语言进行编码时,一切都会爆炸。

但是,在Go中不能。 如果事情失败了,那就太不正常了。 我使用静态分析来分析代码,然后使用循环复杂性来分析代码的复杂程度,我尝试带来一些有关代码的正式的,未经审核的信息。 在Go中,您有太多的错误处理,使得代码本身变得更大。 我认为Go肯定会有所改进,但不应失去安全性以及显式错误处理所带来的安全性。 我认为这很好。

Grigory:让我们谈谈我们Gophers希望在我们的语言生态系统工具中改进的功能。 未来五年内,Go编程语言中最好的改进之处是什么?

安德森:我认为错误处理很重要,您希望减少重复的代码,但要确保安全。 Golang应该有更多的文档记录,但这是时间问题。 有时我会为如何替换模块而苦恼,以便能够使用我们正在开发的库来测试一个程序。 我认为这些事情将会有所改善,并且我朝着正确的方向发展。

我不会谈论泛型,因为在我完成的大多数工作中,您实际上并不需要泛型。 在Go中,我可能只需做一些类型检查即可。 我可以说,我对Go中的功能感到非常满意,因为我目前的需求很好。

格里高利:是的,听起来不错。 并且,让我们回到您的话题-代码生成。 在俄罗斯的Go大会上,我听说我们的开发人员喜欢用Python或Ruby编写高级代码,并从这些高级语言生成Go代码。 对我来说,这听起来很奇怪。 您如何看待Go中的代码生成,它的典型任务是什么?

安德森:我认为,代码生成确实可以很好地应用于做在现实生活中无法做到的重复性工作。 我不会使用其他语言并从中生成Go代码。 编写JavaScript的最佳语言是JavaScript,对吗? Go也是如此。

您应该谨慎使用代码,因为您可能会错过语言的全部功能。 我认为,当您开始时,可​​能可以解决您的问题,但是我会迁移并编写适当的代码。 如果您只是用一种语言编写整个生产代码并将其编译成Go语言,那么它将变得更加困难。 因此,我认为这不是最佳选择。

格里高利:是的,是的。 您能说出您最喜欢的Golang一件事吗?

安德森:这是一种简单的语言。 例如,如果您更换工作并必须用Java编写项目,那将是相同的Java,但是您会感觉必须重新学习所有内容,例如,因为使用了不同的框架。 在Go中,我对整个语言有很好的理解。 事情通常不会令我惊讶。 我认为这是每个人都喜欢Go的一件事。

格里高利:当然。 我们软件开发人员喜欢命名事物,而我们喜欢命名语言。 Java是企业语言,而Python是通用胶水,并且是处理任何任务的第二好的语言。 Ruby是高效的编程语言,Javascript是异步Web语言。 如果您想命名Go编程语言,您怎么用一句话来称呼它?

安德森(Anderson):我会说Go是21世纪为21世纪而建立的一种语言。 确实,这是我看到的第一门语言,它对完成许多有用的事情确实非常容易并且很有帮助。 那就是Go对我而言的东西,它是21世纪的完美语言。

格里高利:听起来不错。 感谢您的时间!

From: https://hackernoon.com/interview-with-anderson-queiroz-golang-is-the-perfect-language-for-the-21st-century-xmc433jo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值