啃ACE源码心得交流
ACE源码值得一啃吗?若值得一啃,请版主把该贴置顶。让大家把心得写下来,供大家一起探讨学习! 我先承认,自己看的比较少。更多的是用的时候出现问题,就去追踪了。 最近在看Socket封装类的源码,比较简单但封装得还行,看着看着,忽然间意识到ACE如此之强大,又非常稳定,用的人是日益增多,何不把ACE的源码啃一下,岂不收获更大。
后来评估一下,个人觉得啃下ACE的源码至少对网络编程,系统编程,面向对象的封装,以及系统架构都会有很大的收获。
借助ACE源码这个平台,让自我各方面能力都得到提高,岂不是一举多得。呵呵 如果楼主是学生的话,把时间花在这上面绝对值得滴。
但是如果是开始工作了的话,建议还是用到哪里,再着重学习吧,
遇到问题看源代码解决问题,未尝不是很好的办法。
否则时间上的开销,如楼主所说如果对网络编程,操作系统,面向对象等等
都已经有了相当程度上的了解的话,有可能是可以接受的,
否则很可能是一个极其漫长的过程。 不管是不是学生,学习效率都是很重要的。
源码可以看,但要有重点的看。
建议先了解原理再看源码的细节。或者当不明白原理时看源码印证自己的判断。
如果上来就看源码的细节,会被很多复杂的的旁支末节干扰对主思路的理解。
子曰:"不愤不启,不悱不发,举一隅不以三隅反,则不复也.",教要追求效率,学也要追求效率。
我个人的经验是如果暂时不用,理解记住原理就可以了。工作用到时再去考究细节。学理论要看书,但是有时候书上有表达的不太清楚不易理解的地方,这时就要看源码。有时候看书容易理解,有时候看代码比较好记忆,总之怎样方便学习和记忆怎样来。
总之就是要重点突出,ACE库非常大,全看完要很花时间,除ACE外还有很多其他值得一看的优秀代码,人的时间很宝贵,所以一定要追求使用效率。 wishel 所言极是,说的对极了! wishel 说的一点没错,学ACE看书很重要,先看书再看源代码是学习ACE的不二法门。
不过我想与我阐述的问题还是有差别的,我想说的问题是:
对于学生来说,多半零基础或者理论有余,实际经验不足,不知道该如何下手,
学习ACE要学习很多东西,在看书以及啃源代码的过程中,会触及到日后从所事行业中非常需要的相关技能。
尽管学习ACE的过程仍然会很缓慢,会迂回,会走很多弯路,
但是坚持下来必定会有收获,因此花费时间去从头到尾的学习是值得的。
wishel 所说的经验与效率更是我所赞同的,不过这需要不断地努力与日积月累,
以形成自己对问题的看法以及解决问题的经验。对于初学者谈经验与效率意义不大。
反而我觉得初学者多吃些亏走写弯路不是坏事,贵在坚持。
对于初学者看书亦或看源代码,都不是一遍两遍可以理解其精髓的,即便被其他的旁枝所干扰,
花费了时间,我想从另一面看也是扩充自己的知识面了,都不是坏事。
等到对知识的认识不再是几个孤立的点,有了体系的认识之后,
自然而然知道哪里是重点,哪里是更适合自己学习的方向了,急不来。
对于已经从事工作的人,我们认为多半有一定实际操作的经验了,或者对于ACE的学习是带有某种目的的,
所以我也提到,遇到问题解决问题,把精力花自己工作业务的重点上,使用要看书,想用精则需啃源代码,
对于提高自己的能力仍然也是很有帮助的。对于这些人包括我自己,相信都深刻的理解效率的重要性。
我十分赞同wishel 对于效率的看法,不过我想对于学习与技术掌握的不同阶段,
效率的定义还是有差别的,一概而论的去追求效率,欲速则不达。 我也赞同modern的说法。在不同的阶段,效率的定义不同。
学生或者初学者经验少,必须要硬啃很多东西,知识面以宽厚为主,不必过于追求深度。这时的主要任务是打好基础,基础不牢,将来追求深度时就会遇到问题。
这时的任务是多记,主要追求的效率是记忆的效率。
但最终要有成就,就要向深度发展,形成自己的成熟的深刻的理论体系。细节的东西就处于辅助和次要的地位了(这点是个人看法,可能会有争论)。比如项目初期,首先要判断应采用什么架构,多线程还是多进程?reactor还是proactor或者混合?这种决策就需要扎实的理论基础了。确定大的架构之后的具体实现则开始考虑细节,比如程序复杂度和运行性能的权衡,开发、运行成本和维护成本的权衡。
掌握理论要求多思考,这时追求的主要效率是思考的效率,包括学习别人思考成果(效率高)和自主思考(花时间相对较多,但有时不可少)的效率。
以上是我自己的体会,不同职务不同专业的人的体会可能也不一样。原则是有的放矢,重点突出,追求时间的使用效率。但具体做法要因人因时而异。
页:
[1]