列一份跨平台开发的读书清单[C/C++ (or Java?)]
如果要开一份跨平台开发的读书清单:
0. 深入理解计算机系统
将它列为0,实在是因为它是一本从程序员的角度去解释一个计算机系统。它解释了一些最基本的东西。
1. Unix环境高级编程
如果觉得有些深,可找本简单的<<GNU/Linux编程指南>>垫垫底
2. Windows核心编程
这本书内容太厚实了,3比它简单明了些
3. Win32多线程程序设计
4. Unix网络编程 (Richard那几卷)
这个不说了。
5. C++程序设计语言(or C++ Primer)
这个是用C++的参考用书, C语言的参考书太多了,有个<<C专家编程>>似乎不错,应该适合于有经验的人去看。
6. 深入Java虚拟机
java表面上光鲜,内部的虚拟机,了解得越多,对多平台下开发,可能犯的错误会越少。尤其是不同厂商的jvm。也许你的应用在Sun jvm下跑得好好的,然后移到IBM的AIX下,莫名其妙的问题出来了。然后那个挠头啊。
7. 数据库系统全书
这是stanford大学的两本教材的合集(一本是数据库系统基础,另一本是数据库系统实现),这是目前我看到的介绍数据库系统理论与系统实现的最好书集,看了它,会知道一个DBMS要做起来,会涉及到那么多核心的算法和外部数据结构。了解之后,再做各商业数据库底层开发,畏惧感会少很多。你甚至可以带着疑惑和好奇,翻翻sqlite和postgresql的源码,看看一个小型DBMS和一个大型DBMS的实现究竟是怎样的
8 ~ 10
不好推荐了,根据你的职业路线,如果是走Java,那么可能需要看大量的开源框架方面的资料或图书(J2EE, Spring, Hibernate, Struts)和一些必备XML处理方面的知识积累(SAX, DOM, XSLT, ...)
如果是继续走C/C++开发企业级应用,也许你应该仔细看看一种大型DBMS的底层API的详细用法(越细致越好,越少犯错), Oracle的OCI(我还是不推荐OCCI了,对于职业技能不会有什么提高), DB2的CLI,Sybase ASE的OpenClient, MySQL的C-API。它们都是可以做到跨平台开发的。
如果是想做DBA,那么好多书可能用不着了,直接奔厂商的原版文档和在线论坛而去,可能越深入做下去,越会牵扯到各种操作系统和存储设备以及复杂网络系统的技能。但是我相信,一个优秀的跨平台程序员,只要他 (她)有兴趣,并且愿意事事亲为,是能成为一名成功的DBA的。
至于为什么前边推荐看一些操作系统下边进程、线程、网络通信方面的基础编程用书,是因为企业级或者大型互联网应用,往往是多线程或多进程,并涉及到网络通信,同时数据库又不可或缺。
上述清单,还只是纯粹涉及到编程开发,如果牵扯到设计方法和软件工程,那清单就长了。
<<代码大全>>, <<敏捷软件开发>>, <<设计模式>>, <<UML***>>序列
其实,写了那么多,只是勉为推荐。真正实施起来未必是那么回事。开发如绣花,必须得动手。光看不练,是不会有什么效果的。