去开发关键技术指南|为什么你要选择去?(内含超全知识大图)

  

作者|杨成立(忘篱)阿里巴巴高级技术专家

  

<>强关注“阿里巴巴云原生“公众号,回复去即可查看清晰知识大图!

  
  

<>强导读:从问题本身出发,不局限于去语言,探讨服务器中常常遇到的问题,最后回到去如何解决这些问题,为大家提供去开发的关键技术指南。我们将以系列文章的形式推出《去开发的关键技术指南》,共有4篇文章,本文为第1篇。

     

去开发指南大图

  

去开发关键技术指南|为什么你要选择去?(内含超全知识大图)

  

概述   

该指南主要讨论了服务器领域常见的并发问题,也涉及到了工程化相关的问题,还整理了C背景程序员对于去的GC以及性能的疑问,探讨了去的错误处理和类型系统最佳实践,以及依赖管理的难处,接口设计的正交性,当然也包含我们在服务器开发中对于去实践的总结,有时候也会对一些有趣的问题做深度的挖掘,列出了去重要的事件和资料集合,以及Go2的进展和思考。

  

以下是各个章节以及简介:

  
      <李> <强> 强名称:为有何去时候也叫Golang ?李   <李> <强> :为什么为何要选择去作为服务器开发的语言?是冲动?还是骚动?李   <李> <强>里程碑:去的重要里程碑和事件,当年吹的那些牛逼,都实现了哪些?李   <李> <>强GC :去的GC靠谱吗? Twitter说相当的靠谱,有图有真相。   <李> <>强不能恢复:君可知,有什么恐慌是无法恢复的?包括超过系统线程限制,以及地图的竞争写。当然一般都能恢复,比如片越界,nil指针,除零,写关闭的成龙等。   <李> :<强>声明语法为何去语言的声明语法是那样的? C语言的声明语法又是怎样的?是拍的大腿,还是拍的脑袋?李   <李> :<强>错误为什么Go2的草3个稿中有2个是关于错误处理的?好的错误处理应该怎么做?错误和异常机制的差别是什么?错误处理和日志如何配合?李   <李> <>强记录器:为什么标准库的日志记录器是完全不够用的?怎么做日志切割和轮转?怎么在混成一坨的服务器日志中找到某个连接的日志?甚至连接中的流的日志?怎么做到简洁又够用?李   <李> <>强类型系统:什么是面向对象的固体原则?为何去更符合固体?为何接口组合比继承多态更具有正交性?去类型系统如何做到宽松的,有机的,解耦,独立,因此可伸缩?李   <李> <>强正交:一般软件中如果出现数学,要么真的牛逼,要么就是装逼。正交性这个数学概念在去中频繁出现,是神仙还是妖怪?为何接口设计要考虑正交性?李   <李> :<强>模块如何避免依赖地狱(依赖地狱)?小小的版本号为何会带来大灾难吗?去为什么推出了GOPATH,供应商还要搞模块和vgo ?新建了16个仓库做测试,碰到了9个坑,搞清楚了GOPATH和供应商如何迁移?以及与供应商如vgo何使用(毕竟生产环境不能每次都去外网下载)?李   <李> <>强并发:服务器中的并发处理难在哪里?为什么说去并发处理优势占领了云计算开发语言市场?什么是C10K, C10M问题?李   <李> <强> 强背景:如何管理goroutine的取消,超时和关联取消?为何Go1.7专门将上下文放到了标准库?上下文如何使用以及问题在哪里?李   <李> <>强工程:走在工程化上的优势是什么?为什么说去是一门面向工程的语言?覆盖率要到多少比较合适?什么叫代码可测性?为什么良好的库必须先写例子吗?李   <李> <>强Go2过渡:Go2会像Python3不兼容Python2那样作吗? C和c++的语言演进可以有什么不同的收获? Go2怎么思考语言升级的问题?李   <李> :<强>文件去官网的重要文档分类,本屌丝读了四遍了,推荐阅读。   <李> <>强SRS :走在流媒体服务器中的使用。   
  

这个名字   

去编程语言到底是该叫去还是GOLANG ?谷歌搜<代码>为什么要叫做GOLANG>   

罗伯·派克在Twitter上特意说明是走了,可以看这个语言叫做:

  
  

。语言叫去,而不是Golang。http://golang.org网站地址,不是语言的名称。

     

在另外一个地方也说明了是走了,可以看这个我们的语言的名称:

  
 <代码>我们的语言的名称
  Ruby调用Ruby,不是Rubylang。
  Python调用Python,不是Pythonlang。
  被称为C,而不是叮当声。不。等待。这是一个不好的例子。
  去叫去,而不是Golang。
  
  是的,是的,我知道所有的搜索和meta标记。当然,无论如何,
  但这并不能改变这一事实语言的名称。
  
  谢谢你的考虑。

去开发关键技术指南|为什么你要选择去?(内含超全知识大图)