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

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

相关文章

来自专栏用户2442861的专栏

腾讯微信技术总监周颢:一亿用户增长背后的架构秘密

http://www.csdn.net/article/2012-05-15/2805581

1372
来自专栏DevOps时代的专栏

顾宇:成功的微服务的技术特征及其反思

在上一篇文章里,我们介绍了如何定义一个微服务改造的成功,并介绍了落地成功的微服务组织结构有哪些特征。这篇文章我们来介绍一下成功的微服务的技术特征以及我们在微服务...

1122
来自专栏EAWorld

数字化企业云平台的Cloud Native12原则(上)

本文作者介绍了未来云原生应用建设的方法论,开发Cloud Native App的理想实践标准——12要素原则的前6个原则,并围绕数字化企业云平台讲述了具体实践方...

3236
来自专栏直播系统源码

搭建直播平台过程中的全能“辅助”——流媒体服务器

直播在经历了爆发式增长后,在互联网领域中呈现出稳步增长的状态。前期观望许久的创业开发者们认为“火候到了”,纷纷开始将搭建直播平台项目提上日程。对于平台搭建来讲,...

3340
来自专栏云加头条

富途牛牛云上小程序开发一手体验

富途牛牛股票是一款提供港股和美股证券开户及交易服务的产品,也是基于腾讯云快速开发的第一批小程序之一。富途牛牛股票小程序 1 月 9 日上线首日总用户数超过 2W...

1.1K0
来自专栏程序员互动联盟

微信为啥能同时支持这么多人在线?

微信——腾讯战略级产品,创造移动互联网增速记录,10个月5000万手机用户,433天之内完成用户数从零到一亿的增长过程,千万级用户同时在线,摇一摇每天次数过亿....

4924
来自专栏叁金大数据

数据库和数据仓库你应该知道的

Hive作为Hadoop生态圈重要的一员已经被我们所熟知,它作为一个基于Hadoop的数据仓库工具,用来做离线的数据分析工作。那么什么是数据仓库,它与我们经常使...

1382
来自专栏DevOps时代的专栏

基于DevOps的Android交付工具链建设

前言: 有人说 DevOps只适用于初创公司,有人说DevOps只适用于大公司,有人说DevOps只适用于互联网服务。事实胜于雄辩,我们来看看DevOps是如何...

4066
来自专栏DevOps时代的专栏

DevOps 与技术雷达

? 关于 Kubernetes Kubernetes 现在是当仁不让的首选容器编排平台,在技术雷达中,也将其标记为采用。社区也发展出很多 Kubernete...

2568
来自专栏张善友的专栏

怎样维护成功的开源项目

开源可不仅仅是将代码扔到网上就万事大吉了,将开源项目变成能让自己引以为豪的东西才算成功。那么,你需要注意哪些方面呢? 写好指导性文字 每一个开源项目有三样东西是...

2038

扫码关注云+社区

领取腾讯云代金券