6

策略与机制

 4 years ago
source link: https://studygolang.com/articles/29123
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

入行至今快12年,这段时间空闲下来,思考一个问题:进入油腻之年,谈到程序,应该谈些什么?

是编程语言的语法吗?这些年接触过C、C++、Golang、Java、OC,看过C#、JS、Erlang。编程语言这么多,怎么学习得过来?

是语言相关的库吗?学语言必然要学相关的语言库。这就更是无究无尽,有数不尽的技术细节、编程技巧,怎么学习得过来?

是学习编程框架吗?编程框架最核心的目的,提高开发效率。因为更靠近业务,Java、JS的框架尤其多。框架封装好,开发者只需要关注业务逻辑,不可或缺,但似乎也不是必需的。见过不少Android程序员,提起四大组件,说得眉飞色舞,但问起.9切图应该怎么设置,却答不上来。

是谈微服务、分布式系统、DevOps吗?这是大规模线上服务必须,但又有多少业务有此需求,又有多少业务是过度设计的,不但没有收益,反而带来额外的维护成本。

技术变化得如此频繁,如何才能跟得上发展呢?开源时代,能接触的优秀项目难以计数,又怎么让不至于迷失于符号、变量、函数中,疲于奔命。想到的答案是,在纷扰中抓住不变的东西。

Unix/Linux的接口设计有这么一个原则:提供机制而不是策略。简单而言,机制是指需要提供什么功能,而策略是如何实现这些功能。机制提供的是一种框架,策略则是基于框架的具体实现。

在我的理解里,机制就是纷扰中不变的东西,而策略则难以穷尽。

Redis面试者可能会遇到这么一个问题:为啥RedisCluster设计成16384个槽?这个问题设计得很巧妙,能考察是否对Redis的实现有深入的了解。但另一方面,若没有答上来,却不能一棒子打死。因为这属于细节,不是所有人都关注到。面试应该不仅是考察记忆能力、经历,还应该考察思考方式、解决问题的思路。故我比较推崇的面试方式是由浅入深的交流,即使面试者回答不上来,也应该不断添加提示,把问题变成一个开放性思考的问题。

此为系列文章的序。

欢迎关注我们的微信公众号,每天学习Go知识

FveQFjN.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK