欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 计算机组成原理心得体会

计算机组成原理心得体会

时间:2020-01-24 19:46

总线系统实验报告

微型计算机的总线结构 Bub(总线) Interface(接口) Socket(插座) Slot(插槽) Port(端口)总线——是一组能为多个部件服务的公共信息传送线路,是计算机各部件之间的传送数据、地址和控制信息的公共通路,它能分时地发送与接收各部件的信息。

采用结构在系统设计、生产、使用和维护上有很多优越性: (1)采用结构设计方法,简化了系统设计。

(2)便于生产与之兼容的硬件板卡和软件。

(3)便于系统的扩充和升级。

(4)便于故障诊断和维护,也降低了成本。

总线的主要参数总线分类: 数据总线(Data Bus)-用于传输数据的。

地址总线(Address Bus)-用于传输地址信息的。

控制总线(Contron Bus)-用于传输控制信号、时钟信号的状态信息的。

1、总线的带宽(MB\\\/s) ——指的是单位时间内总线上可传送的数据量,即每秒传送多少MB字节的最大稳态数据传输率。

2、总线的位宽(bit) ——指的是总线一次能同时传送的数据位数,即常说的32位、64位等总线宽度。

总线位宽越大传输率越大。

3、总线的工作时钟频率 ——总线分为:CPU内部使用的内部总线和CPU对外联系的外部总线。

外部总线又称为系统总线。

众多的功能部件要正常的动作,必须有一个统一的指挥,这个就是时钟信号。

控制总线的时钟信号频率称为总线的工作时钟频率。

内部总线频率就是常说的内频,而外部总线频率就是外频。

总线带宽=总线位宽*总线工作频率\\\/8 注:(总线带宽、总线位宽、总线工作时钟频率的关系,就像速公路上的车流量、公路车道数目、车辆行驶速度的关系)实验1 进程管理1. 实验目的(1) 加深对进程概念的理解,明确进程和程序的区别。

(2) 进一步认识并发执行的实质。

(3) 分析进程争用资源的现象,学习解决进程互斥的方法。

(4) 了解Linux系统中进行通信的基本原理。

2. 实验预备内容(1) 阅读Linux的sched.d源码文件,加深对进程管理的理解。

(2) 阅读Linux的fork.c源码文件,分析进程的创建过程。

3. 实验内容(1) 进程的创建编写一段程序,使用系统调用fork()创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符;父进程显示字符a,子进程分别显示b和c。

试观察记录屏幕上的显示结果,并分析原因。

〈程序〉#include〈stdio.h〉Main(){int p1,p2;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 == 0) \\\/*子进程创建成功*\\\/putchar('b');else{while((p2 == fork())) == -1); \\\/*创建子进程p2*\\\/if (p2 == 0) \\\/*子进程创建成功*\\\/putchar('c'); \\\/*父进程执行*\\\/else putchar('a');}}〈运行结果〉bca(有时出现bac等)分析:从进程并发执行来看,输出bac,acb等情况都有可能。

原因:fork()创建进程所需的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了'b',而进程2和主程序的输出次序是有随机性的,所以会出现上述结果。

(2) 进程的控制修改已编写的程序,将每个进程的输出有单个字符改为一句话,在观察程序执行时屏幕上出现的现象,并分析其原因。

如果在程序中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

〈程序1〉#include〈stdio.h〉main(){int p1,p2,i;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 == 0) \\\/*子进程创建成功*\\\/for(i=0;iprintf(sun %d\\\/n,i);else{while((p2 == fork())) == -1); \\\/*创建子进程p2*\\\/if (p2 == 0) \\\/*子进程创建成功*\\\/for(i=0;iprintf(earth %d\\\/n,i);elsefor(i=0;iprintf(moon %d\\\/n,i);}}〈运行结果〉sun...earth...moon...moon...或sun...earth...sun...earth...moon...等分析:由于函数printf()输出的字符串之间不会被中断,因此,字符串内部的字符顺序输出时不变。

但是,由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。

这类似打印单字符的结果。

〈程序2〉#include〈stdio.h〉main(){int p1,p2,i;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 == 0){lockf(1,1,0);for(i=0;iprintf(sun %d\\\/n,i);lockf(1,0,0);}else{while((p2 == fork())) == -1);if (p2 == 0){lockf(1,1,0);for(i=0;iprintf(earth %d\\\/n,i);lockf(1,0,0);}else{lockf(1,1,0);for(i=0;iprintf(moon %d\\\/n,i);lockf(1,1,,0);}}}〈运行结果〉sun...earth...moon...moon...或sun...earth...sun...earth...moon...等与未上锁的情况大致相同,也是随着执行时间的不同,输出结果的顺序有所不同。

分析:因为上述程序执行时,不同进程之间不存在共享临界资源问题,所以,加锁与不加锁效果相同。

