Any problem in computer science can be solved with another layer of indirection
2015-03-25 15:57
537 查看
Any
problem in computer science can be solved with another layer of indirection. --by a predecessor of computer science.
中文译文:“任何计算机科学领域的问题都能通过增加一个间接的应用层来解决。”(不要吐槽俺的翻译能力![](https://oscdn.geek-share.com/Uploads/Images/Content/201705/40da226498c84c92e2ee7e86a0b4fd72.gif)
)
相信有几年编程经历的朋友都听说过这句话,原文出处已经无法核实。所以我用了“一位计算机科学领域的前辈”这样的称呼来给这句话找一位作者。
这句话很久以前就听说过,当时我刚接触计算机相关学科,还在学习《计算机组成原理》、《C语言程序设计》、《汇编语言》这些基础课程。当时对这句话的理解很浅(大家不要误以为我现在理解的多深似的
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/899229cfab2c02d614490485cabb781b.gif)
),也没太多的认真思考说这句话的前辈的良苦用心。
就这样过了几年,学了不少计算机软硬件方面的知识。特别是学习了《计算机体系结构》这门课,使我对这句话的理解又进一步加深了许多。前几天刚好一个朋友来找我,这位朋友是做闪存(flash)的,聊到一个问题的时候我随机一口不算流利的英语把这位朋友给惊醒了。他说:可不是嘛!在CPU和硬盘中间何止是一个应用层呀。他的理解很正确,像Cache、RAM都是这样的一个间接的中间层。这个观念最近对我理解计算机学科越来越有益处。
再举个例子:熟悉RTOS的朋友应该知道一个概念"板级支持包"(Board
support Package,BSP)。板级支持包是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。就是这么一个承上启下的中间层,好处多多。它可以实现OS对底层的一个封装,让用户在不同的MCU平台下使用时不用花精力去关注不同的处理器对寄存器的实现方式。有一款RTOS叫做eCos,是用C++实现的。这可不多见,据我了解的大多数的RTOS都是使用C语言编写。eCos的BSP就做的非常好,它针对市面上的多种架构的MCU设计了不同的BSP(基于ARM、MIPS、PowerPC、x86、DSP等)。这样就极大的方便了用户,因为RTOS的用户经常面对的最头疼的一件事情就是平台移植,往往在第一步就把不少用户挡在门槛以外。这就是许多的RTOS使用者太少的最直接原因。
在计算机硬件领域还有一个非常有名的定律:摩尔定律。多年来对计算机硬件的发展同样起到了极大的推动作用。
牛顿曾经说过自己只不过是站在了前人们的肩膀上,所以才能看的更远一些。那么让我们也站在前人们的肩膀上登高而呼吧。
向各行各业的前辈们致敬!
2015.3.25
相关文章推荐
- Any problem in computer science can be solved with another layer of indirection
- Any problem in computer science can be solved with another layer of indirection
- Great Ideas in Computer Science with Java
- How one VBA project can use an object declared in the class module of another project
- convert doc with images in to wiki format can only be on linux
- wireshark:no interface can be used for capturing in this system with the current configuration
- there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
- VB6:关于“Only public user defined types defined in public object modules can be used as parameters or return types for public procedures of class modules or as fields of public user defined types.”的编译错误
- Only one expression can be specified in the select list when the subquery is not introduced with(求助)
- How to solve the problem "A project with an Output Type of Class Library cannot be started directly "
- wireshark:no interface can be used for capturing in this system with the current configuration
- msyql同步的时候报错 : 错误代码: 1293 Incorrect table definition;there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
- Question #8: Given the code below, the variable y can be accessed in which blocks of code?
- This may be due to a corruption of the heap, which indicates a bug in *.exe or any of the DLLs it has loaded.
- Only one expression can be specified in the select list when the subquery is not introduced with EXI
- Can I open Explorer in the C:\ drive instead of the My Computer view?
- TF80012: The document cannot be opened because there is a problem with the installation of the Microsoft Visual Studio v
- What is Viewstate? Can any object be stored in a Viewstate? (整理)
- Can we call the Method of a controller from another controller in asp.net MVC?
- Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server.