【信奥业余科普】C++ 的奇妙之旅 | 15:让机器不知疲倦的秘密——循环语句背后的底层逻辑
在上一篇文章中我们了解了if-else判断语句。依靠底层“程序计数器PC”的强制跳转功能程序能够在遇到分岔路口时做出各种方向选择。然而如果我们要让程序计算从 1 加到 1000 的和或者让程序连续处理百万个用户的数据光靠一次性的判断语句显然是不够的。这就是我们今天要探讨的话题计算机是如何完成成千上万次重复劳动的我们将跳出单纯的语法规则去看看循环结构Loops产生的设计初衷以及它在硬件底层的真实运作机制。写在前面的话这是一系列专为对信奥信息学奥赛感兴趣的中小学生及家长朋友们准备的科普文章。笔者受自身学识所限文中若存在不严谨之处还望各位读者指正。本系列文章往期回顾第一部分【计算机历史】系列文章合集共8篇第二部分 【C的奇妙之旅】【信奥业余科普】C 的奇妙之旅 | 10代码是如何运行的——编译过程与“Hello, World”【信奥业余科普】C 的奇妙之旅 | 11程序的处理核心——变量与常用数据类型【信奥业余科普】C 的奇妙之旅 | 12程序的交互与加工——数据的输入与算术运算【信奥业余科普】C 的奇妙之旅 | 13为什么 0.10.2≠0.3——解密“爆int”溢出与浮点数精度的底层原理【信奥业余科普】C 的奇妙之旅 | 14程序的分叉路口——逻辑判断与 if-else 语句一、 被逼出来的设计为什么我们需要循环想象一下如果你需要让计算机在屏幕上打印 10 次“你好”。在没有循环结构的时候你唯一的办法就是把std::cout 你好;这行代码老老实实地复制粘贴 10 遍。如果只是 10 次这似乎还能接受。但如果是 1 万次呢这里涉及到一个计算机早期的核心痛点内存空间极其昂贵。 在经典的冯·诺依曼架构下程序代码本身也是作为数据存储在内存里的。每一行程序指令都会占据宝贵的内存空间。如果为了重复执行某个动作就硬生生把代码复制 1 万次那么整个计算器的内存就会被这些完全相同的指令瞬间塞满。计算机科学家们意识到与其无意义地复制指令不如“重复利用”已经在内存里的指令。于是循环结构应运而生。它的设计初衷非常务实用最少的内存空间让 CPU 反复倒回去执行同一段代码。全文详见https://www.coderli.com/cs-basics-15-cpp-loops/https://www.coderli.com/cs-basics-15-cpp-loops/https://www.coderli.com/cs-basics-15-cpp-loops/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2563057.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!