
编程的核心奥秘.doc
93页文档供参考,可复制、编制,期待您的好评与关注! 编程的核心奥秘 五袋老丐著 前言当代社会存在着两个令人痛心而又奇怪的普遍现象:学习计算机的人很多,但真正懂得计算机基本工作原理的人却非常的少学习编程的人很多(在我国每年有不下500万大学生在学),但真正学会编程(对一般的问题有编程思路并能编出正确的程序)的人却非常的少根据我的调查,青少年中想成为真正懂得计算机和成为编程高手的人大有人在这个比例不会低于总人口的百分之十(但由于高考压力的存在,很多青少年将实现这个远大理想的行动放在了高中毕业后)粗略估计,在我国每个年龄层不会少于一百万人但每个年龄层最终学会编程的人却非常,成才比例要比印度小得多(李开复先生说过,要招100个编程高级人才他会毫不犹豫地在中国招;然而要招1000个那就不一定了;如果要招10000个,那他只能到印度去招),原因何在?值得我们计算机教育工作者深思据我深入调查,在成长为编程高手之路上,有相当一大批人是被积累大量的基本编程思路和技巧(其中有不少人错在精力用的不是地方,不是通过大量阅读和编写各类程序去积累基本编程思路和技巧,而是花在了通过某种考试上,花在了指针、结构、文件等高级内容和钻研大量的语法细节知识上,舍本求末、舍生动有趣而求枯燥乏味)、真正从整体上掌握计算机的基本工作原理、真正从整体上掌握操作系统的基本工作原理(最大的难点是进程和进程调度是如何在硬件的配合下工作的)这三条拦路虎拦住了。
被这三关所阻拦下的人数决对在总人数的百分之九十以上 过了这三关后,还有汇编语言关、数据结构关、面向对象关(包括设计模式关)、算法分析与设计关、计算机网络关、数据库编程关,……真是极为不易呀!其困难程度决不在当年的关云长过五关斩六将之下可以说是一个学习之路上的二万五千里长征不过,真正越过了前三关的人,后面的各关就好过多了这主要有三方面的原因:第一,兴趣上来了对于能够看懂并修改一些简单游戏程序的青少年,兴趣是他们的最好老师,也是推动他们前进的最大动力;第二,最初的三关过后,后面的每一关几乎都有很好的名著可供钻研,读者不再会象过前三关那样感到眼前一片漆黑和茫然无助;第三,在对计算机和操作系统的基本工作原理有了整体把握后,再加上有了一定的编程能力和读懂复杂程序的能力,对计算机科学的其他知识就有了强大的自学能力前三关难过的原因何在呢?难道说学习计算机基本工作原理、操作系统基本工作原理就没有适合入门者的好书吗?积累大量的基本编程思路和技巧难道真的非常困难吗? 情况确实基本上如此为了积累大量的基本编程思路和技巧,许多青少年不得不在学了一门高级程序设计语言课之后,去钻研好几本编程案例类、程序设计竞赛类、程序设计的课程设计类的书籍。
这个周期几乎要长达一年到几年何况还有很多青少年根本不知道,为了学会编程必须补上这一“基本编程思路和技巧课”(这些人在学了《数据结构》、《面向对象》课程后,最终大部分仍然不会编程这就象不会造句的人,去学习写作文是毫无意义的)想通过学习《计算机导论》或《大学计算机基础》来真正从整体上掌握计算机的基本工作原理和操作系统的基本工作原理,对于绝大多数读者几乎也是不可行的(试问有几个大学生通过这两门课程的学习达到了此目的?)而《计算机原理》或《操作系统》专业课的教材往往不适合大多数非计算机专业而又想成为编程高手的读者学习因为其中包含着大量的(从编程角度来看)不太重要的细节知识更令人感到遗憾的是,这些知识往往在书中与那些少量的、重要的核心知识缠绕在一起这使得很多读者学起来感到非常苦恼有一种不知成才之路到底在何方的茫然无助的掉入痛苦深渊的感觉(除了极少数天才,大多数计算机专业的学生其实也有这样的感觉)本书专门为想成为编程高手的青少年而撰写,尽量帮助他们比较快速地、轻松地越过初学阶段的沼泽和艰难险阻为了助这一大批想实现少年时代远大理想的人一臂之力笔者花费了十年工夫积累素材,在觉得时机成熟后用了五年多时间呕心沥血写出了本书。
通过学习本书,读者不仅能够学会用C语言进行编程但是,千万不要把本书当作仅仅是一本学习C程序设计的教科书因为这是一本全方位提高初学者编程素养和计算机科学素养的书更为重要的是,通过本书的认真学习,就可帮助读者比较轻松地跨越成为编程高手最难越过的前三大难关 这是由于本书使用了一个首创的理想厨房作为比喻,巧妙地绕过了繁琐的数字电路这一前导课这使得从整体上把握计算机和操作系统的基本工作原理,成为一件比较轻松的事 在程序设计的讲解上本书也是与众不同,非常重视通过大量的、难度循序渐进的例题,比较系统地、详细地讲解编程思路和编程技巧填补了一般(语法类)程序设计教科书对编程思路和编程技巧讲解偏少的空白(尤其是在对于养成编程基本功最为重要的循环、数组和函数这几章上)本书可让读者花最少的时间从整体上把握计算机的奥秘,掌握大量的编程思想和编程技巧第一章 计算机的基本工作原理(初)一种有着神奇的“魔力”和“智能”的人造设备,正在迅速地、彻底地、默默无闻或者令人震惊地改变和丰富我们所生活的大千世界这个看起来很不起眼的,在一些场合被称为“电脑”的电器设备,是如何具有如此神奇的“魔力”和“智能”的?本章将带你开始解开这个谜。
1.1节介绍理想厨房系统,1.2节通过一个炒菜实例讲解理想厨房各部件是如何密切配合工作的1.3是一张理想厨房系统与计算机系统的对照表1.4到1.8介绍了二进制、计算机、机器指令和指令集、数和码1.09对计算机的重要特点进行了概括性的总结、1.11是计算机与理想厨房的一些重要区别其中1.2、1.3、1.4、1.9和1.11是本章重点电子数字计算机从发明到现在,不过大约70年的时间然而计算机的发明、改进和普及,却彻底地变革了人类社会计算机本身也变得越来越复杂、快速、小巧、种类繁多但大多数计算机都遵循冯.诺伊曼体系结构这为我们理解大多数计算机的基本工作原理提供了方便本章是全书的重要基础通过本章,为你真正揭开计算机究竟如何工作的神秘面纱但是要直到12.4、12.5节,才能彻底揭开计算机硬件如何在操作系统这个系统软件的调度管理下,并行运行多道程序的内在奥秘纠正你对计算机可能存在的一些错误认识和看法并且为第2、12、13章的学习打下牢固的知识基础本章不需要任何的预备知识,只要你能把本章认真仔细地学习两遍,你就能够真正懂得看似极为神秘莫测、奥妙无穷,到目前为止人类有史以来最伟大、最神奇而又最为复杂的发明——计算机(又称为“电脑”。
这个伟大发明,汇集了几代人中很多杰出人士的聪明才智和研究成果)是如何工作的基本原理为达此目的,笔者付出了极大的努力,找到了一种比较好的比喻方法——理想厨房系统,由此开始我们的真正理解计算机工作原理的,激动人心的探索旅程1.1理想厨房系统:理想厨房系统,是一个通过顺序执行菜谱中的各个加工步骤,把原材料加工成菜肴的系统它由硬件(理想厨房、自动冰箱和三条传送带)和软件(菜谱)组成1) 硬件部分:理想厨房系统,主要由以下三个硬件部件(即实物部件)构成——理想厨房、自动冰箱和三条传送带●自动冰箱:由非常多的大小一样的格子组成,每个格子都有一个唯一的编号,这个编号是从0开始逐1递增的自动冰箱负责临时保存菜谱、原材料和菜肴是不是很奇怪?菜谱竟然要和原材料一道,统一存放在冰箱中!●三条传送带:负责理想厨房与自动冰箱之间的通信及物品(菜谱中的加工步骤、原料和菜肴)传送●理想厨房:负责根据从菜谱中取到的加工步骤,进行炒菜以及进行相关的控制工作2) 软件部分:菜谱是理想厨房系统中一个无重量、无体积、不会损坏、可经常更换的,但又极为重要的软件部件(即信息流部件)菜谱由一个一个的加工步骤顺序组成注意:术语“理想厨房系统”与“理想厨房”是有区别的,理想厨房只是理想厨房系统中的一个组成部分。
理想厨房系统的构成简图如图1.1所示:理想厨房 自动冰箱 碟名 碟中物品 格子编号 格子(存放加工步骤或原料)R0R1 厨具R2 厨师PC 厨房管理员IR 材料传送带地址传送带控制传送带 01234567 图1.1理想厨房系统的构成简图(但图中没有放入软件)●理想厨房中各种碟子的作用R0、R1、R2碟是一些通用临时存放碟,用来临时存放从冰箱中取来的原材料或经过加工了的半成品或成品PC碟:存放一个大于或等于0的整数值,这个值表示:下一个要执行的加工步骤,位于自动冰箱的哪一格中IR碟:用来存放从冰箱中刚取过来的一个(立刻要执行的)加工步骤● 理想厨房执行菜谱中的加工步骤,其流程完全是周期性的 厨房管理员首先要根据PC碟中的值,通过三套传送带的协调工作,到自动冰箱的指定格中去取菜谱中的一个加工步骤取到理想厨房并把它放到IR碟中后,PC碟中的值将会加上1(这是为取下一个加工步骤做好准备)。
然后,厨房管理员阅读并分析IR碟中刚取到的加工步骤根据此加工步骤的指示,去做以下七类工作中的一种: 1.通过三套传送带,命令自动冰箱把指定地址格子中的(炒菜加工步骤马上要用到的)原材料(通过材料传送带)传送到理想厨房中来——即取物品;2.命令厨师按照指令(即加工步骤)的要求,对原材料作一个基本加工操作(做“炒”,“蒸”,“煮”等基本操作步骤中的一个炒菜动作)——即加工原材料 3.通过向三套传送带向自动冰箱发命令,把某个碟子中的成品(或半成品)送回到冰箱指定的格子中存放——即存物品; 4.在厨房的各个碟子或炊具之间传送原料或半成品——在厨房内部进行物品传送 ;5.根据某个状态碟中的具体条件(比如:加工步骤的预定时间到了、温度够了),不按正常顺序取出并且执行下一条指令,而是根据此指令中给出的(冰箱格子的相对或绝对)地址,跳转到那一格中去取下一条指令——即进行(有条件的)跳转6.命令配菜员为某菜配原材料;——即输入(在本章不讨论,见第12章)7.命令传菜生端菜给顾客;——即输出(在本章不讨论) 一个加工步骤执行完后,理想厨房立即自动进行下一个完全类似的、新的 取加工步骤——执行加工步骤的周期。
注意:为了解说简洁起见,在以下叙述中,我们经常把一个加工步骤称为一条指令,因为一个加工步骤就是一条指导理想厨房如何工作的命令理想厨房一次只能执行一条指令一条指令的执行周期,可分为取指子周期和执行子周期这两个阶段下面我们通过一个实例来讲述理想厨房系统的工作机制这是本章的一个重点,因为计算机的工作原理,与之极其相似1.2理想厨房系统的一个炒菜实例(此节最好看光盘中的视频)1.2.1现在,我们通过炒制一道香菇炒菜心的例子来说明理想厨房系统的工作过程 首先,把香菇放在冰箱地址为5的格子中,把菜心放在冰箱地址为6的格子中,冰箱地址为7号的格子,预留给炒好的菜使用首先,把香菇放在冰箱地址为5的格子中,把菜心放在冰箱地址为6的格子中,冰箱地址为7号的格子,预留给炒好的菜。
