计算机专业心得体会(10)

时间: 01-20 作者:刘高瞻 栏目:心得体会

面讲了一些windows编程基础,有外版书的味道,而且上面一些内容可以说在国内外只有那本书才有对windows内核细致入微的介绍,

如果先把形式语言学好了,则编译原理中的前端我看只要学四个算法:最容易实现的递归下降;最好的自顶向下算法ll(k);最好的自底向上算法lr(k);lr(1)的简化slr(也许还有另一简化lalr)。后端完全属于工程性质,自然又是another story。

推荐教材:kenneth c.louden写的“compiler construction principles and practice”即是《编译原理及实践》(机械工业出版社的译本)

学数据库要提醒大家的是,会用vfp,vb power builder不等于懂数据库。(这世界上自以为懂数据库的人太多了!)数据库设计既是科学又是艺术,数据库实现则是典型的工程。所以从某种意义上讲,数据库是最典型的一门计算机课程——理工结合,互相渗透。另外推荐大家学完软件工程学后再翻过来看看数据库技术,又会是一番新感觉。推荐教材:abraham silberschatz等著的 "database system concepts".作为知识的完整性,还推荐大家看一看机械工业出版社的《数据仓库》译本。

计算机网络的标准教材还是来自tanenbaum的《computer networks》(清华大学有译本)。还有就是推荐谢希仁的《计算机网络教程》(人民邮电出版社)问题讲得比较清楚,参考文献也比较权威。不过,网络也属于hardcore system,所以光看书是不够的。建议多读rfc,里可以按编号下载rfc文档。从ip的读起。等到能掌握10种左右常用协议,就没有几个人敢小看你了。再做的工作我看放在网络设计上就比较好了。

数据结构的重要性就不言而喻了,学完数据结构你会对你的编程思想进行一番革命性的洗礼,会对如何建立一个合理高效的算法有一个清楚的认识。对于算法的建立我想大家应当注意以下几点:

当遇到一个算法问题时首先要知道自己以前有没有处理过这种问题.如果见过那么你一般会顺利地做出来如果没见过那么考虑以下问题:

1. 问题是否是建立在某种已知的熟悉的数据结构(例如二叉树)上如果不是则要自己设计数据结构。

2. 问题所要求编写的算法属于以下哪种类型(建立数据结构修改数据结构遍历查找排序.)

3. 分析问题所要求编写的算法的数学性质.是否具备递归特征(对于递归程序设计只要设计出合理的参数表以及递归结束的条件则基本上大功告成.)

4. 继续分析问题的数学本质.根据你以前的编程经验设想一种可能是可行的解决办法并证明这种解决办法的正确性.如果题目对算法有时空方面的要求证明你的设想满足其要求.一般的时间效率和空间效率难以兼得.有时必须通过建立辅助存储的方法来节省时间.

5. 通过一段时间的分析你对解决这个问题已经有了自己的一些思路.或者说你已经可以用自然语言把你的算法简单描述出来.继续验证其正确性努力发现其中的错误并找出解决办法.在必要的时候(发现了无法解决的矛盾)推翻自己的思路从头开始构思.

6. 确认你的思路可行以后开始编写程序.在编写代码的过程中尽可能把各种问题考虑得详细周密.程序应该具有良好的结构并且在关键的地方配有注释.

7. 举一个例子然后在纸上用笔执行你的程序进一步验证其正确性.当遇到与你的设想不符的情况时分析问题产生的原因是编程方面的问题还是算法思想本身有问题.

8. 如果程序通过了上述正确性验证那么在将其进一步优化或简化。

9. 撰写思路分析注释.

对于具体的算法思路只能靠你自己通过自己的知识和经验来加以获得没有什么特定的规律(否则程序员全部可以下岗了用机器自动生成代码就可以了).要有丰富的想象力就是说当一条路走不通时不要钻牛角尖要敢于推翻自己的想法.我也只不过是初学者说出上面的一些经验仅供大家参考和讨论。

为你推荐