(3) 软中断通信编制一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程扑捉键盘上来的中断信号(即按Del键),当扑捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程扑捉到信号后,分别输出下列信息后终止:child process 1 is killed by parent!child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止:parent process is killed!〈程序〉#include〈stdio.h〉#include〈signal.h〉#include〈unistd.h〉void waiting(),stop();int wait_mark;main(){int p1,p2,i;while((p1 == fork()) == -1); \\\/*创建子进程p1*\\\/if (p1 > 0){while((p1 == fork == -1);if(p2 > 0){wait_mark = -1;signal(SIGINT,stop); \\\/*接收'Del'信号,并转stop*\\\/waiting(0);kill(p1,16); \\\/*向p1发中断信号16*\\\/kill(p2,17); \\\/*向p1发中断信号17*\\\/wait(0); \\\/*同步*\\\/wait(0);printf(parent process is killed! \\\ );exit(0);}else{wait_mark = -1;signal(17,stop);waiting();lockf(stdout,1,0);printf(child process 2 is killed by parent! \\\ );lockf(stdout,0,0);exit(0);}}else{wait_mark = -1;signal(16,stop);waiting();lockf(stdout,1,0);printf(child process 1 is killed by parent! \\\ );lockf(stdout,0,0);exit(0);}}void waiting(){while (wait_mark != 0);}void stop(){wait_mark = 0;}〈运行结果〉child process 1 is killed by parent!child process 2 is killed by parent!parent process is killed!分析:上述程序中,使用函数signal()都放在一段程序的前面部位,而不是在其他接收信号处。

只是因为signal()的执行只是为进程指定信号量16或17的作用,以及分配相应的与stop()过程链接的指针。

从而,signal()函数必须在程序前面部分执行。

微机原理与接口技术 实验心得

实得这学期通过对微机原理和微机实验学习,对微机系统和它的工作原理有了的了解。

微机实验课,总共做了十几个实验,回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,它是和机器语言最接近的,用它来编程序,会比用其它高级语言要快得多。

实验课程加深了我们对汇编语言指令的熟悉和理解。

不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

对于这门课,我们收获了很多,我觉得这门课偏重于工程思维,主要难点在于对程序的理解。

但是老师让我们通过手打程序,控制实验平台很好的理解了各实验的实验程序。

对于课程的建议,实验讲义给的程序很清楚,大大降低了实验预习和自主编程的难度,给实验讲义可以更多的给方法和方式,提供一些程序建议而减少直接给出程序内容。

实验课上,请一个或两个同学讲解一下实验程序设计思路,通过讲解与其他人互动,可以收获更多。

微机原理课程上讲到的各种芯片的功能,以及引脚的作用,在实验中都得到了运用,使我们加深了对于主要芯片的应用的认识,同时在实验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动

求一篇 计算机心得体会的文章~

计算机实验心得体会  篇一:大学计算机基础实验体会  大学计算机基础实验体会  大学计算机基础这门课是一门基础应用类课程,目的是让我们了解计算机硬件组成,简单的运行原理,以及各类常用软件的使用。

  这个周末,我们完成了基础实验6、7、8。

本来以为会很简单的几个实验却花费了我们大量的时间,名且发现了很多问题,我才知道这门课程并不像我们想象的那么简单单学到的知识恰恰和难度成正比,这三个实验着实让我受益匪浅。

  这次实验作业中,主要的问题都出在word文档的应用中。

我们普遍都用惯了老式的word2000或者word2003,所以对word2007不熟悉,于是造成了很多麻烦,尤其是添加目录这个新功能,摸索了好久依然毫无头绪。

最后不得已只能拿出教材自习阅读,同时上网找了很多详细的讲解,最后才完成了实验6。

  在做powerpoint时候,可能是因为平时做过很多的原因,并没有遇到什么很明显的问题和困难,  但是为了能把PPT  做得精美和详细,也花费了不少的时间。

  最后一项是excel的应用。

我以前对它的接触不多,所以对其应用也是最不熟练最不明白的。

但是通过自主的对其学习,尤其是对教材的阅读,使我能运用一些比较基本的功能进行表格制作。

同时也了解了很多以前不知道简便功能。

可以说,动过这次试验,我学到的最多的知识,就是excel  的应用了。

  虽然这次试验作业已经完成,但是它给我的启发让我思考至今。

首先,本已经在课堂上学习过的内容,为什么在

C语言高中生可以学吗

我没分了,各位请原谅解

当然可以,这个不分年龄的给你个C语言学习的网站吧百度百科,了解C语言(这个要注册)*(这个是学习教程)(视频网站)(C语言学习心得)一些C语言的教材1、《计算机组成原理》(熟悉)2、《数据结构》(掌握)3、《操作系统》(了解->熟悉)4、《The C language》(掌握)5、《编译原理》(了解原理)6、《汇编语言》(了解)7、《计算机网络》(了解)8、《软件工程》(了解)9、《关系数据库》(熟悉)10、《The C++Languege 》(掌握)11、《面向对象设计》(掌握;结合C++学习)C Primer Plus(第五版)中文版《程序员》推荐C++ 图书三人谈 主持人:熊节(透明),《程序员》杂志编辑,C-View成员 嘉 宾:孟岩(梦魇),联想公司掌上设备事业部应用开发处任职,C-View成员。

