Computer-System Structures八大思想

简介: 编程指北-公众号的一段话很有感触:编译原理遇见算法

David Wheeler

All problems in computer science can be solved by another level of indirection

“计算机科学中遇到的所有问题都可通过增加一层抽象来解决”


侯捷老师所言:「学习需要明师。但是明师可遇不可求,所以退而求其次你需要好书,并尽早建立自修的基础。迷时师渡,悟了自渡,寻好书看好书,就是你的自渡法门。」


《计算机组成原理:硬件/软件接口》书中说的计算机系统结构的八个伟大思想:

image.png

看某篇拿了一堆offer的大佬说:

后面学习不论是计算机网络,还是操作系统,都对这几个思想印象深刻,感觉都是这几个思想的具体化实现,类似于 cache 或者 Redis 这样的技术,我认为实际上就是利用了加速大概率事件,和存储器层次的思想去进行设计和加速


编程指北-公众号的一段话很有感触:

编译原理遇见算法

当你学完有限状态机以后,你会发现以前觉得很牛逼正则表达式似乎自己也能用 DFA、NFA 实现一下了。状态机的思想在编程中很多地方都用得上。


比如解析 HTTP 协议,如果没学过状态机思想,你可能会一行行的 if/else 去做解析,这里最麻烦的地方在于,if/else 需要提前将 HTTP 头部字段都接收到再来判断,而我们知道 HTTP 基于 TCP,而 TCP 是流式传输,所以你很有可能是几个字符一组组接收到的,这个时候用 if/else 写出来就很难看了。


而用状态机编写起来代码就会非常优雅。状态的转移是由规则驱动的,接收到一个字符就判断一个,非常的方便。


继续学完语法分析,你会掌握递归下降分析这样非常重要的思想,你可以使用递归下降快速的实现四则运算计算器。


如果不用递归下降你可能需要先中缀表达式转后缀,然后求值,这是我们大一数据结构课写的,当时用栈写的,有点麻烦。后来学完编译原理,又用递归下降重写了一遍,区区几十行代码遍搞定。


还有一类场景在实际开发中的用的很多,比如淘宝、京东这样的电商,它们的营销规则有很多,比如满减、直减、跨店等等,这样的规则是不可能写死在代码里的。


那是怎么做的呢?


一般会实现一个配置系统,并设计一个DSL(领域特定语言)来表达这些规则,将规则直接配置到系统中,这样可以非常方便的修改,那么如何在代码里去解析 DSL 定义的规则呢?这就需要为 DSL 写一个语法解析器,这里就会用到语法分析的方法。


DSL(Domain Specific Language),它是一种用于某个特定领域的程序设计语言。这种特定于某个领域是相对于 C、C++、Python 这种通用语言而言的,通用语言可以在各个领域使用,我们熟悉的大多数程序设计语言都是通用语言,它们都是图灵完备的。


像我们平常经常使用的 JSON、SQL、HTML 这些都算是一种 DSL,你甚至可以尝试用递归下降去写一个 JSON、XML 解析器,这比写电商网站更有价值的。


继续往下学你会了解到抽象语法树 AST 如何生成、如何转化为中间代码、如何对中间代码优化、最终又是怎么生成机器指令的。


你会看到贪心算法在寄存器分配中的应用,也会看到图论中的可达性分析又是如何实现死代码消除。


相关文章
|
人工智能 搜索推荐 算法
详解七大排序算法
详解七大排序算法
248 0
|
7月前
|
数据采集 人工智能 自然语言处理
通义灵码支持 Qwen3-Coder,带你玩转 Agentic Coding,免费不限量
欢迎大家在通义灵码里免费体验最新 Qwen3-Coder 模型,一起 AI Coding。
|
物联网
Chirpstack配合网关与lora设备通信
这篇文章详细介绍了如何配置Chirpstack与LoRa网关及设备进行通信,并设置设备上报数据的流程,以便实现LoRaWAN网络的数据传输功能。
967 1
|
机器学习/深度学习 算法 物联网
LoRA+:优化模型微调的新方案
【2月更文挑战第17天】LoRA+:优化模型微调的新方案
959 1
LoRA+:优化模型微调的新方案
|
安全 Android开发 iOS开发
《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(8)-Fiddler如何设置捕获会话
【2月更文挑战第9天】《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(8)-Fiddler如何设置捕获会话
169 5
|
关系型数据库 MySQL 数据安全/隐私保护
k3s(2)
k3s(2)
179 0
|
网络协议 网络安全 Windows
通过安装cpolar内网穿透在Kali上实现SSH远程连接的步骤指南(下)
通过安装cpolar内网穿透在Kali上实现SSH远程连接的步骤指南(下)
377 0
|
物联网 5G
《看见新力量第四期》电子版下载
由阿里云创新中心出品的《看见新力量》栏目,在过去一年,不断地记录正在发生的创业故事,本期栏目我们采访了15位在数字经济、5G、物联网赛道涌现出的新生力量,这些企业从阿里云主办的创业大赛的上千家参赛企业中脱颖而出,用创业者的视角带我们走进他们的企业,了解技术与商业上的创新,讲述他们创业路上的酸甜苦辣,坚定地相信通过技术创新可以为社会带来更多的价值。
102 0
《看见新力量第四期》电子版下载
|
编解码 Linux 芯片
linux LCD 驱动框架分析
linux LCD 驱动框架分析
367 0
计算器(简易版)
另一种是利用转移表的方式来写,将各个函数的地址存放在一个函数指针数组里面,当要使用函数时,就直接调用指针即可,可以改观上面的美观(上面的代码有很多重复的,太挫了)
149 0

热门文章

最新文章