志玲姐姐与程序运行杂谈

进入公司后,小牧开始进行了一些业务的研发工作。在校期间,他已经能够利用现有的框架进行编码了,比如他擅长的Spring来写java,用flask写个简单的python web等。但是他心里一直有一个疑惑:

“我读了7年的计算机专业,学了很多基础知识,可是现在在公司工作,每天就写了简单的业务逻辑代码,那我学那么多什么编译原理操作系统的,有啥用呢?”

今天午饭的时候,小牧趁着午饭间隙,和前辈聊起了这件事情。前辈笑了一下:年轻人,你要多学会思考。你说的那些,实际上也就是我们所说的计算机的基础知识。我可以给你聊聊我们写代码的和这些基础知识有啥联系。


我们聊计算机,首先可以聊一聊计算机的组成。
计算机根据冯诺伊曼体系划分呢,可以划分为运算、控制、存储、IO。我们可以把计算机系统画成图1的结构。
这里写图片描述

                          图1 计算机组成结构

在这张图中,有运算器机器,纯粹做基本运算的组件。控制器,也就是志玲姐姐管理员。高速缓存桌子,内存书柜,外存仓库,IO接待窗口。图中的浅蓝色文件就是我们要运行的程序。勤劳的志玲姐姐会帮我们处理文件,也就是运行我们提交给系统的程序的。我们分别介绍一下各个部分。

  • 外存仓库
    由于程序太多,志玲姐姐建了一个仓库用来存放各种大量的数据。

  • IO接待处
    志玲姐姐不仅要处理从仓库取出来的任务,还需要到办事接待窗口去接待过来提交程序的程序员。办事窗口可以与外界进行交互。

  • 内存文件柜
    当志玲姐姐在外面拿了很多程序后,会将程序(文件)存放在房间里的内存文件柜放着,然后慢慢从书柜上面取出文件来处理。不同的文件柜,可能摆放的顺序不一样,柜上的编号不一样。如果文件柜里没有志玲姐姐需要的文件的话,那她就会去仓库取,或者等窗口有人送文件过来。

  • 高速缓存桌
    每次都要起身去文件柜拿文件太麻烦了,所以志玲姐姐有一个办公桌。她把文件先从柜子里取出一些来放到桌子上,要处理的时候就直接从桌子上取。但是显然桌子上放不下太多东西,只能放一部分。

所以,志玲姐姐就在有条不紊地从仓库呀、桌子呀、书柜上呀、窗口呀等去取文件来处理。

其实上面还有很多细节的部分,比如说志玲姐姐会取什么样的文件放到书柜,书柜里的文件如何 维护,桌子上的文件又应该放哪些等,都涉及到很多策略和知识。时间有限,这里我就不展开讲了。

其实呢,我们只有知道了志玲姐姐的习惯、喜好、风格,才能追到女神,不对,才能运行好程序。我们程序员设计程序,要让程序准确、高性能去运行,那么就要让志林姐姐更加高效准确地帮我们处理“文件”。这里我们举几个例子。

志玲姐姐在帮我们把文件投入运算器时,按照什么顺序去投呢?如果几个文件之间有依赖顺序,比如得先执行A,再执行B,那么就只能按照先A再B的顺序执行。但如果AB之间没有关联,那么就可以同时把A、B塞进机器(在机器可允许的容量范围之内)处理。这样显然是会加快处理效率的。因此对于程序设计来讲,知道了处理器的指令级并行机制,可以加快程序的运行效率。

对于高速缓存桌,加入志玲姐姐要处理的文件就在桌上,那么伸手就拿到了。如果没有的话,还得起身去书柜去找,书柜没有,就得出门去仓库或者窗口去要。这样时间显然就会浪费很多。因此我们希望志玲姐姐尽量不要起来,尽量多地优雅坐在桌前伸手处理桌上的,这样也会提供她的效率。这也就是我们的缓存命中率,我们需要尽量提高缓存命中率。如何提供?如果在设计程序时,尽量保证时间局部性和空间局部性,那么就能提高效率。那什么是局部性?举例来讲,志玲姐姐一般认为如果现在需要用到文件A1,那么和文件A1挨着放在一起的文件A2可能也会用到,那就一起取过来吧。如果下次刚好用到了A2,那么就可以直接用了。我们的程序要尽量提高局部性设计。