与侯捷先生合译《C++ Standard Library》一书 金尹(恶魔),上海天宇公司CTO,在《程序员》连载有“自由与繁荣的国度”系列文章 透明:“学C++用哪本书入门”,这是被问得最多的一个问题。

但是哪一本书是最好的入门书

似乎很难找到答案。

《C++ Primer》太厚,《Effective C++》对读者要求比较高,《Essential C++》又常常被批评为“太浅”。

其实说穿了:no silver bullet。

想从一本书学会C++,那是不可能的。

有朋友问我如何学C++,我会建议他先去找本数据结构书,把里面的习题全部用C++做一遍,然后再去看《Effective C++》。

myan经常说“要在学习初期养成好习惯”,我对此颇不以为然。

个人认为,《Essential C++》适合作教材,《C++ Primer》适合作参考书,《Effective C++》适合作课外读物。

恶魔:很后悔当初买了《C++ Primer》。

因为从我个人角度来看,它的功能效用基本是和《The C++ Programming Language》重合。

当然对于入门来说,它还是很不错的。

但是《C++ Primer》太厚,一来导致看书极其不方便,二来系统学习需要花比较长的时间。

对于目前这个越来越快餐化的时代来说,的确有很多不适合的地方,不过可以作为初学者的参考书。

现在我以一块K3 CPU的代价把它借给了别人,希望我那位同事能够从中得到一些益处。

如果已经具备了C基础,我建议看国内的书,例如钱能的《 C++大学教程(第二版) 》。

(如果没有C的基础还是看谭浩强的C语言)。

这本书对C讲得还算比较清晰,有很多习题值得一做,特别是最后的struct和union两个部分。

其中的一些算法比较拖沓和繁琐(比如树和链表的遍历算法),读者可以尝试修改这些例子,作为最后对C语言的一些总结测试。

梦魇:这个问题让我想起四五年前的情形。

今天对于C++有一点认识的人,多半是从那几年就开始学C++了。

那时根本没有品牌观念。

从书店里找一本C++书,如果看着还算明白,就买下来。

我记得那时候宛延闿、张国锋、麦中凡教授的书都受到很高的赞誉。

我个人最早的一本C++书是Greg Perry的一本书,今天想起来,其实是一本打着C++旗号的C语言教程。

对我作用最大的一本书是国防科技出版社出版的一本书,书名记不得了,作者叫斯蒂芬·布莱哈。

透明:还记得以前曾批评过一本C++书,是北航出的,整本书就没有出现过class关键字。

那本书,说穿了其实只是介绍了C语言和iostream库的用法,根本不能算C++。

而当时我常常推荐的一本书是电子科技大学张松梅老师的C++教程。

那本书,直到今天来看也没有太大的问题,唯一的缺憾就是由于年代久远,许多东西已经过时了。

而对于一本技术书籍来说,“过时”是最不可接受的。

总体来说,那时使用C++的人真是在“盲人摸象”。

不过这也有好处,就是对C++的很多细节能搞清楚,以后看到经典好书时比较容易理解;当然坏处就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什么不一样。

梦魇:整个90年代,其实大部分人对于C++的认识都似是而非。

一开始是等同于Borland C++,后来是等同于Visual C++和MFC。

所以一般来说,打着BC和VC旗号的书卖得很好,人们觉得这就是C++。

而我比较幸运,布莱哈的那本书虽然从现在的眼光来看谈不上高超,但基本路子是对的。

可能是因为原书是给UNIX程序员的培训教材,所以没有让我一开始就形成“C++ == VC++”的认识。

其实一直到1996年,我们那里搞计算机的都是唯Borland C++马首是瞻的,到了VC 4.0出来,一下子格局全变了。

1997年VC5推出之后,书店里MFC书铺天盖地,学MFC的人,头抬得都比别人高一些。

不过现在看来,那时候大部分的MFC书都是三流货色。

我曾经有一段时间认为,那一批程序员中间有不少被误导了。

根本原因就是相对的封闭。

透明:我觉得一本书的价值有两方面:第一,教给你实用的技术;第二,促使你去思考。

对于一本介绍VC(或者说MFC)使用方法的书,我根本不希望它能促使我有什么思考,所以我就一定要求它在技术上精益求精完美无瑕。

我刚开始用VC的时候,买的第一本书就是潘爱民老师翻译的《VC技术内幕》(第四版),没有受到那些“三流货色”的误导,应该说是很幸运的。

梦魇:1999年机械工业出版社开始出版“计算机科学丛书”,其中的《Thinking in C++》第一版受到了广泛的欢迎。

其实我一直不认为这本书很出色,虽然拿过一次大奖。

