志玲姐姐与程序运行杂谈

2024-01-14 14:48

本文主要是介绍志玲姐姐与程序运行杂谈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

进入公司后,小牧开始进行了一些业务的研发工作。在校期间,他已经能够利用现有的框架进行编码了,比如他擅长的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公司,开始自己的程序人生之路。

这篇关于志玲姐姐与程序运行杂谈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605541

相关文章

认知杂谈52

今天分享 有人说的一段争议性的话 I I 1拓展人脉很重要** 咱们活在这世上啊,得明白一件事儿,知识、逻辑能力和实战经验虽然重要,但确实都不是最关键的。真正关键的是要懂得怎么和那些手里有资源的人打交道。人脉那可真是一笔无形的大财富呢。你想想看,有时候一个有影响力的人帮你一把,那效果可比你累死累活干一年都强得多。 I I 就比如说,你要是认识个行业里的大牛,他可能给你介绍个特别好的工

认知杂谈54

I I 内容摘要: 这篇内容主要有以下几个要点:首先,沟通不在一个调时可学习人际交往心理学知识、线上课程及关注名师来改善。其次,挑房子、工作、搭档和人生伴侣要谨慎,找心灵相通能共同进步的人。再者,远离负能量的人,多跟积极向上的人相处攒正能量。然后,人生如爬山,要专注自身步伐,不与他人比较,坚持目标,可通过看《微习惯》、用专注 APP、参加训练营提升专注力和自律能力。此外,别瞎操心他人,每个人有自

一个C++程序运行,从点击运行到控制台打印文本,电脑硬件的资源是如何调动的

当点击运行一个 C++ 程序并看到控制台输出文本时,计算机硬件和操作系统之间协同工作,完成了多个步骤。这些步骤涉及 CPU、内存、存储设备、操作系统和输入输出设备的共同作用。下面是一个详细的过程描述: 1. 程序加载 启动:当你点击运行一个可执行文件时,操作系统(通常是 Windows、Linux 或 macOS)的文件系统管理器识别请求,并启动加载程序。读取可执行文件:加载程序将可执行文件从

杂谈:再次写给我们这些浮躁的程序员

再次写给我们这些浮躁的程序员     多做项目,多思考 不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户。 当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作,那真的很杯具,因为他认为你还不能胜任工作或者你的加入会让项目组更糟。 还有人说,我刚进公司,公司就把我当成了苦工,工资又低,项目组加入好几个,也做

maven项目中程序运行编译的时候出现:编码GBK的不可映射字符

由于JDK是国际版的,我们在用javac.exe编译时,编译程序首先会获得我们操作系统默认采用的编码格式(也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格

认知杂谈47

今天分享 有人说的一段争议性的话 I I 一、价值观是否契合 价值观那可是两个人能不能长久在一起的重要根基。要是价值观差得太多,在好多大事上肯定容易闹矛盾、起冲突。 I I 人生目标是否一致:就比如说,一方就想过那种安安稳稳、平平淡淡的日子,每天按部就班地朝九晚五,能有更多时间陪陪家人。可另一方呢,一门心思追求事业上的大成功,为了工作啥个人时间都舍得牺牲。要是两个人在人生目标上差这么大,

#杂谈#TestDeploy,期待突破性的IDEA

近一个月有点疯狂,一口气将TestDeploy更新了好几个版本,搞了不少优化和增加一些有用的功能,中间还出了一些小插曲。这些更新版本中,变化比较大的是v2.3.0和v2.5.0。 v2.3.0主要搞了日志规范化管理、镜像源优化和Pipeline脚本。国内镜像源,由于莫名原因,很多都用不了了,连阿里云镜像源也不例外,所以特意去搞了几个,在v2.6.0还支持了私库。新增Pipeline脚本,以前的版

认知杂谈36

今天分享 有人说的一段争议性的话 《爷们儿,高手避坑指南》 嘿,爷们儿!人生处处有陷阱,稍不留意就可能让你的人生轨迹严重跑偏。 I 今天咱就从高手的视角聊聊这些硬派的人生感悟,这可都是无数前辈爷们用血汗换来的教训。 I 咱分享给你,就是希望你能避开那些坑,让你的黄金岁月走在正道上,闪闪发光。 I 要知道,男人的青春无比珍贵,是在烂泥里挣扎还是在康庄大道上飞驰,结果天差地别。 I 就像有的陷

认知杂谈34

今天分享 有人说的一段争议性的话 I 环境的影响 I 首先得说说,环境这东西对人的影响真不是盖的。你要是老待在一个死气沉沉的地方,那你的激情和梦想,可能慢慢就会被磨得平平无奇。 I 激情的消逝 I 本来你可能是满怀激情,想要大干一场,但时间一长,那些日常的琐事就像小浪花一样,慢慢把你的激情拍散了。 I 生活的妥协 I 然后你可能就觉得,生活嘛,不就是得过且过,吃喝玩乐,遇到问题就随便应付一下

互联网杂谈

专业人士解读:为什么在中国“公有云”落地那么难? [url]http://www.oschina.net/news/35162/why-public-cloud-is-difficult-in-china[/url] 云领域:且看亚马逊、Rackspace、微软及谷歌四国争霸 [url]http://www.csdn.net/article/2012-12-06/2812559-ar