给学习计算机的同僚们(初学者,进阶者,包括Linux爱好者)的学习建议

为什么我们要学习计算机,为什么我们要学习编程,有很多很多的原因,但当我们踏进计算机的世界里的时候

,我们找到了可以任由我们发挥,任由我们施展拳脚的天地,我们有了一种对学习计算机,甚至是学好计算机的渴望,

但是任何一门学科都不是那么容易学的好的,计算机更是如此,我想我们大多数人都是从编程开始学习的,逐渐形成了

对学习编程的兴趣,但是如果想真正的学好计算机,单单学习高级语言是不能达到效果的,就算你说我只想学好一门高

级语言,把它学的精通就可以了,但问题就是那么的简单么,我想不是吧。

计算机是一个整体,学习任何一门计算机课都是和其他课程联系在一起的,要学习就要有足够的深度和广度,不然不可能有深入的了解就像学习c语言一样,如果你想知道他是怎样在计算机的内存中分布的,具体是怎么运行的,就要学习汇编语言,当然计算机体系结构,计算机组成原理,是你理解计算机的基础,计算机大师knuth都非常重视汇编语言(汇编语言和机器语言是一一对应的)

,要想学好软件,脱离硬件是不可能,因为软件最终要靠硬件来运转的。当然了如果是初学者还是要一步步学的,如果你

想知道c语言是怎么运行的,想了解指针和数组的真正区别,那多学一门语言汇编语言吧,人们都说汇编语言是与机器相关的,不能移植的,但想在的pc机上用的几乎都是AMD,和intel的处理器,他们有都是互相兼容的,所以指令集的体系结构都是IA-32当然了现在都有64位的处理器了,但是这并没有什么很大的区别,仅仅是位数变多了,所能表达的数字变

大了,精度也变的更长了等等。就像学习高级语言一样学习汇编语言也是相通的,因为他们的功能都差不多,而且更加

简单,你会发现在高级语言中的语法会在汇编语言中消失,仅存的就只是指令的书写格式(相当如词法吧,当然了我可能也说的不太对,因为对汇编语言学的不是很深入,所以现在也正在有计划的去学习)。如果你学习的java,vb,c#等等那
么就请您多多看看c和c++吧,我们常常听说某种语言实现了垃圾回收机制,用某种算法不定期的把你程序中不再使用的内存回收掉,最好的例子就是JAVA
了(关于它的一句话说的挺好,一次编译到处运行,非常适用于嵌入式计算机程序的编写),不过你能用JAVA语言写出

内存回收的程序么
我想应该是不可能,JAVA对于这方面做了太多的限制,但在c/c++中却没有,你可以用库函数malloc等等去分配内存,

free去释放内存,
c++中对应的是(new,delete)实现的跟方便些,你也可以用系统调用brk(其实库函数也是调用了他,只不过做了一些

更加完善的工作而已)去分配,而且他可以直接去操作数据到位(&,|,~),如果说
高级语言是汇编语言的一个子集的话,那么JAVA在这方面就是C/C++的一个子集,我并没有说java不用学,不好,而

是在学习他之前
应该多去学学C/C++,(注意语法不是特别的重要,重要的是你怎么能在学完语言以后去灵活的运用他),计算机体系

John L. hennessy
出版 :机械工业出版 ,这本书很不错,能够很好的把软硬件的关系数清楚,而且不像一些国内的体系结构教材,

看的非常的费劲
谁然讲的都是很清楚,但不能从读者的角度去考虑问题,这本书会让你看的爱不释手的,恩,对于我来说却是如此,不

适合初学c语言的
,要有一定的c语言基础。我想还有一点要和大家分享一下,就是学习计算机切忌浮躁,不要像追星族一样,看到一项

新出的技术就去
学习,新技术会不断的变的,而且很容易让你迷失方向,一定要打好基础,关于计算机基础的书一定要多看,不要死记

硬背,但你发现
你需要死记硬背去记住书中的知识的时候,那么我可以给你个建议把此书放在书架里,去看一些能够引导你一步步的从

本质上理解知识
的书,首选一些计算机科学丛书,图灵丛书(机械工业出版 ,人民邮电出版 ,电子工业出版 ),我们学校用的是

清华大学自己出版
的计算机书籍,虽说清华大学在工科方面很不错,但是出版的计算机书籍就我个人来说真的不怎么好,相对于国外的计算机书籍来说
差的真是太远了,我很不明白为什么要用清华出的,有一本关于Linux/unix内核的书我觉得挺好的,书名是 Linux内核源代码情景分析
浙江大学出版的,我目前正在潜心学习这本书,虽然很难,但真的不错,很少有由我们自己写的关于Linux内核这方面