此外,比如你心疼志玲姐姐,那么就希望她能简单工作。如果她一会儿处理A,接着又去处理B,一会儿有C……就很折腾,因为她在切换处理的工作时需要做很多操作,比如假如A还没处理完,就得先把A的状态保持一下。尽量减少点调用,减少她处理文件的类别,那么也是一个提高效率的机制,也就是减少函数调用。

其实还有很多方法,不管怎么说,我们只有了解了整个处理过程,各个组件的属性,这样才能设计出“面向志玲姐姐”的程序。因此这也是我们学习计算机组成的各个部分的原因。

但是,对于大多数理工直男来讲,追志玲姐姐太困难,不知道志玲姐姐的喜好。并且如果每个人都去了解的话,那就太麻烦了。所以现在有很多编译器,会先帮我们的程序进行“面向志玲姐姐”优化,然后再把任务提交给志玲姐姐。但是编译器毕竟优化有限,并不是全能的,我们还是需要掌握优化设计的方法。因此,去看汇编,看看编译器帮我们如何优化程序的;去看处理器,了解他的分支预测方式,让他预测更准……

“所以,年轻人,你还有很长的路要走呀。”


小牧简历:
中国科学院软件研究所硕士毕业生,作为初入职场的菜鸟进入B公司,开始自己的程序人生之路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 智慧社区背景与挑战 随着城市化的快速发展,社区面临健康、安全、邻里关系和服务质量等多方面的挑战。华为技术有限公司提出智慧社区解决方案,旨在通过先进的数字化技术应对这些问题,提升城市社区的生活质量。 2. 技术推动智慧社区发展 技术进步,特别是数字化、无线化、移动化和物联化,为城市社区的智慧化提供了可能。这些技术的应用不仅提高了社区的运行效率,也增强了居民的便利性和安全性。 3. 智慧社区的核心价值 智慧社区承载了智慧城市的核心价值,通过全面信息化处理,实现对城市各个方面的数字网络化管理、服务与决策功能,从而提升社会服务效率,整合社会服务资源。 4. 多层次、全方位的智慧社区服务 智慧社区通过构建和谐、温情、平安和健康四大社区模块,满足社区居民的多层次需求。这些服务模块包括社区医疗、安全监控、情感沟通和健康监测等。 5. 智慧社区技术框架 智慧社区技术框架强调统一平台的建设,设立数据中心,构建基础网络,并通过分层建设,实现平台能力及应用的可持续成长和扩展。 6. 感知统一平台与服务方案 感知统一平台是智慧社区的关键组成部分,通过统一的RFID身份识别和信息管理,实现社区服务的智能化和便捷化。同时,提供社区内外监控、紧急救助服务和便民服务等。 7. 健康社区的构建 健康社区模块专注于为居民提供健康管理服务,通过整合医疗资源和居民接入,实现远程医疗、慢性病管理和紧急救助等功能,推动医疗模式从治疗向预防转变。 8. 平安社区的安全保障 平安社区通过闭路电视监控、防盗报警和紧急求助等技术,保障社区居民的人身和财产安全,实现社区环境的实时监控和智能分析。 9. 温情社区的情感沟通 温情社区着重于建立社区居民间的情感联系,通过组织社区活动、一键呼叫服务和互帮互助平台,增强邻里间的交流和互助。 10. 和谐社区的资源整合 和谐社区作为社会资源的整合协调者,通过统一接入和身份识别,实现社区信息和服务的便捷获取,提升居民生活质量,促进社区和谐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值