如果你觉得下面的话太繁琐,请看最后一段。
windows和linux对于开发人员来说,各有利弊。
很多开发人员认为:linux对于开发人员来说是天堂,而windows是地狱。但是,我不怎么认为,至少在有些方面,linux对于windows对开发人员并不那么友好。 windows由专业公司开发,而linux不是。专业公司开发操作系统会考虑很多因素,而linux不会考虑这些因素,至少专业公司开发操作系统时考虑的因素比linxu开发者考虑的因素要多(专业的公司肯定有继续的人员来维护,而linux不一定有)。说linux下开发比windows下开发好的开发人员是因为他对于linux比windows更了解,或者说他对linux源码更加熟悉。
对于windows来说很多东西是不透明的,而对于linux来说是透明的。但是,所谓的透明相对于不透明对于开发人员来说有好处吗,不一定。
在操作系统层面,windows的不透明与linux的透明各有优缺点:
如果windwos不透明,那么它会指定你必须实现的接口(如果windows在此考虑周全,它应该会实现),如果你实现了windows所要求的接口,你的功能就能正常运行;
而对于linux,你只能熟读源代码,在此基础上进行修改来达到你的功能。
比如要实现一个功能,在windows和linux下分别实现,比如截获IP数据包,
在windwos下可能的做法是:
遵循windows规则,实现你的功能,你只需要实现windows让你实现的接口,那么你的工作就完成了;
在linux下:
你得分析操作系统源代码,在适当的地方(仁者见仁,智者见智),插入你对内核修改;
windows这种方式的优点在此,缺点也在此,如果实现者遇到问题(涉及到操作系统其它部分),他将较难定位问题原因;
而linux的优点也在此。
在某些情况下,实现一个功能。windows仅需要你实现一个符合它规范的接口即可,如果出现问题,开发人员(对接口了解不够)较难解决;
linux下开发人员能够获取所有源码, 他需要自己DIY(这个难度较大),如果出现问题,他可以较简单的解决。