zoukankan      html  css  js  c++  java
  • 编程漫谈(十五):编程与软件开发

    编程是一件很纯粹的事情。

    编程要解决的问题是: 组合一系列指令,能完成指定的单个功能单元。编程的基础功底是:数据结构、算法、操作系统、编程语言。想要明白编程究竟是什么,强烈推荐阅读《编程珠玑》和《程序设计实践》。编程的进阶课程是: 编译器、数据库、计算网络。

    编程要考虑的问题是:

    1. 在正常场景下, 预期输入是什么,预期输出是什么;
    2. 在可预见的错误情况下, 输入是什么,预期输出是什么;
    3. 在不可预见的异常情况下,程序是否可以有效应对,输出合理的关键信息。
    4. 在大数据量的情况下,程序跑得多快,占用多少资源?
    5. 程序实现的优势是什么,不足是什么? 是否有其他方案设想? 每种设想有什么障碍?

    编程的精要是结构、算法与表达。对于大部分问题,设计适合的组合结构,在组合结构的基础上设计一系列操作和算法来实现指定目标,最后通过具体的编程语言、库来表达和实现。广义的结构包括数据结构和通信协议,数据结构包括容器结构如List,Map,Tree、对象结构、记录型结构如Mysql、 非关系型结构如Redis, ES, Hbase等以及众结构之组合嵌套; 算法是一个分析和设计的过程,是完成指定功能所需要的思路、流程、步骤、数据构造与处理,而表达则是借助编程语言提供的特性及开发库来实现算法,并处理其中的细节。

    确定结构与算法后,表达最重要的是细节、耐心与细心。推敲各种正常、异常、大数据量场景下程序的应对策略和反应输出,耐心调试,细心测试。


    软件则是编程与工程的混合体。

    软件要解决的问题是: 组合、兼容和测试多个功能单元,构建、验证和发布能够与现实活动紧密配合的多项关联操作的有机实体。

    软件要考虑的问题是:

    1. 合理优雅地封装与设计;
    2. 快速有效地复用和组合;
    3. 持续稳定地服务和增强;
    4. 应对现实需求的多样化、大数据流量或峰值流量、不稳定的环境波动;
    5. 避免明显和严重的BUG,保护客户的数据和应用安全。

    加分项: 写作分享、代码质量、Linux、设计模式与案例。

    对于软件开发而言,即使开发迭代过程中有持续重构保驾护航,初期的整体设计是非常重要的。缺乏初期的整体设计,很快功能就会横七竖八地堆砌起来,到一定程度时,兼容起来会异常困难而且容易出BUG。


    编程和软件开发的中心议题都是数据及数据结构的处理,侧重点不同。

    对于编程来说,数据是纯粹的数值和字符串。适当地建模,将不同性质的数据组织成合理的结构并设计算法高效地处理,这就是编程的视角。编程侧重问题求解,侧重构造,是软件开发的基础构件。

    对于软件来说,数据必然要带上业务属性,软件必须考虑业务属性的敏感性并作出特别的处理。比如资金和订单,就是不同业务属性的数据,而资金更加敏感。数据敏感性来源于现实世界的生存压力和文化约束。

    软件开发特别要注重整体和宏观设计,考虑模块之间的良性连接、组合和可维护、可扩展性。 软件是无形之建筑的设计与实现。


    从更统一的角度来看编程和软件开发,两者都是关于逻辑结构设计与实现的技艺。数据的结构,配置的结构,算法的结构,指令的结构,控制的结构。结构有大有小,本质却是一样的:

    更像堆积木,需要理解和熟悉现有设计好的或日新月异的积木,设计新的积木。积木无论大小。好的积木稳固健壮,有更好的槽口设计,能够更容易地与其他积木组合拼接成完整多样的形状。积木就是组件,一切逻辑均被组件化,通过组件构建商业服务。任何逻辑都应尽可能分解为可复用逻辑组件和定制逻辑。

    对于要组件化的逻辑,问题是: 它应当且仅应当关注什么?


  • 相关阅读:
    表的相关操作
    存储引擎介绍
    库的相关操作
    初始数据库
    linux版本的mysql安装
    mysql在windows上的安装即配置
    线程实际操作篇
    用户模板和用户场景
    顶会热词统计
    移动端疫情展示
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/6793099.html
Copyright © 2011-2022 走看看