第1章 程序点滴-1.4 开放性思维(1) 📅 发布时间:2026/7/5 13:12:42 👁️ 浏览次数: 要具备开放性思维就必须了解包括从CPU的执行方法到Windows平台的运转到你的程序的调试最后到你要实现的功能这一整套的内容只有做到这样才能真正提高。如果你的知识范围很窄什么也不了解纯粹只了解语言那你的思维就会很狭隘就会只想到这个语言有这个函数那个语言没有那个函数这个C有这个类那个语言没有这个类等。而真正要做一个系统思维一定要是全面的游离于平台之上的系统和实际的应用软件是不现实的。这种所谓理想化已经有很多人提出是不现实的。所以任何一个软件一定都是跟一个平台相关联的脱离平台之上的软件几乎都是不能用的。这就必须对平台的本身非常了解。如果你有平台这些方面的知识这样在思考一个问题的时候能马上想到操作系统能提供些什么功能我再需要做些什么然后就能达到这个目标。这就是一种开放的思维。在开放的思维下我要做这个程序的时候就会考虑怎么把它拆成几个独立的、分开的模块最简单的怎么把这个模块尽量能单独调用而不是我要做个很大的EXE程序。一个很普通的程序员如果他能够考虑到将程序分成好几个动态库那么它的思维就已经有点开放性了就已经不是MFC那些思维方式了。思考问题的时候能把它拆开就是说任何一个问题如果你能把它拆开来思考这就是简单的开放性思维。但光会拆还是不够的尽管有很多人连拆都不会。很多教科书中的程序要解决问题的时候就一个main以后就是一个非常长的函数。这个main函数把所有的事情都解决了。如果连函数都不会分的话则就是典型的封闭式思维。这样的人不是没有我是碰见过的。一些毕业生做的程序就有这种情况。所有的问题都由一个函数来解决。他就不会把它拆成几个模块。我问他把一件工作拆成几件模块不是更清晰吗他说拆出来后的模块执行会更慢些。这就是很明显的封闭式思维和非封闭式思维的区别。你看MFC的思路那就是一层套一层的要把所有的类都实现了然后继承。它从CWnd以后把所有的东西都包括进去了组成一个巨型的类。这个巨型的类连界面到实现统统包括在里面。这时你怎么拆根本就没有拆的方法这就是封闭式思维。如果一个系统、一个程序不能拆的话则它基本上是做不好的。因为任何一个程序如果它本身的复杂度越大它可能出错的几率就越大。比如最简单的哪个函数越大则该函数的出错几率就越大。但如果把该函数分成很多小的函数每个小的函数的出错几率就会很小那么组合起来的整个程序的出错几率就很小。这就是为什么要把它拆出来的原因。你用C来实现的方法也是一样的。你要把它拆成许多的接口如果能做到这样你就能把它独立起来甚至你能把它用动态库的方法去实现。动态库是现在的程序非常重要的一块。1.4.1 动态库的重要性有了动态库当你要改进某一项功能的时候你可以不动任何其他的地方只要改其中你拆出来的这一块。这一块是一个动态库然后把它改进只需要把这个动态库调试好后整个系统就可以进行升级。但如果不是这样你的整个程序是独立的文件然后另外的功能也是一个独立的文件把这个程序编译成一个EXE这就不是动态库的思想。按道理我只改这个文件其他系统也不需要进行调试。理论上看起来是一样的而实际的结果往往就是因为你改动了这个文件使得原来跑得很好的整个系统现在不能跑了或者出现了很奇怪的现象。如何解释这个问题事实上这就涉及到编译器产生代码的方法如果不了解这点的话永远找不出问题来。不存在没有BUG的编译器包括VC它也会产生编译上的问题。就算把这些问题都排除你的软件也可能因为你加了某些功能而影响了其他的文件这个几率甚至非常大。这又得把你以前的测试工作重头再来一遍了。动态库和EXE有什么不同呢动态库包括它的代码和数据都是独立的绝对不会跟其他的动态库串在一起。但是如果你把所有功能放到一个EXE的工程里面它的数据和代码就都是放到一起的最后产生可执行程序的时候就会互相干扰。而动态库就不会这是由操作系统来保证的。从理论上看动态库也是一个文件我做这个工程的时候也是一个独立的文件但它就会出现这样的问题。1.4.2 程序设计流程程序设计流程其实很简单。第一步就是要拆出模块如果你有开放性思维,则任何软件都非常容易设计。怎么设计呢首先拿到问题的时候一定要明确目标然后对操作系统所提供哪些功能程序怎么跟操作系统接口考虑清楚接着就是“砍”把它分开要把它拆成一个个的独立的模块最后再进一步去实现从小到大地进行设计。首先“抓”马上能进行测试的简单的模块就像刚才说的成对编码那样写任何一个部分都要进行调试每个部分最好能独立进行调试。这样每个部分都是分开的时候它都有一定的功能。当把所要做的功能都实现后组合起来再进行通调就可以了。决定一个软件的成败还是得看该软件设计的思维是否正确。我们也试过即使你把那些所谓的软件写得再明白也没有用如果实现这个软件的思路不对则下面的工作根本就没有必要。做软件时一定要把注释写进去。这样写成的软件如果要改版的话就很容易因为你的整个系统是开放性的那么你要增强某些功能的时候都是针对其中的某个小项做改进只要改它就是了。如果那个功能是全新的则它本身就是一个独立块只要去做即可。现在很多开发工具都提供了自动化设计的功能在生成新的程序的时候只要设置好一些条件就能自动产生程序的框架这是一种趋势吗其实这种方法不太适用通用软件的开发针对某个公司做个ERP系统可能会管用但是那些方法拿不到通用软件里面来。通用软件绝对是一行一行地编码产生出来的而且每一行编码的结果要达到一种可预测性。什么叫可预测性就是你写程序的时候如果发现某一种症状马上就能想到该症状是由于哪个地方出了错而不是别的地方也就是从症状就能判断出是哪些代码产生了问题这就是可预测性。如果你用MFC来“玩”的话即使它出错了你也可能不知道错误在哪里它的可预测性就很差。做软件时如果它的可预测性越高解决问题的方法就越快。如果某用户说我出现什么状况了你马上就可以断定错误而不用去搜索源代码就能想到程序可能是什么地方有问题则这就是可预测性。
[深度学习网络从入门到入土] 使用块的网络VGG [深度学习网络从入门到入土] 使用块的网络VGG 个人导航 知乎:https://www.zhihu.com/people/byzh_rc CSDN:https://blog.csdn.net/qq_54636039 注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码 参考文章… 2026/5/17 4:50:26
前后端分离火锅店管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程 摘要 随着餐饮行业的数字化转型加速,火锅店作为中式餐饮的重要分支,面临管理效率低下、数据孤岛严重、顾客体验不足等痛点。传统单机版管理系统难以满足多终端协同、实时数据分析、会员精准营销等现代化需求。本研究聚焦于前后端分离架构在火锅店管理系统… 2026/5/17 4:50:26
【读论文】Agent复杂任务大开销的解法:Unsupervised Hierarchical Skill Discovery 一. 引言:强化学习的“长程”困境与 HiSD 的破局 在强化学习(RL)领域,尤其是面对 Minecraft 或 Craftax 这样高维、长视距(Long-Horizon)的任务时,智能体往往面临着巨大的探索难题。人类解决复杂问题时,不会思考每一毫秒肌肉如何收缩(Primitive Actions),而是基于“… 2026/5/17 4:50:24
Havenlon 不是审批系统,也不是风控系统 AI 时代,执行正在脱离决策,而没有人守住"是否真的发生"这一层。摘要面对一个高风险动作,人们通常问两个问题:该不该做(审批),危不危险(风控)。这两个问题都很重… 2026/7/5 13:12:06
ICM-42688-P与PIC18F25K80在运动控制与振动监测中的应用 1. ICM-42688-P与PIC18F25K80的黄金组合解析在运动控制和振动监测领域,传感器与微控制器的选型往往决定了整个系统的性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS运动传感器,搭配Microchip的PIC18F25K80这款经典8位MCU,形成了一个极… 2026/7/5 13:12:06
少走弯路:2026年刚需首选的专业降AIGC软件 2026年论文降AI率工具已从“基础改写”升级为智能合规优化系统,核心评价维度包括文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规性与多语种适配能力。本次测评覆盖6款主流工具,涵盖中文与英文、全流程与专项功能、免费与付费版本,让… 2026/7/5 13:08:05
CompressO:一款能释放90%存储空间的智能视频图片压缩工具 CompressO:一款能释放90%存储空间的智能视频图片压缩工具 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compress… 2026/7/5 13:06:05
PCB湿制程/PCB设备定制/PCB水平线设备/PCB水平蚀刻生产线公司国内优选 本文旨在梳理2026年国内PCB设备相关市场的主流品质公司,分析行业发展动态与竞争特色。PCB设备作为电子信息产业重要的生产基础支撑,其性能直接关联线路板生产效率、产品精度与制造质量,对整个电子产业链的升级发展有着重要影响。随着国内电子… 2026/7/5 13:06:05
程序员就业:换个角度,把工具链跑成稳定流程 如果你正准备往大模型方向转,《程序员就业:2026 年还能靠什么拿到,从问题拆解到交付验证》这类问题别只看热度。更重要的是判断自己该补哪块能力,以及怎么证明你真的会。摘要这篇面向准备找工作、跳槽或转型的程序员,但… 2026/7/5 13:06:05
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36