然而我们都得承认,这本书在C++书籍领域里第一次建立了品牌观念,很多初学者开始知道,不是随便买哪一本都一样的。

再往后就是2000年的《 深入浅出MFC(第二版) 》第二版,以及侯先生在《程序员》上发表的那一篇《C++\\\/OOP大系》,加上整个大环境的变化,品牌观念深入人心,C++书籍市场终于开始逐渐与世界同步。

回想往事,我的感觉是,那个需要战战兢兢选择入门书的时代已经过去,今天的C++初学者,大可以放心地买口碑好、自己读起来思路顺畅的书,入门不再是太大的问题。

还有一些程序员已经学了几年C++,但看到今天出版的一些新书,感觉比较陌生,这也不是什么问题。

侯先生经常说“凡走过必留下足迹”,所谓“走弯路”,未必不是一件好事。

至于具体的推荐表,就不好一概而论了。

总之在我的印象里,《Essential C++》、《C++ Primer》、钱能教授的C++教程,都不错。

甚至有人一上来就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜欢,也没什么不可以。

透明:我同意你的观点。

不管怎么说,编程是门实践性非常强的学问。

要想对C++对象模型有深入的了解,最好的办法就是写一串程序去看结果;要想学会OOP,也只能从项目中学。

对于初学者,最好的学习方法就是不停地写程序,写真正有用的程序,写到有问题的时候就去查书,于是自然就会知道哪本书好哪本书不好。

不过我们的教育制度能不能让大学里的学生们有这样的学习机会,我表示怀疑。

以我的经验,学C++有两个门槛:入门和使用。

完全看不懂C++,这是一个门槛,但是只要有一本合适的入门书,很快就能跨过。

要想真正用上C++,却不是件很容易的事情。

尤其对于学生来说,接触到的东西多是“玩具”,很难有实战的机会。

所以经常看见有人问“C++到底能做什么”,这是C++学习中一个比较麻烦的问题。

我们都是做了相当长时间的C++程序之后才看到一些真正经典的书,也正是因为走了相当长的弯路之后才知道这些书的经典之所在。

所谓弯路,我想也是一种必须的积累。

就算一开始就看《Essential C++》和《C++ Primer》,没有两三年的时间恐怕还是难有所得。

恶魔:有两句十分有道理的话,一是我大学的C语言老师说的“写程序不如说是抄程序”,另一句是一网友说的“好的设计来自借鉴,天才的设计来自剽窃”。

对于我这个理性批判主义者来说,这两句话的确不太适合。

但是无论从哪个角度来讲,对于初学者来说,剽窃大师的作品是通向成功的最快捷径。

我个人认为,对于C++的初学者来说,首先要确定自己专业领域内主要使用的特性的方向。

因为C++的特性如此众多,初学者想贪多基本是不可能成功的。

C++的编程范式基本可以分为ADT+PP、GP和OO三个方向。

对于ADT+PP范式来说,初学者的主要问题不是学习C++,而是学习C的使用。

对于这样的初学者,国内的几本书还是写得比较清楚,符合中国人的习惯,比如谭浩强的《C语言教程》、钱能的《C++语言大学教程》。

这两本书我首推第一本,因为这一本我潜心研究了一年,这本书当中很多程序是可以剽窃的,而且可以对这些程序进行加工和提升。

比如结构这一章中,它所给出的用struct来实现链表、二叉树的算法是相当蹩脚的。

学习ADT+PP的初学者将这本书揣摩透以后可以尝试修改这两个程序。

另外这本书的第二版稍微涉及了一些关于“类”的内容。

学习ADT+PP的初学者,可以不被OO中的一些专有特性扰乱自己的思路,对于类层次扁平、无继承、无多态的程序编写是有很大好处的。

透明:你好象比较推崇国内教授写的书。

现在社会上有种不好的风气:一捧就捧上天,一贬就贬下地。

就好象对待谭教授的书,前几年是奉为经典,这几年又有很多人使劲批评。

学C++更是有点“崇洋媚外”,总是觉得初学就应该看《Essential C++》。

我看这种观点也是片面的。

恶魔:当然《Essential C++》也值得看看。

但是我个人觉得这本书没有谭浩强的《C语言教程》来得好。

主要原因是:第一,C++的所有特性都点到了,但是不深,看了以后会三心二意没有方向;第二,可以抄袭借鉴的例子太少。

《C语言教程》中有很多有趣的问题,比如猴子吃桃、汉诺塔等等,这些例子对于刚刚涉及C\\\/C++语言编程的人来说是学习编程很好的例子。

《Essential C++》只能是前两本书看透以后,作为学习C++特性的一个过渡性的书籍。

让读者真正领略到什么是C++的编程、和C编程的不同点在哪里。

透明:我发现一个很有趣的现象:初学者往往喜欢问“哪本书比较好”,这让我很是不解。

这有点像一个刚学打篮球的人问“王治郅和科比谁比较厉害”。

