Python 程序设计思维
2019-02-15 本文已影响14人
小星star
-
自顶向下 和 自底向上
自顶向下(设计)
解决复杂问题的有效方法- 将一个总问题表达为若干个小问题组成的形式
- 使用同样方法进一步分解小问题
- 直至,小问题可以用计算机简单明了的解决
自底向上(执行)
逐步组建复杂系统的有效测试方法- 分单元测试,逐步组装
- 按照自顶向下相反的路径操作
- 直至,系统各部分以组装的思路都经过测试和验证
设计的时候,编码之前,先想好框架
image.png
image.png
调试的时候,逐渐测试各个单元
理解自顶向下的设计思维:分而治之
理解自底向上的执行思维:模块化集成
自顶向下是“系统”思维的简化 -
计算思维与程序设计
- 逻辑思维:推理和演绎,数学为代表,A->B B->C A->C
- 实证思维:实验和验证,物理为代表,引力波<-实验
-
计算思维:设计和构造,计算机为代表,汉诺塔递归
image.png
image.png
当计算机被广泛使用,我们生活中出现了比人算力更加强大的设备的时候,计算思维才真真正正成为人类利用工具进行思维的一种方式。
逻辑运算更多的是 利用公式,进行推导
而计算思维 则是 更多的利用 模拟运算,模拟过程,如模拟求和,模拟移动汉诺塔
-
计算生态与Python语言
开源思想深入演化和发展,形成了计算生态
计算生态以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展、相互依存和迅速更迭中完成信息技术的更新换代,形成了技术的自我演化路径。以开源项目为代表的大量第三方库Python语言提供 >15万个第三方库;
库的建设经过野蛮生长和自然选择同一个功能,Python语言2个以上第三方库;
库之间相互关联使用,依存发展Python库间广泛联系,逐级封装;
社区庞大,新技术更迭迅速AlphaGo深度学习算法采用Python语言开源;image.png
学习 python,不是一行一行代码,而是站在巨人的肩膀上
-
用户体验与软件产品
编程只是手段,不是目的,程序最终为人类服务,所以我们要尽量考虑提高用户体验;
要是我们自己都不满意自己的产品,那么别人更加不会满意提升用户体验的方法: - 如果程序需要计算时间,可能产生等待,请增加进度展示 - 如果程序有若干步骤,需要提示用户,请增加进度展示 - 如果程序可能存在大量次数的循环,请增加进度展示 - 当获得用户输入,对合规性需要检查,需要异常处理 - 当读写文件时,对结果进行判断,需要异常处理 - 当进行输入输出时,对运算结果进行判断,需要异常处理 - 打印输出:特定位置,输出程序运行的过程信息 - 日志文件:对程序异常及用户使用进行定期记录 - 帮助信息:给用户多种方式提供帮助信息
-
基本的程序设计模式
从IPO开始…- 确定IPO:明确计算部分及功能边界
- 编写程序:将计算求解的设计变成现实
- 调试程序:确保程序按照正确逻辑能够正确运行
模块化设计
- 通过函数或对象封装将程序划分为模块及模块间的表达
- 具体包括:主程序、子程序和子程序间关系
- 分而治之:一种分而治之、分层抽象、体系化的设计思想
- 紧耦合:两个部分之间交流很多,无法独立存在
- 松耦合:两个部分之间交流较少,可以独立存在
- 模块内部紧耦合、模块之间松耦合
配置化设计
- 引擎+配置:程序执行和配置分离,将可选参数配置化
- 将程序开发变成配置文件编写,扩展功能而不修改程序
- 关键在于接口设计,清晰明了、灵活可扩展
应用开发的四个步骤
从应用需求到软件产品- 1 产品定义:对应用需求充分理解和明确定义
产品定义,而不仅是功能定义,要考虑商业模式 - 2 系统架构:以系统方式思考产品的技术实现
系统架构,关注数据流、模块化、体系架构 - 3 设计与实现:结合架构完成关键设计及系统实现
结合可扩展性、灵活性等进行设计优化 - 4 用户体验:从用户角度思考应用效果
用户至上,体验优先,以用户为中心