的好书,这本就是
不可多得的好书。说了太多关于计算机书籍的话题了,但我认为一本好的书籍真的能给我们很大的帮助
还能从中得到快乐。

如果你只想学习计算机去赚钱的话,那么你大可以不必去学习很多东西,对于你也没有用处,如果你是对计算机有着非常浓厚的
兴趣的话,那么就塌下心来,一步一步去在计算机的海洋里傲游吧,真是一件美妙的事情。

现在我告诉大家自己认为的关于学习计算机的路程

(1) c语言(可以去学谭浩强写的c语言的书,如果能找到K&R C 那就更好,自己是没有找到,要想进一步去学习的话

去看 c缺陷与陷阱,c专家编程
,这两本书很经典的)

(2)c++语言(c和c++其实并不一样,可以说c++是继承了c,增加了面向对象的思想,如果能找到c++program language

与他的妻子)也非常的不错,还是没有时间去看,只看了200多页,讲的太好了,有时间自己一定会去看完的,这本书

讲的主要是教你怎么运用C++语言去写出好的文章)

算法和数据之间的结构的理解也很重要,我想如果你有了c++的学习经验学习数据结构应该不太
困难,一直以来我都不是很明白抽象的数据结构(abstract data type ADT)的抽象是怎么回事是什么意思,之后看

了c++沉思录才恍然大悟,抽象就是把想关注事务的部分拿出来,不关心的不去考虑,就像我们人类,人有很多属性,

姓名,年龄,体重等等,当我们研究具体问题是
也许只关心人的属性的某些方面,例如姓名,年龄,那么就把它拿出来也就是术语抽象,在c/c++语言
就用用户自定义的数据类型来去定义人:
struct people{
char name[10];
int age;
};
struct 是structure(结构)的缩写,这样理解就非常简单了么,所以c++沉思录非常的好。

(3)算法与数据结构(有很多好的书籍,大家可以去找找,反正清华出的不敢恭维)

