首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

背靠 Google的Go 语言,就不会失败?

谷歌员工无法理解一种出色的语言,但我们希望用它们来构建优秀的软件。因此,我们提供的语言必须易于理解和使用。

——谷歌最著名的软件工程师之一Rob Pike

作者 | Alexei Matyushkin

译者 |安翔

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

我曾多次尝试使用 Go 语言。毕竟,它由大名鼎鼎的 Rob Pike 创建,Rob Pike 曾设计过如 Plan9 和 Inferno) 操作系统以及 Limbo 编程语言,这些操作系统和编程语言都得到了广泛的使用并取得了巨大的成功。Go 有谷歌的强力支持,那么它就不会失败了吗?

答案是否定的。到目前为止,Go 是二十一世纪计算机科学领域最大的骗局。谷歌曾经背弃了其“Don’t be evil””的座右铭,尽管证据确凿,但是出于某种原因,人们仍然非常信任谷歌。

有人说,Go 是由谷歌创造的,那么一定不会失败。

我想说的是,Go 是一个现代科技公司的欺诈行为,我解释我的看法。

我将通过官方 Golang 书籍来展示其错误和设计缺陷。

你的第一个 Go 程序

本教程从程序结构的解释开始。

第一行如下:

大家都习惯称之为模块,Go 为了凸显自己的特别,将其称之为包。

接下来的代码是:

import "fmt"?开玩笑吧,这在编译型语言中完全是多余的。优秀的编译器可以很容易地解决所有调用 fmt.foo 并执行所需的任何导入。显式导入可能有用的唯一原因是从将函数 import(导入) 到包。

类型

Go 是一种静态类型的编程语言。这意味着变量始终具有特定类型,并且该类型不会更改。

这完全是谎言(我个人观点)。静态类型语言类型丰富,如 Haskell,需要一个巨大的样板才能完成非常简单的任务,而且 Go 宣称自己 easy-come-easy-go。这就是为什么除非另有说明,否则它实际上是静态类型的。我们稍后讨论 void 接口。

Go 的整数类型有:uint8、uint16、uint32、uint64、int8、int16、int32 和 int64。

在二十一世纪的第二个十年,我们通过编译的“静态类型”的语言让开发人员区分 int32 和 int64。

变量

尽管创建具有起始值的新变量非常常见,但是 Go 的语句比常见的方式更短:

一个普通的冒号+等号会出现什么问题呢?我们会失去 Go 所引以为傲的静态类型,该语法非常冗余和奇怪。

请注意,我们将变量移到 main 函数之外。这意味着其他函数也可以访问此变量。

该内容可以在范围一章中找到。好吧,它看起来像 Ruby 中的变量。或者作为Elixir 中的模块属性。这个变量的范围和生命周期到底是什么?我可以从这个模块中声明的函数返回它吗?教程中没有明确说明。

控制结构

Go 引入的第一个控制结构是 for 循环。减少了迭代和映射吗?不,我们从未听说过。声明一个最外层的变量并使用 for 进行循环。我谨慎地根据我的日历检查当前日期。它仍然是2018年。

第二个控制结构是 if。“给我一个 for 和 if,我便可以撬动地球,” 阿基米德曾经说过。顺便说一句,第三个控制结构是 switch。

所有控制结构就这些!语言必须尽可能简单。

数组、切片和 Maps

数组具有预定义的长度。切片是不固定长度的数组。Maps 是键-值对。Maps 需要声明和初始化,否则会引发运行时错误。

以上代码表明创建易读语言的目标已成功实现。

以下是访问 map 中元素的方法。

无话可说。我也听到有些人反对其安全性。这完全是所谓的斯德哥尔摩综合症。

我甚至无法想象有多少潜在的开发人员产生了这样的防御。也许不雇用他们会让事情变得简单。

函数

函数可以返回多个值(返回数组有什么问题?),此外,函数可以是可变参数的。到目前为止,这很好。

接口。听起来很吓人? - 并不是全部。Void 接口。

静态类型?安全?笑死人。

地狱之路已经铺好了。我相信他们会为傻瓜创造一种安全的静态类型语言。但现实世界是严酷和粗暴的。我们会给异想天开的孩子一些垃圾甜食,而不是健康的绿色蔬菜。

最后

在此,我对这门伟大语言的研究已经结束。我认为,好的代码取决于开发人员,而非计算机编程语言。很多语言设计存在缺陷,但是优秀的程序员用它创造了优秀的程序;有的编程语言很好,但是平庸的程序员用它设计了糟糕的程序。就个人而言,我并不关心用哪种语言来完成任务。

但请不要再称 Go 为安全、易于读写和静态类型的语言。谢谢。

原文:http://rocket-science.ru/hacking/2018/12/25/go-outta-here

本文为 CSDN 翻译,如需转载,请注明来源出处。

热 文推 荐

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181231A0TD8R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券