是不可能很好的理解它的,它必须要有很多实践经验以后,才能体会其中的一些道理,而且国内的“软件工程”教材一般都比较“教条主义”,建议浏览一遍即可,知道个大概,了解一下大型软件的开发流程是怎么样的,就可以了(并且也是需要的),至于其中的诸多概念,重在理解,能理解多少就理解多少,千万不要去“背”,没有用的。“计算方法”这门课现在可以说是实用价值剧减,因为基本上所有的算法都有现成的程序库可以调用的,所以大概了解一下就行了,真到要自己开发算法的时候,不管你当时学得再好,肯定还要回过头来看这些书的,因为这之间你根本不曾使用过它们,早忘记了。至于“编译原理”有人认为它很重要,我认为做个了解,大致上知道是怎么回事就行了,因为你不太可能会去开发一个编译器,但是在实际中用到的机会也是有的,比如我有一次编程时就需要用到“编译原理”的知识来做一个“词法分析程序”,用来处理用户输入的函数表达式,再调用几个库函数来做定积分,但总的来说“编译原理”只对很有限的一部分程序的编写起到了实际的作用,所以,先了解一下,等到用时,再来细看。“离散数学”是前面提到的“数据结构”的理论基础,如果“离散数学”学得好,理解“数据结构”会更容易些,所以还是花点时间看看吧。r
推荐一本书:《编译原理及实践》,作者Ke
ethCLoude
,此书附录中有一份Ti
y语言编译器的源代码,对照着前面的理论来看就不会像清华版的《编译原理》那样不知所云(我们当时用的就是这本教材,后来我去买了Ke
ethCLoude
的《编译原理及实践》来看,很多问题才豁然开朗)。r
另外,我想说的是,“软件工程学”其实现在才处在一个初级的发展阶段,CMM、XP等等的理论打得不可开交,各说各的理,几乎达到了互相对骂的程度。作为一个初学者,特别是“实践经验缺乏”的初学者,我建议你对各种理论多了解,注意我指的是“了解”,不是去“背”其中的条条框框,当你了解了大多数现在的主流软件工程思想以后,就会形成你自己的比较客观的思想了,当然还需要结合一些实践的经验,这是以后的事了。至于看哪些书,太多太多了,自己去找吧。r
5。“不太有用”的。其实说这些课“不太有用”已经是客气的了,它们其中的一些其实就是“没用”。这些课是:“自动控制原理”、“通信原理”、“电路原理”、“数字电路原理”、“模拟电路原理”、“复变函数与积分变换”、“线性代数”、“概率论与数理统计”、“高等数学”。其中,“自动控制原理”和“通信原r