当然科比更厉害一些。

但如果你是想学打篮球,这两个人都非常非常有资格教你,你跟谁学都能学得很强——关键不是在于你选哪个老师,而是在于你自己用多少功夫去学。

透明:回到原来话题。

学会了C++的语法,能看懂C++代码之后,必须有些书来指导进阶(或者叫指点迷津)。

我觉得《设计模式》很好,能够让读者看到一些精妙的用法。

不过正如我经常说的,模式带来的麻烦和好处一样多,甚至麻烦还要更多。

而且,C++本身的问题使得在C++中使用GoF模式愈加麻烦。

梦魇:《Design Patterns》这本书绝对是不可以没有的,而且中英文版都不可少。

最初我看中文版,说实话看不懂,但是也不觉得人家翻译得不好,所以就想,大概是原文就很难懂,加上自己水平有限。

于是总是想着再找几本patterns的书来看。

后来找到几本书,口碑还不错,不过水平高下,一比就出来了,还是那本《Design Patterns》最经典,最耐看。

英文版出来之后,两个版本对照看,明白多了。

现在觉得,其实就设计模式来讲,把这本看明白了就很不错了,不用再花费很多心思找其他的书。

我现在的包里始终夹着这本书,随身携带,有备无患。

至于说设计模式的副作用,和可能带来的弊端,我的体会也挺多。

不过是这样,我们想一想,究竟什么情况下设计模式可以用得很好呢

一种是有经验丰富的人引导,比如要是Robert Martin带队,你在某个地方用错了设计模式,他就会指出来,说这里不对,将来会产生什么样的弊端。

对于他来说,丰富的实践经验足以支持他进行“预测型”设计。

但是大部分人没这个能力,因此我们只好走第二条路和第三条路,就是“试探型”设计和“重构型”设计。

遇到一个问题,你觉得用某种模式挺合适的,就大胆地用了,成功是积累经验,发现不好,出了问题了,只好改回来,那也是积累教训。

这叫做“试探型”。

至于重构,应该算是最有组织、成功率最高的工程化方法。

先把问题“quick and dirty”地解决了,所有的暗礁都暴露出来,然后再根据实际情况采用合适的模式优化设计。

现在XP和UP都高度重视refactory,UP在Elaboration和Construction阶段都鼓励抽出专门的iterations进行重构。

所以说如果组织快速的软件开发,当然比较倾向于这条路——打成功率嘛。

透明:讲到重构,我顺便说说《Refactoring》这本书的影响。

从工程本身的角度来说,你所谓的“重构型设计”是没有什么问题的。

但中国的开发者(也包括我在内)往往比较冲动,比较容易相信银弹的存在。

曾经有那么一段时间,我在Java中尝试过了重构的方法之后,又拿到C++中去尝试。

结果发现,在Java中速度非常快的重构过程,到C++中就被减慢了。

究其原因,就是因为C++和Java的约束条件不同。

拿着Java中成功的案例直接套C++,不失败才怪。

所以,我必须说:《Refactoring》这本书很有价值。

但对于C++程序员来说,它的价值是让你思考,思考这种方法的可行性。

如果一个C++程序员没有打算迁移到Java,那么我必须告诉他:《Refactoring》这本书不是让你照着它用的,甚至不是让你去相信它的。

对于C++程序员,《Refactoring》全书可以放心相信的只有第13章,其他的部分,都必须非常谨慎地对待。

梦魇:我还要就“试探型”的方法多说两句,我觉得对于个人发展来讲,“试探”也是必不可少的,撞墙不可怕,高水平的人不都是撞出来的吗

你失败了一次,就知道这个模式有什么潜在的问题,下次再用,就会多看几步,像下棋似的。

撞的多了,路数就出来了。

我不知道你们是否有这个感觉:用错了模式,吃了亏,再回过头去翻翻《Design Patterns》,看到人家早就指出来这个问题,不过就是那么几句话,原来看上去干巴巴的,现在觉得句句都讲到心坎上,GoF的形象马上就高大起来,还带着光环,感觉是既兴奋又懊悔。

透明:现在回头来看,我更欣赏myan推荐给我的《Designing Object-Oriented C++ Applications Using Booch Method》。

这本书能够帮助C++程序员理清思路培养习惯,可惜国内没有引进。

相比后来商业味浓厚的UML系列书籍,我觉得这本书对于面向对象的阐释精辟独到,至今未有能出其右者。

梦魇:刚才我们两人都说到Robert Martin,他可是我的榜样。

那本1995年的《Designing Object Oriented C++ Application》,我觉得是每一个C++软件工程师都应该反复研读的书。

可惜不仅国内没有引进,在国外的名气也不大。

如果你觉得面向对象的那些道理你好像都明白,可就是一遇到实际问题就使不上劲,那这本书就是你的最佳导师。

提到理清思路,还有一本书不得不提,就是Andrew Koenig的《Ruminations On C++》。

每个人都应该问自己,我学了这么多年的C++,究竟什么是C++最基本的设计理念

遇到问题我第一个直觉是什么

第一个试探型的解决方案应该具有那些特点

如果你不能给出明确的答案,就应该认真地去读这本书,读完了你就有了“主心骨”。

透明:插一句话,谈谈“推荐书”的问题。

入门书基本上是放之四海而皆准的,所以推荐的意义也不大。

而入门后的发展方向,每个人不同,这个时候就需要“高人”的指点。

举个例子:我学C++的时候,myan还不认识我,所以也没有给我推荐书,我还是学过来了,所以即使你当时向我推荐了《Essential C++》或者《C++ Primer》,我也不会太感谢你;但在我认真研究OO的时候,你推荐Robert Martin那本书给我,对我帮助就特别大,而且我从别的地方也很难找到类似的推荐,所以我就很感谢你。

一个程序员,必须有framework的意识,要学会用framework,还要主动去分析framework(在这方面,《Design Patterns》能有一定的帮助)。

但是,真正高质量、成气候的framework的书恐怕也就只有针对MFC的。

从这个角度来说,MFC纵有千般不是,C++程序员都非常有必要先去用它、熟悉它、研究它,甚至借助《深入浅出MFC》这样的书来剖析它。

不然,很难有framework的意识和感觉。

当然,另一个framework也很好,那就是STL。

不管用不用MFC、STL,对这两个东西的掌握和理解都是极有帮助的。

最近我又在看《深入浅出MFC》,虽然已经不用MFC编程了,但帮助是一定有的。

梦魇:MFC和STL方面,我还是比较推崇侯先生的两本书《深入浅出MFC》和《STL源码解析》。

《深入浅出MFC》这本书,名气自然是大得不得了,不过也有不少人批评。

其实书也没有十全十美的,批评当然是少不了的,不过有的时候我看到有人评论这本书,把它跟Inside VC相比,真的是牛头不对马嘴。

你刚才其实说得很对,程序员应该有一点framework意识。

而这本《深入浅出MFC》与其说是在讲MFC编程,不如说通篇是在拿MFC为例分析Application Framework的架构和脉络。

所以无论你对于MFC本身是什么态度,这本书对每一个C++程序员都有很大的益处。

透明:是的。

《VC技术内幕》会告诉你“DYNAMIC_CREATE这个宏怎么用”,《深入浅出MFC》则告诉你“DYNAMIC_CREATE这个宏是怎么实现的”。

所以,如果你只需要在VC下写一些小应用程序,《深入浅出MFC》的价值并不太大;但是,如果你需要设计一个稍微大一点的东西(不一定是framework),MFC的设计思想就会有所帮助。

梦魇:另外,我觉得对于MFC也应该有一个公允的评价。

过去是吹捧得天上有地下无,书店里铺天盖地都是MFC的书,搞得大家只知有MFC,不知有C++,甚至直到现在还有人问:“我是学MFC呢,还是学C++

VC++是不是比C++更高级的语言

”MFC成了一尊神像,阻碍了人们的视线。

所以得把它从神坛上拉下来。

这就是过去一两年有很多人,包括我在内批评MFC的一个目的。

可是现在大家视野开阔了,.NET也出来了,MFC不再是神像了,少数人就开始以贬损MFC为乐了。

我觉得这种态度是不对的。

什么叫好的框架

我觉得在十几年的时间能够象MFC这样保持稳定并且不断进步的框架就是好的框架。

可能我们在一些具体的设计问题上有不同看法,觉得“这个地方这么设计不是更漂亮吗

”很多时候是的,但是这不重要,重要的是MFC成熟稳定、有十几年的成功经验,这是最了不起的东西。

另外一点,MFC中间包括着学习Win32 API编程的最佳资料。

这是除了其framework方面之外的另一个亮点。

我现在使用Win32 API开发,但是经常参考MFC的源代码,收获很大。

透明:STL方面,我对于剖析它的源代码兴趣并不大,毕竟里面源代码多是算法问题。

所以,《STL源码剖析》我也只是随便翻翻就束之高阁了。

我觉得这本书用来做计算机系的数据结构和算法教材不错,不知道有没有老师乐意这样做。

对于STL,我的态度一向都是“应用至上”。

不过,我一直认为SGI STL本身就是一本精彩的书,一本数据结构和算法的经典参考书,同时也是泛型技术的参考书。

想知道一个算法是如何实现的,看看STL源代码就行;想知道如何使用type traits,STL源代码里面也有例子。

看别人写的书,总觉得隔着一层纱,有点挠不到痒处的感觉。

SGI STL的代码写得非常漂亮,一个C++程序员如果不看看这本书,实在是可惜。

梦魇:至于STL,除了《STL源码解析》之外,我举贤不避亲,强烈推荐侯先生与我合译的那本《The C++ Standard Library》。

