标签:
转载请注明出处: http://blog.csdn.net/j123kaishichufa/article/details/47400175
这段时间,一直在看《深入理解计算机系统》。渐渐发现爱不释手,欲罢不能。有种相见恨晚的感觉。这使得自己回首自己本科时候,为什么总觉得入不了计算机的门?这本书也促使自己思考一下 计算机专业到底学什么,为什么要学这些?有什么联系?
本人2007年入学本科,专业计算机,当时就读于一所211学校。 可能有些人在本科或者研究生期间已经接触到了这本书,那恭喜你,有本好书指引你了解计算机,了解计算机专业。很尴尬,我是今年才接触到这本书,自己太弱了。回首本科时候所学的一些计算机课程,恍然觉得那些年虚度光阴,4年的本科时光,一直不知道为什么学校安排这些课程;本科都毕业了,也还是对于本专业没入门。 如果当时能有人指引推荐一些好书,或者有老师能够简单介绍计算机专业,那该多好。 也许也是我自身原因,一直都是所谓的好学生,却不知道如何去寻觅经典有价值的书籍。
这篇博客不是技术博客。写的目的是, 希望那些当年和我一样迷茫,入不了门的计算机专业本科生,能够对自己所学专业一层一层有个系统的认识。(因为我觉得自己当时入不了门,就是因为缺乏系统的认识)只有你系统的了解了, 你才能体会到学校安排的专业课程的有用之处,才能将一些抽象难懂的计算机知识与实际联系起来,才会真正理解,真正将书本上的知识转换为自己的知识。 而这些基本的知识,正是以后继续搞计算机专业的根基。没有根基,何谈你是计算机专业的?
------------------------------------------------------------------------------------------------------------------------
以我们学校举例吧。 计算机专业的学生, (课程大概包含这些,不过也有其他的)大一课程是 高数,线性代数,物理,英语, C语言程序设计等。 大二课程 数据结构, 微机原理,C++程序设计,数字电路,模拟电路。 大三,汇编语言,计算机组成原理,计算机系统结构,编译原理, JAVA。 大四, 计算机网络,操作系统,图形学,模式识别等等。 这些课程安排都有一定的道理,之所以称学校称这些课程为必需专业课,基础课,都是有原因的。 有经验的人,或者已经毕业的人就可以看出来, 从大一到大四,课程学习是有规律的: 从计算机专业的角度来看,是从抽象层次到具体层次;从简单高层到复杂底层; 从普适层次到领域层次(如下图)。
这样安排的计算机课程(知识)体系,很有助于本科生简单的入门:
Step1: 学习C语言程序设计时,一个简单的程序就可以得出我们想要的结果,很神奇吧。 “第一次”接触计算机,就可以编程出一个程序,对于大一学生来说,不可思议。只是简单的知道计算机就是用来执行一些些程序的。那么程序是什么?
程序 = 数据 + 算法。 在初级阶段,所用到的算法只不过是数学上的基本运算,数据可以是数学意义上的整数,但除此之外,还有抽象意义上的抽象数据类型。如何组织数据,使得我们的C程序写的更加高大上,使得程序能够执行更加复杂的任务? 那么数据结构课程就来了。
Step2: 学习了C语言程序设计和数据结构,我们已经开始学会编程了。 可是我们仍然一头雾水,为什么计算机能够优雅的运行我们的程序? 我们只是在抽象层次上会写程序,但是根本想不清楚物理层面上,也就是实际上的一台计算机机器如何做到这些?那么我们可以想一想,一个C语言程序在让计算机运行之前做了什么?
对于一个C源程序,得先编译为汇编语言,然后通过汇编器转换为机器语言。机器语言是由0、1二进制代码组成的,而计算机是一条电子机器,它只能识别0 1代码,因此需要将C语言进行编译,汇编,转换成机器语言,计算机才可以识别并执行这个。 从C语言到机器语言(0 1 代码组成),这个过程到底是什么,那么汇编语言 + 编译原理(编译器)会告诉你。
到了这一步,我们是不是觉得对一个C程序,再也不觉得很抽象,很飘渺了, 好像稍微了具体了点吧。
Step3: 问题又来了。 计算机识别 0 1 代码,也就是机器语言 ,那计算机如何运行这行0 1 代码,他怎么知道0 1 代码的意义, 怎么去执行想要的运算。 这涉及到计算机物理硬件的设计,也涉及到处理器指令系统了。 计算机物理硬件方面,计算机的核心芯片上面有很多电路,这些硬件方面的知识,数字电路和模拟电路这两门知识会告诉你。 等了解了这些,你就会知道所有的运算,数据传输都是通过硬件实打实做的。 可是计算机硬件很复杂,有真么多电路,还有存储数据的东西,好零碎啊。 那么别担心,计算机组成原理,计算机体系结构会把这些零碎的东西整合起来,告诉你一个整体的逻辑,会告诉你,计算机如何存取一条01 组成的机器指令或者数据,识别出指令的功能,并将将它传输到计算机的计算处理单元,进行计算,并将结果输出。
Step4: 有了这些知识,我们大概可以具体想象的到:一个C语言程序到最终运行得出我们想要的结果,这中间经历了哪些过程和坎坷。 对于抽象的一个程序,我们可以具体的理解它了,不是吗?
现在我们可以随心所用的写我们的程序了。 可是我们的程序是直接使用硬件的吗。 如果直接使用计算机硬件资源,如果我们写错程序了,机器不就坏了吗。 别担心,有操作系统在。 我们写的程序(用户程序)并不是直接去使用机器的硬件资源,那样的话,他不安全了吧,也太麻烦了吧。 操作系统位于硬件和我们的程序之间,它复杂直接去管理硬件资源。我们的程序通过操作系统,去使用硬件资源(比如存储资源等)。当然操作系统还有其他的功能, 总体来说,有了操作系统,我们写程序更加方便了,不需要在程序中指定到底用哪一个存储单元,也就是写程序一般可以不用顾忌我的计算机硬件长啥样了(当然除了嵌入式程序等),而且硬件机器也更加安全了,不会直接受到我们程序的扰乱。
Step5: 差不多了。 基础知识,也就是普适的知识就这些了。 对于数据库,网络,图形学,都是借用计算机实现一些专用,大型的的功能,涉及到具体领域了。
对于这些,可以先大概了解一点。 等具体从事那个方向,再仔细研究就可以了。
知道了这些,相信你可以计算机入门了。 我们不仅获取了一些零散的知识,也从全局把握了计算机专业的整个框架体系。 对于任何一个相关知识,我们不会再觉得那么抽象,不可理解了。 其实学习知识的过程,就是一个从抽象到具体,从高层到底层,从普适基础再到领域知识。
加油吧,希望这篇博客能够给那些刚刚接触计算机的学生有所帮助。
版权声明:本文为博主原创文章,未经博主允许不得转载。
谈谈我对计算机专业的理解: 计算机专业入门(问题 引导 学习思路)
标签:
原文地址:http://blog.csdn.net/j123kaishichufa/article/details/47400175