一年后反思我的围棋经历

ñOTE: This post originally appeared on my blog


在我一年多一点的Go日常开发经验中,到目前为止学到了三件事:

  1. 即使以一种或另一种形式进行了12年以上的工作,我也可以改变我对编程工作方式的整体看法。人们出于所有错误的原因指责Java人们出于所有错误原因赞美Go

让我解释。 这篇文章并不是要说“语言A比语言B更好”,反之亦然。 这是关于问自己一个问题,即事情为什么以它们的方式运作,以及以不同的方式来做是一件坏事,或可能是一件好事。

在加入Go训练营之前,我作为Java开发人员已经工作了很多年,他对这种角色的印象总是千篇一律。 我为各个行业共同开发了数据处理系统。 但是,我编写的大部分代码只是样板:将数据从一种格式传递到另一种格式,或者在实际上应该调用函数并获得其结果的背后设计复杂的抽象。 是的,代码很难理解,但是由于这个确切的原因,我为此感到骄傲。 我创建的篮球越多,我感到越安全:

  1. 我在做我认为正确的事如果人们不懂代码,他们必须向我寻求建议,进一步提高我的自我意识。

The language is not to blame for this

现有的许多Java代码都充满官僚主义的事实与该语言本身或其平台无关。 我们的开发者社区应承担全部责任。 我可以向任何人保证,无需90%的仪式就可以编写功能完善的Java应用程序。 它们将更小且运行速度更快。 也很可能更容易理解。 但是,他们不会让您在任何受人尊敬的公司中受聘。 他们只是不会通过开发者偏见测试。 我知道。 我看到了许多优雅的解决方案,但由于不够/惯用/而拒绝了它们。

Go isn’t a silver bullet either

出于同样的原因,仅仅因为“它不是Java”而跳到Go并不会使任何人走得更远。 甚至在我开始编写Go之前,我就已经听说过许多故事,内容涉及与Java相比,它使事情变得多么简单和快捷,仪式多么少,它最终将杀死所有其他语言,等等。等等。 尽管上述所有情况都是正确的,但您必须自己发现每个事实。 如果您在目前的工作方式下绝望地使用该语言,那么您将被设定为一条粗糙的道路。

看,如果您只是想获得更快的运行速度(选择的名称语言),那么您当然可以做到。 但是,坚持您以前的经验将使您精神错乱。 我的第一个Go项目开始时是对我之前开始的Spring Boot应用程序的重写,所以我认为我将以相同的方式组织它。 为了使故事简短,我们只说这是一场灾难。 只有从零开始,它才真正开始腾飞。

Go is a language without (with less) idioms

让我们做一个简单的数学实验。 想象一下,您可以使用一种编程语言的词汇表,结合任意3个关键字来创建有效的编程表达式。 因此,如果一种语言仅包含10个关键字,则可能的表达式的最大数量为10 * 9 * 8 =720。相反,具有20个关键字的语言最终将具有20 * 19 * 18 = 6840个表达式。 两倍的关键字将导致几乎十倍的表达式!

语言倾向于鼓励习语的创建和使用。 有了这么多可能的表达方式,一个人或一群人开始为某些事情关联和使用表达方式是正常的行为。 问题通常发生在另一个小组用自己的方式表达同一件事的时候。 两者都是完全有效的,但是每个组在理解彼此上都会遇到问题。

这并不是说Go具有非常严格和简洁的性质,完全没有成语。 那是不可能的。 试图关联和抽象某些概念是我们的本性。 但是,当一种语言的词汇量故意较小时,不同群体偶然发现以多种方式做同一件事的机会就会减少。 这极大地帮助了人与人之间的沟通,但缺点是很明显。 没有成语的代码(或任何书面表达)非常非常冗长。

因此,无论谁告诉您Go并不是一种冗长的语言,可能要么故意向您撒谎,要么直到那时才真正见过任何其他编程语言。 但是,嘿,我们同意以交流和共同理解的名义进行冗长实际上是一件好事,对吗?

Go is a test for senior engineers

关于Go的最初概念,以及该想法是如何为刚大学毕业的初中生设计语言的,并且几乎没有编程经验,已经有很多说法。 我认为对于许多经验丰富的程序员来说,了解回到编程根源的美丽可能是一种宣泄的经验。

看到,初级程序员从一小包子和成见开始,因此,在他们看来,用代码可以完成的任何事情都是公平合理的。 包括由于算术错误而烧毁CPU或擦除磁盘。

在职业生涯中途的某个地方,一堆原则开始堆积起来。 他们所有人都希望踏上已经学到的东西,并确保在没有立即监督的情况下顺利,安全地进行工作。 学习和应用这些原则非常重要,因为它确保了逐步的发展。 但是对于许多人来说,这变成了他们盲目地坚持的教条,而不用问一个简单的选择是否会更好。

原则的问题在于,它们只能在大约80%的时间内运行良好。 剩下的20%可能对一个项目或一个人的事业造成灾难性的影响。 这是在哪里应用原则,在哪里以实用主义的名义故意抛弃它的理解,这使软件工程师转变为高级软件工程师。

要真正欣赏Go,您需要学习如何辨别Go的原因以及它的社区与众不同。 人们需要对语言完全厌恶,因为它“缺少”某些功能。 尽管渴望回到熟悉的领域继续前进,但会导致以下两种情况之一:

  1. 让人们意识到,Go语言并不是他们所需要或想要的学会欣赏回到根源,以及何时偏重实用主义而非原则

无论如何,这将是一次有趣的经历。

from: https://dev.to//preslavrachev/reflecting-on-my-experience-with-go-one-year-after-nl8

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值