这本书质量之高是无需怀疑的。

我现在手边常备此书,随时查阅,对我帮助很大。

透明:C++和Java相比,最大的优势就是它没有一个专门的公司来管它,最大的弱点也是它没有一个专门的公司来管它。

Java程序员在学会简单的语法之后,立刻进入SUN提供的framework,一边用这个现成的framework做实际开发,一边在开发过程中继续学习Java一些幽深的特性。

而这个时候,C++程序员恐怕还在问“VC和BCB哪个好”呢。

这无疑是浪费时间。

梦魇:刚才你说Java和C++的优劣,这个话题已经成了我们这个年代永不消失的声波了。

我也不想再谈这个。

不过有一点我得说清楚:现在我们很多用C++的人吃了不少苦头,探过脖子去看看Java,觉得它真是太可爱了,这种印象是不准确的。

另外,Java也不简单,而且会越来越庞大复杂。

在很多场合,Java还不具有竞争力。

至于将来如何,我看有些Java爱好者也过分乐观了,似乎计算机科学界几十年解决不了的问题都可以借着Java的东风解决掉,恐怕没那么容易。

透明:那当然。

我再次强调:No Silver Bullet。

读书很重要,但古人说“行万里路,读万卷书”,还是把“行路”放在“读书”前面。

尤其对于技术书籍,如果它不能帮我解决问题、不能给我带来非常实际的利益,那么我是不会去读它的。

恶魔说得对,我们这个社会很快餐,我们这个行业尤其很快餐,我们也只能努力适应它。

如果,我想当一名程序员,如何从零开始

1、 程序员意味着要编程序。

