如何培养编程所需要的逻辑思维?

    
timg_(3).jpg

    程序员是一项需要高度集中、高复杂逻辑思维的工种,那么如何培养自己对问题的分析能力呢?”思维“,我的理解是一种对某种现象在多次发生之后,寻找到的一种规律,”编程思维“ 就是如何用软件去解决问题,需求首先要确定 输入、和输出。这个 求解方程一样。例如现在很流行的单车模式,我们分析下这个开锁和解锁过程。
 
    很少有人能单单通过所谓“逻辑思维”从复杂问题快速找到抽象的,如果有这样的人,他的经验,工具,方法和直觉通常起到比逻辑思维更重要的作用。写代码需要逻辑思维,但解决复杂问题更需要理解分析,写代码只是解决问题比较靠后的步骤。所以不急着写代码,也不急着找抽象,先试着理解问题本身,而不是下意识地想把问题套进已知的,熟悉或不熟悉的工具,那样是本末倒置的。多数情况下,只要有一点耐心,理解问题并不难,这个时候既是逻辑推演,更是探索发现。
 
    比如交通灯控制,是一个不那么简单的问题,不急着找模型,也不急着编程,想一想一个交通灯有几种状态,一组交通灯有几种状态,不同的路口的交通灯有几种状态,把具体的例子列出来,你大概会有一个概念:那就是你要写交通灯管理程序本质就是一个状态管理的过程。这个时候还没有得到适合编程的抽象,但你已经积累了对输入和输出的认识,接下来可以写一点简单代码或者伪代码,把各种case的逻辑都单独实现一遍,把各种状态之间的转换的条件和过程勾勒出来,从这里观察他们在数据和流程上有没有共性,有没有可以优化的余地,这样你就慢慢地找到你要的抽象,然后看看你熟悉的工具(比如编程语言)提供了什么样的数据结构和编程范式最适合去实现这样的抽象。
 
    把问题具体化,寻找具体的输入和输出,具体的状态变化。具体化了的问题更容易分解,分解以后的问题更容易分析;先分析再归纳比不分析直接归纳更有操作性,你的“逻辑思维”才能派上用场。
 

1.jpg

 
 
用户角度:

登录单车
搜索附近的单车
找到单车扫描二维码
进入等待解锁界面
解锁成功,开始计时,后台开始GPS行为轨道记录
关锁、等待10秒作用,手机界面提示解锁成功

运营人员角度:

登录系统
根据区域,查询附近需要维修或者需要转移单车
转移单车

开发人员角度

单车与服务器操作
单车需要上报自己所在地址
服务器向单车发起开锁命令
单车关锁时,向服务器发起关锁命令
上面三个要求啊:核心功能就是单车和服务器是实时通讯的,


用户和单车
单车扫描二维码(请求需要开启的单车序号)
服务器对用户身份进行审核,服务器向单车发送解锁指令
单车解锁成功,上报服务器,服务器再通知用户解锁成功,用户端开启GPS跟踪记录
用户手机实时上报行程轨迹
手动关锁,行程结束。(一般设置手动和自动关锁)

单车状态
上报地址
收到解锁命令
关锁

核心功能

单车和服务器实时通讯
单车电力和网络问题,需要分析高、低网络状况时方案
用户GPS上传速率问题
用户离线下,如何关闭单车
用户奖励规则、
行驶距离可以得红包
在规定地方停车可以得红包

注意:用户的所有操作和单车是分离的,也就说所有用户相关奖励操作和单车状态是解耦的关系

一个大致的分析就可以得出一个单车共享模式.

 

0 个评论

要回复文章请先登录注册