荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bigone (好好学习), 信区: Program
标  题:  [2]一些其他的专业课程
发信站: 荔园晨风BBS站 (Thu Jun  5 11:58:56 2003), 站内信件

操作系统可以随便选用《操作系统的内核设计与实现》和《现代操作系统》两书之
一。这两部都可以算经典,唯一缺点就是理论上不够严格。不过这领域属于
Hardcore System,所以在理论上马虎一点也情有可原。想看理论方面的就推荐清华
大学出版社《操作系统》吧,高教司司长张尧学写的,我们教材用的是那本。 可
以说理论涉及的比较全,在有就是他的实验指导书,操作系统这门学科同程序设计
一样,不自己试着做些什么恐怕很难搞通。另外推荐一本《Windows操作系统原理
》机械工业出版社的,这本书是我国操作系统专家在微软零距离考察半年,写作历
时一年多写成的,教操作系统的顶级教授除了清华大学的张尧学(现高教司司长)
很多专家都参加了。Bill Gates亲自写序。里面不但结合windows2000,xp详述操作
系统的内核,而且后面讲了一些windows编程基础,有外版书的味道,而且上面一
些内容可以说在国内外只有那本书才有对windows内核细致入微的介绍。
  如果先把形式语言学好了,则编译原理中的前端我看只要学四个算法:最容易
实现的递归下降;最好的自顶向下算法LL(k);最好的自底向上算法LR(k);LR(1)
的简化SLR(也许还有另一简化LALR)。后端完全属于工程性质,自然又是another
story。 推荐教材:Kenneth C.Louden写的《Compiler Construction Principles
 and Practice》即是《编译原理及实践》(机械工业出版社的译本)
学数据库要提醒大家的是,会用VFP,VB, Power builder不等于懂数据库。(这世
界上自以为懂数据库的人太多了!)数据库设计既是科学又是艺术,数据库实现则
是典型的工程。所以从某种意义上讲,数据库是最典型的一门计算机课程--理工结
合,互相渗透。另外推荐大家学完软件工程学后再翻过来看看数据库技术,又会是
一番新感觉。至少对一些基本概念与描述方法会有很深的体会,比如说数据字典,
E-R图之类的。推荐教材:Abraham Silberschatz等著的 "Database System
Concepts".作为知识的完整性,还推荐大家看一看机械工业出版社的《数据仓库》
译本。
  计算机网络的标准教材还是来自Tanenbaum的《Computer Networks》(清华大
学有译本)。还有就是推荐谢希仁的《计算机网络教程》(人民邮电出版社)问题
讲得比较清楚,参考文献也比较权威。不过,网络也属于Hardcore System,所以
光看书是不够的。建议多读RFC,http://www.ietf.org/rfc.html里可以按编号下
载RFC文档。从IP的读起。等到能掌握10种左右常用协议,就没有几个人敢小看你
了。再做的工作我看放在网络设计上就比较好了。
  数据结构的重要性就不言而喻了,学完数据结构你会对你的编程思想进行一番
革命性的洗礼,会对如何建立一个合理高效的算法有一个清楚的认识。对于算法的
建立我想大家应当注意以下几点:
  当遇到一个算法问题时,首先要知道自己以前有没有处理过这种问题.如果见过
,那么你一般会顺利地做出来;如果没见过,那么考虑以下问题:
  1. 问题是否是建立在某种已知的熟悉的数据结构(例如,二叉树)上?如果不是
,则要自己设计数据结构。
  2. 问题所要求编写的算法属于以下哪种类型?(建立数据结构,修改数据结构,
遍历,查找,排序...)
  3. 分析问题所要求编写的算法的数学性质.是否具备递归特征?(对于递归程序
设计,只要设计出合理的参数表以及递归结束的条件,则基本上大功告成.)
  4. 继续分析问题的数学本质.根据你以前的编程经验,设想一种可能是可行的
