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

最近,不管打开哪个技术网站,都能够看到大家在讨论有关人工智能的话题,这也使得很多程序员在考虑是不是要回炉重造去学习人工智能的知识,同时也使得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

云计算网络中混合WAN和SD-WAN的不同

1585
来自专栏码洞

我为Redis找到了一个新家——VMWare

今天翻了一下Antirez早年的博客,发现了这样一篇介绍redis进展的好文章,写于2010年,居然长期以来都没有被翻译成中文,所以我就不客气了。

642
来自专栏云计算D1net

关于无服务器计算,您需要知道的10件事

如果您阅读了2017年有关于IT特别是云计算方面的各种预测,您很有可能碰到“无服务器计算”这一术语。早在2014年亚马逊的网络服务(AWS)已推出了第一大无服务...

3216
来自专栏腾讯大讲堂的专栏

如何系统性地保障软件的性能

一个正在持续增加新功能的软件,尤其是类似QQ这种做为一个超大规模客户端软件,又随时需要适应用户要求和发展的需求,需要不断的做快速的更新,开发节奏非常快。而且因为...

1876
来自专栏Rainbond开源「容器云平台」

InfoQ首发报道:Rainbond,国内首个开源的无服务器PaaS

1564
来自专栏SDNLAB

命令行界面(CLI)消亡史

IT行业正在向所有的一切都采用应用程序编程接口(API)演进,这使得企业能够自动执行重复性任务,提高效率并减少错误的系统。但是,这引出了新的问题:在IT系统中A...

3244
来自专栏开源优测

从0到1:测试工程师应该具备的基本功底

今天就测试基础知识进行分享,从几个层面来分享软件测试从业者应该具备什么样的基本功底。 笔者针对测试从业者必须掌握的基本功做了个分层: 1、操作系统层 在这个层面...

2746
来自专栏北京马哥教育

25年Linux内核开发经历总结出来的九条经验

原文: 9 lessons from 25 years of Linux kernel development 作者:Greg Kroah-Hartman 翻译...

35511
来自专栏开源优测

从0到1:测试工程师应该具备的基本功底

注: 本文来源自小密圈内部分享,更多精彩请加小密圈 今天就测试基础知识进行分享,从几个层面来分享软件测试从业者应该具备什么样的基本功底。 笔者针对测试从业者必...

34414
来自专栏云计算D1net

如何管理好企业的数据

灾难恢复没有银弹。一旦发生停机,企业高管们会条件反射地以最快地速度采取各种灾难恢复手段。 虽然大多数IT主管和数据管理专家承认没有万全的安全解决方案来保...

3164

扫码关注云+社区