从软件编程思想和日常生活案例看如何提升执行力

这几天在研究云原生技术的一些关键点,接触到一个新名词——“声明式API”。声明式(Declarative)的编程方式一直都会被工程师们拿来与命令式(Imperative)进行对比,接下来我们举例说明两者的不同。

命令式编程与声明式编程的不同

命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。 比如:如果你想在一个数字集合collection(变量名) 中筛选大于 5 的数字,你需要这样告诉计算机: 第一步,创建一个存储结果的集合变量results; 第二步,遍历这个数字集合collection; 第三步:一个一个地判断每个数字是不是大于 5,如果是就将这个数字添加到结果集合变量results中。代码实现如下:

List<int> results = new List<int>(); foreach(var num in collection)

{

if (num > 5)

results.Add(num);

}

很明显,这个样子的代码是很常见的一种,不管你用的是C,C++还是C#,Java,Javascript,BASIC,Python,Ruby等等,你都可以以这个方式写。操作系统是一种典型的命令式编程模式。

声明式编程是以数据结构的形式来表达程序执行的逻辑,它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。声明式编程的代码我们可以发现它有一个特点是它不需要创建变量用来存储数据,另一个特点是它不包含循环控制的代码如for,while。 SQL 语句就是最明显的一种声明式编程的例子,例如:

SELECT * FROM collection WHERE num > 5

通过上面的对比我们发现,声明式编程可以给调用者带来更多的便利,调用者只需要站在更高的维度,聚焦自己的业务特性提出自己的业务目标即可,更细致深入的工作由声明式API进行封装,由API来独自完成。

为了进一步说明这个问题,我们来了解一下一条SQL语句在mysql数据库中的执行流程。Mysql系统由服务层和存储引擎层构成,其中服务层就是我们所说的声明式API,由连接器、缓存器、解析器、优化器、执行器等构成,将数据存储引擎的业务能力进行一定的优化和封装,向客户端提供更高更抽线层的业务。客户端向MySQL服务器发送一条查询请求,服务器首先查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段。服务器进行SQL解析、包括词法分析与语法分析, 如果SQL正确, 进入下一阶段,否则返回错误信息。服务器通过优化器生成它所认为执行成本最小的执行计划。MySQL根据执行计划, 调用存储引擎的API来执行查询,将结果返回给客户端,同时缓存查询结果。

通过上面的分析我们可以看出,服务层在接收到客户端的请求后并非直接将请求代理透传给存储引擎,而是将客户端请求分解成了一系列的动作,客户端有些请求(如在本地缓存可以查询到)甚至在本服务层进行了直接处理并未向下传递,从而大大提升了查询效率。

生活中的案例

在日常生活中关于命令式和声明式的案例也是比比皆是,我们看一下下面的例子。夫妻在一起做晚餐,女主人采用命令式接口下任务:老公,把袋子里的土豆削一半下锅。结果是老公把袋子里所有土豆的每个土豆削了一半,下锅煮了。在这个例子中女主人的问题出在采用命令式接口而非声明式接口,男主人的问题在于没有对女主人的要求做进一步分解和分析,而是直接指挥自己的双手开始了执行。

日常工作生活中如何提升执行力呢?

上述“削土豆问题”在我们的工作很生活中广泛存在,那么该如何克服这些问题提升我们的执行力呢?

首先,任务下达者要有非常明确的目标,要重点讲清楚what和why,尽量少讲或者不讲how。

其次,执行者要有很强的“解码”能力。在团队运作中,大多数任务都是采取自上而下的方式下达的,同一个任务往往经过层层分解落实到不同的团队承接。在这个过程中,作为任务的承接者准确理解工作上游下达的任务意图,并将任务“解码”成一系列在团队内可执行的具体目标和举措并进行排序非常重要。

第三,任务在得到分解和下达后接下来很重要的一个工作就是要持续跟踪。我们都知道通讯系统中不同 元之间的通讯都是要进行请求、应答消息确认以及心跳消息确认的,那么在任务下达后的执行环节也要同样如此,否则就会脱钩,就会失联。具体来说,任务的跟踪包含两个方向(参见下图),一个方向是作为任务下达者要随时随地对下达的任务执行情况进行跟进和了解,这样做一方面便于发现问题以及及时采取调整措施,同时也利于给任务承接者造成一定的压力,提升执行力;另外一个方向是作为任务承接者也要将任务的执行情况及时地向上级回 (为了避免官僚化,采用“回 ”代替“汇 ”),这样除了一方面让上级放心,以便得到更多的资源支持外,更重要的是确保任务执行没有偏差,一旦出现偏离就可以进行修正。

第四、跟进任务的过程中还有一个关键词就是要“持续”。持续就是生产力,持续之所以这样重要是因为这个时代大家受到的诱惑很大,很多时候已经丧失了工匠精神。另外,我们现在逐渐从跟随走向了领先,这也意味着我们很多时候没有可供借鉴的经验拿来用,需要我们长时间不断地深入研究才能出成果。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月13日
下一篇 2021年2月13日

相关推荐