重复性的操作,你干不过计算机

最近,不管打开哪个技术网站,都能够看到大家在讨论有关人工智能的话题,这也使得很多程序员在考虑是不是要回炉重造去学习人工智能的知识,同时也使得Python在编程语言排行榜上的名词一路飙升。大家普遍讨论得比较多的问题就是未来到底有哪些工作会被机器取代,机器的智能到底会不会超越人类?很多专家都指出了,那么重复性高的工作很大可能会在不久的将来被机器取代,因为机器,或者是人工智能,非常擅长做大规模的重复性的操作。

这里我们不讨论人工智能,而是想聊聊机器擅长做重复性操作这个事。下面我举一个例子来说明。

在之前的某个项目中,我指导了某新员工对某个软件版本进行测试,该软件的主要功能是从数据库中扫描出满足条件的数据以执行相关操作。具体而言,数据库中有10个表(tb_test0~tb_test9),程序要周期性地从第1个表到第10个表中查询数据。为了验证程序处理的数据条数总条数是否正确,需要经常性地手动从这10个表中查找数据条数,并与程序处理的数据条数进行比较。

在每一轮的测试中,这位新员工的做法是在软件运行之前,先依次手动执行10条SQL语句从这10个表中查找数据条数并记录下来,然后将这10个数据加起来的结果存放到电脑上;当软件运行之后,将保存的结果与程序日志中的结果进行比较,看两者是否相等。按照他的这种做法,如果测试了100轮,那么就要手动执行100组如下的SQL语句:

selectcount(*) from tb_test0

select count(*)fromtb_test1

selectcount(*) from tb_test2

select count(*)fromtb_test3

selectcount(*) from tb_test4

select count(*)fromtb_test5

selectcount(*) from tb_test6

select count(*)fromtb_test7

selectcount(*) from tb_test8

select count(*)fromtb_test9

如此重复劳动是否有必要呢?我问该新员工是否有更好的做法来避免这种重复的劳动?他觉得应该有,但是还没有想到。

我们都知道,与人相比,计算机更适合做重复性的操作。具体到本文中提到的这个问题,可以考虑编写一个数据库脚本(更具体来说是一个存储过程)来从10个表中查找数据条数,我们每次只要用很简单的语句来调用这个脚本就能够得到数据总条数。

根据我的这个想法,该新员工编写了如下脚本:

create procedure pr_countnumasdeclare

@numoftable0int,

@numoftable1int,

@numoftable2int,

@numoftable3int,

@numoftable4int,

@numoftable5int,

@numoftable6int,

@numoftable7int,

@numoftable8int,

@numoftable9int,

@totalnumint

begin

select@numoftable0=count(*)from tb_test

select@numoftable1=count(*)from tb_test1

select@numoftable2=count(*)from tb_test2

select@numoftable3=count(*)from tb_test3

select@numoftable4=count(*)from tb_test4

select@numoftable5=count(*)from tb_test5

select@numoftable6=count(*)from tb_test6

select@numoftable7=count(*)from tb_test7

select@numoftable8=count(*)from tb_test8

select@numoftable9=count(*)from tb_test9

select@totalnum=@numoftable0+@numoftable1+@numoftable2+@numoftable3+@numoftable4+@numoftable5+@numoftable6+@numoftable7+@numoftable8+@numoftable9

select@totalnum

end

go

print'create procedure pr_countnum ok'

go

每次运行软件之前,我们只需要执行如下语句:

execpr_countnum;

即可得到10个表中的数据总条数。

在实际的研发工作中,特别是在已经到来的智能时代,为什么我们要尽量将重复性的操作让给计算机执行呢?我认为有如下原因:

第一,为了节约宝贵的研发时间。大家都知道,软件行业的从业人员经常加班,他们不是活雷锋,不是他们想加班,而是手上确实有很多事情做不完让他们不得不加班。在时间如此宝贵的情况下,如果你还把时间浪费在做大量重复的事情上,岂不是可惜?把重复的事情交给机器做,至少可以让我们将主要精力集中在重要的、有创意的事情上,做出来的产品的质量也更好。

第二,为了减少出错的机会。人和机器不一样,机器把某件事情重复做上N遍都不会出现问题,而人重复做某件事情的次数越多,出错的概率就越大。特别是涉及到数字的操作,当你重复做上10遍的时候,可能还一切正常,当你重复做上50遍的时候,可能头就已经晕了,这时得到的结果就会有问题了。

第三,为了体现研发人员的素质。就像前面提到的,一个将某个操作手动执行100遍的人和一个调用自己编写的脚本100遍的人,你会觉得谁的素质更高呢?当然是后者。在每天的工作中,我们会和很多的人打交道,如果你给他们留下了好的印象,那么后续的工作也更好开展了。

在实际的软件研发工作中,我们要合理利用资源,力争多、快、好、省地完成自己的工作。

本文来自企鹅号 - 周氏逻辑媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

如何避免即将到来的云复杂性危机

云复杂性危机即将爆发。我们每天都向云端添加数百个工作负载,建立新的数据库,添加不同类型的计算和存储,以及添加基于云的网络——并且在不撤下几乎不存在的内部部署的资...

760
来自专栏大魏分享(微信公众号:david-share)

从Gartner IT成熟度模型谈Linux运维

前言 本文参考IT基础架构和运维成熟度模型中的技术项,探讨Linux运维相关内容。本文由我和我的另外两名同事一起完成。 从基础架构和IT运维成熟度模型谈起 Ga...

3236
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(53)-SD-跨公司销售

有人说,我们老板很牛,开了很多公司,在总部有生产工厂,具有独立法人,专门用来生产,在全国各地有很多销售公司也是独立法人,负责销售和售后,销售公司负责接单,发货从...

3393
来自专栏小俊博客

CloudFlare公共DNS服务遭遇“宕机”

1824
来自专栏SAP梦心的SAP分享

【SAP业务模式】之ICS(三):前台操作

      本片博文开始讲解SAP前台是如何实现ICS业务模式的。 一、VA01开立销售订单 ?       我这里为了方便,创建了一个订单类型ZMIV作为公...

18710
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–回扣处理(926)-1业务概览

用途 回扣(协议)是一种向客户回溯付款的特殊折扣。 此折扣基于预定义时间期间的客户销售量,回扣将由客户服务人员通过创建贷项凭单进行结算,此贷项凭单将按照先...

2694
来自专栏数据和云

2016数据库大会访谈:杨廷琨谈环境变化优秀DBA会抬头看路

随着科技飞速发展,软硬件技术更新换代,数据库领域也在不断发生着变化,传统数据库与新技术的结合、数据库的云化等等。改变是为了更好的生存发展,数据库...

2604
来自专栏Hadoop数据仓库

建立标准数据对照表

        这是一个真实数据仓库项目中的案例。某公司要建立一个员工数据仓库,需要从多个业务系统集成员工相关的信息。由于历史的原因,该公司现存的四个业务系统中...

1947
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–潜在客户销售订单处理(113)-1业务概览

用途 该业务情景描述了无需先查阅客户详情即可创建销售订单的流程(为潜在的虚拟客户创建的销售订单) 优点 无需客户帐号的销售订单处理 含客户特定物料的销售定...

3396
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-20定期处理-S_ALR_87012936折旧模拟/初级成本计划

4.7.4 S_ALR_87012936折旧模拟/初级成本计划 您可以使用标准报表来帮助您预测复杂固定资产未来几年内的计划折旧。除简单清单显示选项外,还可以将...

2957

扫码关注云+社区