当你构建应用程序时一个简单的语言规范并不是一个功能

102 阅读2分钟

Go以其简单和可读的语言规范而闻名。一方面,为Go的书面规范点赞,为其严格保持语言语法的简单性点赞。

但从另一个角度来看,更实际的是,简单的语言规范意味着语言本身在开箱时就有较少的能力。程序员们将不得不为其他的事情自己设计。而且,正如我们在JavaScript中看到的,如果你想鼓励一个共享的语言社区,这就是一个问题。

每个人都会想出他们自己的模式,这些模式可能并不明显,即使它们是由语言规范中的通用组件组成的。

小小的抄袭

Go积极鼓励这种编程方式,其成语是 "少量复制胜过少量依赖。" 在这里,他们积极避免了NodeJS的主要陷阱之一。但代价是什么呢?

很多地方

我说代价比这句话所表明的要高。从一个地方复制一点东西会导致从很多地方复制很多东西的积累。因为这些复制没有被命名,没有被版本化,也没有被隔离,而是在所产生的程序中随处可见。意味着,如果你发现一个缺陷,你有很多地方需要修复。更糟的是,如果别人发现了一个缺陷,你也不知道,除非你遇到并认识到那个小副本的改进版本。

Go是为系统而不是为应用程序服务的

现在,明确地说,我不认为这对Go的所谓主要目的来说是个缺陷:一种系统编程语言。系统编程应该是简短、简单、锋利的工具,以强大的性能故事来完成高质量的工作。你不希望用巨大的、复杂的、沉闷的、性能不佳的工具来负担你的系统。Excel很好,Excel不是一个系统工具。Excel是一个应用程序。

但是,外面有很多程序员正在建立,或者试图建立相当于Excel的Go。用Go写的不是锋利的工具,而是大型的应用程序,因为Go已经成为他们的锤子,所有东西都是钉子,即使是摩天大楼。