(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。

(说坦白点就是,在你没有找到乐趣以前,它很枯燥)3、你有对新技术追求的热情吗

你有刨根问底的探索精神吗

(热情绝对是最重要的

你仔细思考一下自己的性格适合当程序员吗

)4、当程序员决不是什么好差事,时刻需要学习,需要思考。

(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)5、程序员的未来很迷茫。

(但我认为关键看你自己

我希望你是一个有追求的人,不仅仅是混碗饭吃。

因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。

有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:一个程序员对自己的未来很迷茫,于是去问上帝。

“万能的上帝呀,请你告诉我,我的未来会怎样

”上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”于是他去问Lippman。

Lippman说“程序员的未来就是驾驭程序员”这个程序员对这个未来不满意,于是他又去问上帝。

“万能的上帝呀,请你告诉我,我的未来会怎样

”上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”于是他去问Gates。

Gates说“程序员的未来就是榨取程序员”这个程序员对这个未来不满意,于是他又去问上帝。

“万能的上帝呀,请你告诉我,我的未来会怎样

”上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”于是他去问侯捷。

侯捷说“程序员的未来就是诱惑程序员”这个程序员对这个未来不满意,于是他又去问上帝。

“万能的上帝呀,请你告诉我,我的未来会怎样

”上帝摇摇头“唉,我的孩子,你还是别当程序员了”)6、当程序员还是很有乐趣的。

(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗

)7、当程序员不易也不难。

(世间事有难易乎

为之…;不为…。

你有决心和信心吗

)8、你真的要当程序员

是你自己的想法

9、你舍得花钱买书吗

(读好书绝对是学习编程的最佳捷径。

你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。

要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。

) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。

11、编程序就是编写程序。

12、你想好了吗

(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。

)(三) 一个程序员应该具备的基础知识和概念1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。

(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要

)2、机器语言和微指令集的概念。

3、程序的概念。

4、汇编语言是低级语言但不是机器语言。

5、高级语言主要有那些

(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。

(编译器是高手和专家编写的)7、HTML、XML等是标识性语言。

8、Prolog是人工智能语言。

9、操作系统OS的概念和原理。

(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)10、Windows编程说白了就是Windows API的调用。

(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。

12、面向结构的设计概念。

13、面向对象的概念。

(好好理解,兄弟,这个东西还是很重要的)14、软件工程的概念和原理。

(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)15、数据库的概念。

(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)16、了解网络概念。

17、了解多媒体概念。

18、熟悉和掌握数据结构和基本算法。

19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。

(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。

也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。

要有信心和耐心。

沉不住气怎么能成大事

)(四) 教材推荐――-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。

1、《计算机组成原理》(熟悉)2、《数据结构》(掌握)3、《操作系统》(了解->熟悉)4、《The C language》(掌握)5、《编译原理》(了解原理)6、《汇编语言》(了解)7、《计算机网络》(了解)8、《软件工程》(了解)9、《关系数据库》(熟悉)10、《The C++Languege 》(掌握)11、《面向对象设计》(掌握;结合C++学习)(五)一些经验和体会1、真正的程序员用C++;(一位专家说的)2、动手去编程序;3、动脑去思考;4、要有良好的编程风格;5、读书,读好书,尽量读原版书

(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)6、有自己的学习计划;7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)8、不要怕学新东西;9、要有软件工程的思想;10、善于发现问题,然后去寻找答案;11、向高手请教;(要虚心直到你成为高手)12、和同行交流;(不善于交流肯定不行)13、懂得软件的实质,不要被千变万化的表象所迷惑;14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)15、学习wiodows编程主要是学习windows OS和win32 API;16、有空了解一下嵌入式开发;17、有空了解一下PDA软件开发;18、了解一下.NET框架和C#语言,也许它是你新的衣食父母;19、要有耐心,不要作浮躁的人; 20、对程序加注释,并保留你的老程序;21、学到的东西越多,了解的越多,你就越接近专家;22、有空去逛逛CSDN,那里有你很多知己;23、要有信心成为一个优秀的程序;(六)一些好书的推荐1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988)2、《The C++ Programming Languague》(Bjarne Stroustrup 1997)3、《Inside The C++ Object Model》 (lippmans)4、《Effective C++》 (同上)5、《More Effective C++》 (同上)6、《Exceptional c++》7、《C++面向对象高效编程》8、《设计模式》9、《Thinking In C++》10、《The Standard C++ Bible》(一般推荐)11、《The Art of Computer Programming 》12、《Programming Windows》 (Charles Petzold)13、《VC++5.0技术内幕》14、《MFC 深入浅出》15、《软件需求》16、《Advanced Windows》17、《C++ primer》18、《win32程序员参考手册》19、《用TCP\\\/IP进行网际互连》20、《COM 本质论》(七)学习计划――-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。

1、《计算机组成原理》2、《操作系统》3、《数据结构》4、《汇编语言》5、《 C 》6、《 C++ 》7、《VC 技术内幕》8、《Programming Windows》9、《深入浅出MFC》10、《Advanced Windows》11、《Inside The C++ Object Model》12、《Thinking in C++》13、《Effective C++》14、数据库15、网络16、嵌入式OS和编程17、硬件单片机18、.NET和C#19、软件工程20、UNIX和Linux

电脑编程有什么书能自己自学入门的

1、《计算机组成原理》(熟悉) 2、《数据结构》(掌握) 3、《操作系统》(了解->熟悉) 4、《The C language》(掌握) 5、《编译原理》(了解原理) 6、《汇编语言》(了解) 7、《计算机网络》(了解) 8、《软件工程》(了解) 9、《关系数据库》(熟悉) 10、《The C++Languege 》(掌握) 11、《面向对象设计》(掌握;结合C++学习) (五)一些经验和体会 1、真正的程序员用C++;(一位专家说的) 2、动手去编程序; 3、动脑去思考; 4、要有良好的编程风格; 5、读书,读好书,尽量读原版书

(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书) 6、有自己的学习计划; 7、总结自己的经验教训;(准备一个笔记本,记录错误和心得) 8、不要怕学新东西; 9、要有软件工程的思想; 10、善于发现问题,然后去寻找答案; 11、向高手请教;(要虚心直到你成为高手) 12、和同行交流;(不善于交流肯定不行) 13、懂得软件的实质,不要被千变万化的表象所迷惑; 14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够) 15、学习wiodows编程主要是学习windows OS和win32 API; 16、有空了解一下嵌入式开发; 17、有空了解一下PDA软件开发; 18、了解一下.NET框架和C#语言,也许它是你新的衣食父母; 19、要有耐心,不要作浮躁的人; 20、对程序加注释,并保留你的老程序; 21、学到的东西越多,了解的越多,你就越接近专家; 22、有空去逛逛CSDN,那里有你很多知己; 23、要有信心成为一个优秀的程序员;(六)一些好书的推荐 1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988) * 2、《The C++ Programming Languague》(Bjarne Stroustrup 1997) * 3、《Inside The C++ Object Model》 (lippmans) 4、《Effective C++》 (同上) * 5、《More Effective C++》 (同上) * 6、《Exceptional c++》 7、《C++面向对象高效编程》 8、《设计模式》 9、《Thinking In C++》 * 10、《The Standard C++ Bible》(一般推荐) 11、《The Art of Computer Programming 》 12、《Programming Windows》 (Charles Petzold) 13、《VC++5.0技术内幕》 14、《MFC 深入浅出》 15、《软件需求》 16、《Advanced Windows》 17、《C++ primer》 18、《win32程序员参考手册》 19、《用TCP\\\/IP进行网际互连》 20、《COM 本质论》(七)学习计划 D―-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。

1、《计算机组成原理》 2、《操作系统》 3、《数据结构》 4、《汇编语言》 5、《 C 》 6、《 C++ 》 7、《VC 技术内幕》 8、《Programming Windows》 9、《深入浅出MFC》 10、《Advanced Windows》 11、《Inside The C++ Object Model》 12、《Thinking in C++》 13、《Effective C++》 14、数据库 15、网络 16、嵌入式OS和编程 17、硬件单片机 18、.NET和C# 19、软件工程 20、UNIX和Linux

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片