程序员思维看世界

很多人学编程学不下去有一条很重要的原因,欠缺程序员思维。程序员思维就是将客事物数字化的能力。
程序员思维具体怎么理解呢?请大家看下面这张动图。

动图显示的是机械手臂打保龄球,效果是不是很震撼?具体怎么做到的呢?让我们先回想一下自己是怎么打保龄球的?

  1. 手拿保龄球估算重量。
  2. 眼看目标估算距离。
  3. 手用合适的力量、角度,发球!

那么机械手臂是怎么打保龄球的呢?其实和人也差不多,抽象的解释如下:

  1. 拿起保龄球测量大小、重量(直径n毫米,重量w克)。
  2. 摄像头测量目标计算距离(距离h毫米)。
  3. 计算发球需要的角度和力度(计算出角度x,力量y),机械手臂旋转保龄球,符合发球角度x和力度y时释放机械臂发球。

以上就是计算机打保龄球的过程。人打保龄球凭的是感觉和经验,这一次发球一个没中,太左边了,下次右边点;哎,这下太右边了,下次再左边点。计算机打保龄球依靠的是客观事物抽象化、数字化,即打保龄球需要考虑球的重量w、大小n、距离h这3个属性,然后通过α 公式推导计算出角度x、力量y来发球。

在计算机打保龄球这件事上程序员应该做哪些事呢?

  1. 首先评估客户提的需求打保龄球需要考虑哪些属性,例如大小、重量、距离。
  2. 编写合适的代码,将客户提供的数据通过程序处理,输出客户需求的数据,例如角度、力度。
  3. 验证各个属性的不同数值n、w、h是否都能计算出正确结果x、y,若结果不正确则回到第一步排查是是否有应该额外的属性没有考虑(例如风也会影响打保龄球,那么需要添加考虑属性风),第一步验证无误后再回到第二步检验程序、算法是否有bug。
  4. 通过验证后再完善输入、输出接口、界面,提交客户。

通过以上案例介绍,望能帮助到一些学编程很迷茫的同学。编程时首先要养成程序员思维方式,遇到需求时问自己三个问题:

  1. 属性,需要考虑哪些属性?这些属性有没有取值范围?限定类型?采集周期等等。
  2. 拆分,需求可以拆分成哪些步骤来完成?将大问题拆分成若干小问题,做模块化处理。这样将来需求变更、遇到bug等情况只要找出对应的模块加以纠正即可。
  3. 算法,通过什么合适的算法将输入的属性得出需求的结果?首先要计算出正确结果,然后从响应速度、消耗资源、内存使用率等各个角度综合评估使用最恰当的算法。

最后还有一句话,计算机的实质就是输入、运算、输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值