解决办法,并证明这种解决办法的正确性.如果题目对算法有时空方面的要求,证明
你的设想满足其要求.一般的,时间效率和空间效率难以兼得.有时必须通过建立辅
助存储的方法来节省时间.
  5. 通过一段时间的分析,你对解决这个问题已经有了自己的一些思路.或者说
,你已经可以用自然语言把你的算法简单描述出来.继续验证其正确性,努力发现其
中的错误并找出解决办法.在必要的时候(发现了无法解决的矛盾),推翻自己的思路
,从头开始构思.
  6. 确认你的思路可行以后,开始编写程序.在编写代码的过程中,尽可能把各种
问题考虑得详细,周密.程序应该具有良好的结构,并且在关键的地方配有注释.
  7. 举一个例子,然后在纸上用笔执行你的程序,进一步验证其正确性.当遇到与
你的设想不符的情况时,分析问题产生的原因是编程方面的问题还是算法思想本身
有问题.
  8. 如果程序通过了上述正确性验证,那么在将其进一步优化或简化。
  9. 撰写思路分析,注释.
  对于具体的算法思路,只能靠你自己通过自己的知识和经验来加以获得,没有什
么特定的规律(否则程序员全部可以下岗了,用机器自动生成代码就可以了).要有丰
富的想象力,就是说当一条路走不通时,不要钻牛角尖,要敢于推翻自己的想法.我也
只不过是初学者,说出上面的一些经验,仅供大家参考和讨论。
  关于人工智能,我觉得的也是非常值得大家仔细研究的,虽然不能算是刚刚兴
起的学科了,但是绝对是非常有发展前途的一门学科。我国人工智能创始人之一,
北京科技大学涂序彦教授(这老先生是我的导师李小坚博士的导师)对人工智能这
样定义:人工智能是模仿、延伸和扩展人与自然的智能的技术科学。在美国人工智
能官方教育网站上对人工智能作了如下定义:Artificial Intelligence, or AI
for short, is a combination of computer science, physiology, and
philosophy. AI is a broad topic, consisting of different fields, from
machine vision to expert systems. The element that the fields of AI have
 in common is the creation of machines that can "think".
  这门学科研究的问题大概说有:
  (1)符号主义: 符号计算与程序设计基础,知识表达方法 :知识与思维,
产生式规则,语意网络,一阶谓词逻辑问题求解方法:搜索策略,启发式搜寻,搜
寻算法,问题规约方法,谓词演算:归结原理,归结过程专家系统:建立专家系统
的方法及工具
  (2)联接主义(神经网络学派):1988年美国权威机构指出:数据库,网络
发展呈直线上升,神经网络可能是解决人工智能的唯一途径。关于神经网络学派,
现在很多还是在发展阶段。
  我想对于人工智能的学习,大家一定不要像学数学似的及一些现成的结论,要
学会分析问题,最好能利用程序设计实现,这里推荐给大家ACM最佳博士论文奖获
得者涂晓媛博士的著作《人工鱼-计算机动画的人工生命方法》(清华大学出版社
)。搞人工生命的同学不会不知道国际知名的涂氏父女吧。关于人工智能的书当然
首选《Artificial Intelligence A New Synthesis》Nils J.Nilsson.鼻祖嘛!

  关于网络安全我也想在这里说两句,随着计算机技术的发展,整个社会的信息
化水平突飞猛进,计算机网络技术日新月异,网络成了当即社会各个工作领域不可
缺少的组成部分,只要有网络存在,网络安全问题就是一个必须解决好的问题,学
习网络安全不是简简单单的收集一些黑客工具黑一黑别人的网站,而是要学习他的
数学原理,实现原理,搞清底层工作机制,这样才能解决大部分的现有问题和新出
现的安全问题。 总的来说信息安全学的研究还是非常深奥的,这方面体会比较深
的要算是在最近的微软杯程序设计大赛中利用.NET平台开发的那个项目My
E-business Fairy.NET过程中了。

--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.49]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店