开发者社区> 问答> 正文

go语言容易学吗?

go语言容易学吗?

展开
收起
钉群小二 2019-12-13 12:59:16 996 0
1 条回答
写回答
取消 提交回答
  • 一般任何一门学问,蕴含的逻辑越复杂,学习难度越大。在阐述这些逻辑的时候,我们会需要定义一些术语,把复杂的概念明确化。在编程语言里,reserved words 或者 keywords 就类似这样的术语。一般来说(不能绝对化),术语越多的语言,逻辑越复杂,学习起来越困难。

    我把 Stackoverflow 上这个比较 Reserved keywords count by programming language? 图示化了一下。

    大家可以看到 Go 语言的 keyword 数量比 C 还要少。但是了解 Go 的朋友们知道,Go 的语法描述能力非常强。用 Go 写程序不需要 thread pool,不需要自己创建和管理线程;用 go keyword可以发射 gourotines,而 Go runtime 来调度 goroutines。甚至 epoll 这样的操作系统功能调用都有 select + channel 来描述。按说 go/select/chan 都是新增的 keywords,为什么其 keyword 总数比 C 的还少?这里体现了语言设计者的智慧。

    相比 C++ 和 Java,Go 的 keywords 数量就更少了。在 Google 工作过的同学们都记得 Google 的 C++ 和 Java style guide。洋洋洒洒一大摞,基本就是说这两种语言的“禁用”的部分。

    Java 社区里很多同学们都读过《Design Pattern》(设计模式)。为什么要有设计模式?因为为了达成一个目的,可以有多种写法,选择其中公认比较好的写法,称之为“模式”。 —— 这不是脱了裤子放屁吗?为什么语言的设计,要导致一个事儿可以有多种写法?其实这是设计不够理想的结果。Peter Norvig 在他著名的文章 http://norvig.com/design-patterns 里说“Design patterns are bug reports against your programming language." 他也用详实的例子,展示了即使在人类最早的高级语言之一 Lisp 的设计里,也是不需要《Design Pattern》那本大书里展示的任何技巧的。

    这也反衬出了为什么 Go 的设计被公认为比较精妙。这并不奇怪,因为当 Go 的设计者们开始琢磨这种语言的时候,他们已经因为 Unix、C、Plan 9、awk、grep 的发明是公认的顶级系统设计大师了,甚至已经获得了图领奖。这是他们璀璨的创造人生中的最富智慧的一次升华。在计算机科学发展历史上,好像还没有第二个类似情况下的语言发明故事。

    2021-02-06 20:30:57
    赞同 展开评论 打赏
问答分类:
Go
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载