zoukankan      html  css  js  c++  java
  • Python程序设计思维


    1. 计算思维与程序设计

    计算思维被认为做人类第三种思维特征。

    • 逻辑思维:推理和演绎,数学为代表,A->B B->C A->C

    • 实证思维:实验和验证,物理为代表,引力波<-实验

    • 计算思维:设计和构造,计算机为代表,汉诺塔递归

    计算思维的特征:抽象和自动化

    • 计算思维:Computational Thinking

    • 抽象问题的计算过程,利用计算机自动化求解

    • 计算思维是基于计算机的思维方式

    计数求和:计算1-100的计数和

    image-20210228085618376

    圆周率的计算:

    image-20210228085702414

    逻辑思维更多的是靠数学推理形成公式来获得结果

    计算思维更多的是利用计算机来模拟过程并完成大量的运算

    天气预报问题:

    image-20210228090043229

    image-20210228091822652

    抽象问题的计算过程,利用计算机自动化求解

    • 计算思维基于计算机强大的算力及海量数据

    • 抽象计算过程,关注设计和构造,而非因果

    • 以计算机程序设计为实现的主要手段

    编程是将计算思维变成现实的手段

    image-20210228091956915


    2. 计算生态与Python语言

    开源思想深入演化和发展,形成了计算生态

    计算生态以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展、相互依存和迅速更迭中完成信息技术的更新换代,形成了技术的自我演化路径。

    计算生态没有顶层设计、以功能为单位、具备三个特点:

    • 竞争发展

    • 相互依存

    • 迅速更迭

    • 以开源项目为代表的大量第三方库

      • Python语言提供 >15万个第三方库
    • 库的建设经过野蛮生长和自然选择

    • 同一个功能,Python语言2个以上第三方库

    • 库之间相互关联使用,依存发展

      • Python库间广泛联系,逐级封装
    • 社区庞大,新技术更迭迅速

      • AlphaGo深度学习算法采用Python语言开源

    API != 生态

    创新:跟随创新、集成创新、原始创新

    • 加速科技类应用创新的重要支撑

    • 发展科技产品商业价值的重要模式

    • 国家科技体系安全和稳固的基础

    计算生态的运用

    刀耕火种 -> 站在巨人的肩膀上

    • 编程的起点不是算法而是系统

    • 编程如同搭积木,利用计算生态为主要模式

    • 编程的目标是快速解决问题

    推荐网站:https://python123.io/


    3. 用户体验与软件产品

    • 用户体验指用户对产品建立的主观感受和认识

    • 关心功能实现,更要关心用户体验,才能做出好产品

    • 编程只是手段,不是目的,程序最终为人类服务

    提高用户体验的方法

    方法1:进度展示

    • 如果程序需要计算时间,可能产生等待,请增加进度展示

    • 如果程序有若干步骤,需要提示用户,请增加进度展示

    • 如果程序可能存在大量次数的循环,请增加进度展示

    其他类方法

    • 打印输出:特定位置,输出程序运行的过程信息

    • 日志文件:对程序异常及用户使用进行定期记录

    • 帮助信息:给用户多种方式提供帮助信息

    从软件程序到软件产品,用户体验是程序到产品的关键环节


    4. 基本的程序设计模式

    从IPO开始…

    • I:Input 输入,程序的输入

    • P:Process 处理,程序的主要逻辑

    • O:Output 输出,程序的输出

    • 确定IPO:明确计算部分及功能边界

    • 编写程序:将计算求解的设计变成现实

    • 调试程序:确保程序按照正确逻辑能够正确运行

    当程序变得复杂时,需要采取高级的程序设计方法,如自顶向下设计。

    一个复杂的问题可以分解为若干个简单的问题,一个简单的问题又可分解为更简单的问题,直到所有的小模块都可以由程序确定的完成,这就是自顶向下的思路。

    image-20210228100642132

    模块化设计

    • 通过函数或对象封装将程序划分为模块及模块间的表达
    • 具体包括:主程序、子程序和子程序间关系
    • 分而治之:一种分而治之、分层抽象、体系化的设计思想

    在分模块的过程中我们需要知道什么叫做松耦合、什么叫做紧耦合

    如果功能之间有很多的交流,不能独立存在,我们就将它放到一个模块中,紧耦合的部分尽量不要单独成为模块。

    • 紧耦合:两个部分之间交流很多,无法独立存在
    • 松耦合:两个部分之间交流较少,可以独立存在
    • 模块内部紧耦合、模块之间松耦合

    配置化设计

    例如自动轨迹绘制实例,实例将程序中的数据和程序分离开。对一个程序来讲,我们将它的功能部分以程序引擎的方式来体现,而具体的轨迹的路线,我们以数据或以配置文件的形式来体现。这样我们就可以将一个程序变为引擎+配置文件的模式,这就是配置化设计。

    image-20210228101243720

    • 引擎+配置:程序执行和配置分离,将可选参数配置化
    • 将程序开发变成配置文件编写,扩展功能而不修改程序
    • 关键在于接口设计,清晰明了、灵活可扩展

    应用开发的四个步骤

    从应用需求到软件产品

    image-20210228101348863

    • 1 产品定义:对应用需求充分理解和明确定义

    • 产品定义,而不仅是功能定义,要考虑商业模式

    • 2 系统架构:以系统方式思考产品的技术实现

    • 系统架构,关注数据流、模块化、体系架构

    • 3 设计与实现:结合架构完成关键设计及系统实现

    • 结合可扩展性、灵活性等进行设计优化

    • 4 用户体验:从用户角度思考应用效果

    • 用户至上,体验优先,以用户为中心

  • 相关阅读:
    【ZJ选讲·压缩】
    【ZJ选讲·调整】
    【ZJ选讲·钻石游戏】
    【ZJ选讲·BZOJ 5073】
    【ZJ选讲·BZOJ 5071】
    【模拟赛·polyline】
    【BZOJ 2744 朋友圈】
    【BZOJ 2241 打地鼠】
    【CF edu 30 D. Merge Sort】
    【CF edu 30 C. Strange Game On Matrix】
  • 原文地址:https://www.cnblogs.com/keepcode/p/14459702.html
Copyright © 2011-2022 走看看