(4)汇编语言,计算机组成原理,计算机体系结构 微机原理(我认为刚才我说 计算机组成与设计——硬件/软件接口

就很好的包含了这些内容挺不错的,当然了学习是无止境的。

之后才能开始os的学习,我认为OS是让你在学习计算机上有一个质的飞跃,因为现代的程序设计一般都是基于OS的,如

果不了解OS,那么就不可能学好程序设计,就像建造房子一样,房子要建在地上,如果你不了解当地的环境,地质,这

么怎么能建造好的房子呢(5)操作系统原理的学习,数据库原理的学习(有一本挺好的书,自己是看完了一遍,电子

至于 络原理,软件工程,通信安全,鉴于尚在学习中,就不说了。

哦,还有编译原理,是一门教你怎么把语言翻译成汇编语言,机器语言的一门课,有很多很难的算法,LR算法就很不好

理解,至于要什么时候学那就在学好语言和算法的基础上去学习吧。记住千万不要赶时髦去学什么VC,BC,包括MFC之类的,他们只是开

发程序的工具而已
帮你做了一些辅助性的工作,所以好好学习语言吧!还有就是对于什么等级考试一点作用都没有,如果要是我说现在的

等级考试
只是人家赚钱的一种方式,已经变质了,我不知道为什么不跟上时代的脚步,把它们给取消了,不止是计算机等级考试

,英语等级考试也没有用,不管怎么说他都是一门纸上的考试,对于提高自己没有作用,反而会有反作用。如果你只是

为了拿一个计算机
考试的凭证,那我劝你还是止步吧,我们是为了学习计算机而学习计算机而不是为了学习计算机而去拿那个一文不值得

证,不然我真不知道你学习计算机还有什么意思。如果真的是对计算机感兴趣那就塌下心来,一步一个脚印的去探索计算机世界的奥秘,多么美好的事情呀。很多人开始学习的人都是梦想成为黑客,用几个程序去攻击别人的漏洞,但什么

是黑客,天才的程序员才能配的上,就像Linus等一样,我们的目的是去建造宏伟的建筑,而不是去炸毁他那是骇客所

做的事情,如果你认为别人的建筑有不足之处大可以指出来。这只是我个人的意见,有不足之处请指出,谢谢了!

还有就是谈谈自己对于Linux学习的看法。学完os以后自己就觉得应该去学习os的内核了,其实当自己刚学os的时

候就特别特别特别的想去自己写一个os,看了很多东西还是一无所获,当然了这是必然的,因为自己连os有什么功能,

不要受那些书籍里的言语的迷糊,说其(c#, VB, VC++.net, VB.net等等)是怎么怎么的好,可是他怎么没有提及他是不可移植性的呢
不说了,Linux内核这样大的阿房宫还要我去游览呢,找个好的导游带我去探险吧!

学习linux续:

自己也是从今年下半年开始了解linux的,这还要感谢的自己的OS老师,如果没有他让我们这些学生知道了linux,恐怕我现在也不知道 linux呢。之前我和大多数人一样在用windows,不管是应用还是编程,一开始总觉得还是蛮好的,可是学完了OS原理以后,总觉得缺点什么,自己当初就有想写一个OS的想法,
可是却无从下手,除了基本的语言学习外,有太多的东西需要自己去学习,因为当初自己在学习OS原理
后,没有真正的理解,进程和线程,SMP,和信 量都只是泛泛的知道而已,所以自己清楚只有在完全
明白OS的基本概念和算法以后才能进一步的去学习,于是自己用一个月的时间看完了 William Stallings写的操作系统——精髓与设计原理,感觉和自己当初看陈向群写操作系统完全不一样,虽然在理论了,可是于是自己有进一步去学习linux内核0,11版的完全注释,可是看了几天
就看不下去了,什么也看不懂makefile是什么,gcc是什么,它是怎么编译,以前在windows下自己只知道写完程序然后由TC后VC 去编译,可是现在却完全的茫然了,通过上 和从其他书籍了解到,要想
理解linux,要先学会去用linux,只有这样才能感性的了解linux,于是自己从 上下载了red hat 的后继版本
fedora core 9.0内核是2.6版的,安完之后,进入了GNOME的桌面环境,我发现自己来到了一个新的世界
自己完全成了一个陌生人,完全不知道怎么操作,安软件原来还有这么多的方法,./configure是什么
make ,make install是什么自己当初都快崩溃了,自己想在上面看电影,可是却什么都看不了RMVB也无法播放,听说mplayer挺不错的,我就下了源码包,解码包,皮肤包,然后通过书籍和 上教的步骤一步步的去安,花了几天的时间才能完全的安上,皮肤也出现了,真是不易呀,但是全屏又有画面播放的问题于是自己下了个realplayer 11的rpm包安装到还是顺利,yum到还是用的 不太明白。这些经历以后自己就通过一本关于 GNU/Linux的书籍去了解应用linux(自己当初买这本书的时候,还有些犹豫,怎么会有GNU,这是什么呢,应为自己买书的那个书店只有这一本带 linux的,所以自己就买了,后来才知道,
GNU代表着自由软件,它是GNU ‘ s not Unix 的递归表示),还是有一点点感觉的,呵呵。
大概了解了 linux后 ,自己就去看关于 linux内核的API,找到了 advanced programming in the unix environment,发现真的和其他人说的一样 ,Richard Stevens写 的 太经典了,自己到现在看了有 10章了
,还在继续学习。因为自己在学校有很多时候不能够用计算机,自己觉得现在可以去看linux内核了,
于是我就去看了,linux内核源代码情景分析 ,但自己对于硬件和计算机体系结构根本就是不了解 ,虽然 在学OS 原理时 ,学校也开了微机原理 和体系结构,因为体系结构是考查课,自己没有完全的 重视,所以自己只能重新开始计算机体系结构的学习,用的是计算机组成原理——硬件与软件接口 ,也挺不错的,可以说自己通过这本书真正的了解了什么是硬件什么是软件 ,至于微机原理 ,我真的不想说什么,很重要MMU不讲 ,汇编的也没有真正的讲完 ,可以说我是 通过计算机组成原理——硬件与软件接口这本书,才真正的了解汇编语言虽然是MIPS的体系结构 不是intel的 ,真的很不错,自己也知道了 c语言是
如何 翻译成汇编语言的 ,虽然很想去深入的去学习汇编语言,但时间太有限了,还要去应付考试,所以
只能以后去看了,真是舍不得呀!
在看完计算机组成原理后,自己就继续看情景分析看完 存储管理 以后 ,发现自己 反过来再去看这张,自己完全忘记了,我想这种方法太差了,通过不断的了解才知道还是应该看看linux内核设计与原理和深入理解linux内核,了解linux内核是怎么设计,为什么会这样设计,我结合自己现在的情况把这两本书的关于存储管理的基本看完了,然后在去看情景分析的存储管理的源代码,发现原来自己怎么也不明白的,现在竟然一下子就明白了,这给自己增加了很大的信心,相信自己一定能够在这条道路上走下去
,现在自己正在学习中,不管是应用linux,通过linux编程,还是看linux内核,我发现我越来越喜欢linux
了, 在linux下一切都变的那么的简单,我离不开linux了! 文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25045 人正在系统学习中 相关资源:Scrum敏捷软件开发_敏捷开发-专业指导文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2010年8月19日
下一篇 2010年8月20日

相关推荐