日期:2014-05-16  浏览次数:20771 次

【求助】向两年以上工作经验的前辈请教问题
本帖最后由 steptodream 于 2011-05-22 21:58:09 编辑
由于没有做过真正意义上的软件开发,所以想向csdner请教几个心中疑惑好久的问题。

1.linux下环境编程,真的有那么多说道么?就比如说:unix环境高级编程这本书里讲了很多很多的知识。但是实际工作中真的都会用到么?--》据我所知,好像只有创建线程和信号量这两个用的比较普遍。

2.对于一个很大的工程,base代码大概要几百M 上G的样子吧。大家是如何阅读的呢?大概需要多长时间呢?这个我首先解释一下,有人可能会说,这个东西是不能量化的,因为它涉及到方方面面,这个我承认,在这里我只想知道一个参考值,平均值,我想这个肯定是有的。这个问题困扰了我很长时间。所以希望大家能在这个问题上多多帮助我,不胜感激!我所接触的主要有两种方法:1,跟变量,个人觉得这种方法对于快速解决问题有一点点作用,对于理解代码,属于事倍功半,欲速则不达的类型呵呵~2,就是一步步一个函数一个函数看。有个师兄曾经和我说他的四年经验总结起来,就是在一个工程中,知道哪些代码粗看,哪些代码需要细看。至于其他的一些linux下的东西,他也是几乎小白级别。

3.我的师兄和我说过,他的工作最大的工作量就是bug fix。至于每年的代码量可能只有几K行,一万行左右。因为都是在base 代码的基础上进行修改的。所以我的第三个问题是,是否大部分软件公司都是以改bug为主,工作中需要的主要技能是对大工程代码的理解速度和深度。也就是说快速看懂。

4.最后一个问题可能比较笼统,是最不收人待见的问题--(因为属于等吃现成的)但是在这里还是一并说了吧。自己还是懒惰的。想从事嵌入式linux的工作,那么我现在需要怎么做?希望能通过应用层和内核层两个方面得到解答。前提是通过在工作中提高以外的方式。找个开源的代码学习??还是有其他更好的办法?总觉得单纯看书效果不好,而且一本书那么厚,看完一本书要好长时间,何况一本书是要看几遍才能大概领会其中的内容的,前辈们你们说是这样的吧?


由于自己的语言组织能力有待提高。以上说的比较零散,希望没有影响大家的理解。
希望前辈们能指点迷津。不胜感激!

------解决方案--------------------
我linux一段时间了,其实文件系统用的也是非常多的,很多权限的问题,apue上都讲的不清楚呢,不过这样的东西比较少。外包可能接触不到核心的东西。如果你要学习的话,可以找下小的开源项目来学习下,这样就了解了一个工程的完整的开发。其实很多大工程也是在小核心上的一步一步的完善而已。通过一个小的项目,对你了解一个工程的形成还是非常有用的啦。

就是一步步一个函数一个函数看。有个师兄曾经和我说他的四年经验总结起来,就是在一个工程中,知道哪些代码粗看,哪些代码需要细看。
说的很对,哪不懂就gdb一下。有的地方看框架,有的地方就要研究细节。

光看书不行,找个开源的项目分析吧。不过你可能没有业余时间。
------解决方案--------------------
中真的都会用到么?--》据我所知,好像只有创建线程和信号量这两个用的比较普遍。

2.对于一个很大的工程,base代码大概要几百M 上G的样子
------解决方案--------------------
基础很重要,同样的代码,不同的人阅读的效果是不一样的
很多大的工程的确只是fix bug,但有时候也会遇到增加某些模块的问题,
这个时候就体现基础,和代码阅读能力的时候,fix bug你能做,但很有可能,加模块你就做不了了,
要么加的很烂,要么不稳定,要么。。。。

所以,fix bug只是工作中的一个而已,重要的还是基础
------解决方案--------------------
实x话x实x说,先x找x个x项x目x从x改x代x码x开x始x吧~!

成x长x的x第x一x步x永x远x是x模x仿。


除x非x你x机x会x非x常x非x常好,遇到一个刚刚开始的项目,从新x设x计x编x码。

但是,作为没工作经验的情况下,开发大量的基x础高x效多x复x用的代码,难度还是挺x高的。
------解决方案--------------------
1.linux下环境编程,真的有那么多说道么?就比如说:unix环境高级编程这本书里讲了很多很多的知识。但是实际工作中真的都会用到么?--》据我所知,好像只有创建线程和信号量这两个用的比较普遍。

能够解决两个以上问题的书,就是好书了。如果一本书翻完,讲的东西你都懂,这样的书就白看了。看一本书,平时看的时候是翻看,一天内要看完,只需记住这本书的知识点,工作时遇到问题知道翻那本书,就行了。要不然计算机书那么多,就当小说看,一年也看不了几本的。据我所知,创建线程和信号量是工作中最没用的知识。写书的人讲这些知识,是炫耀自己懂得比别人多的。因为别人都不想了解这些知识。

2.对于一个很大的工程,base代码大概要几百M 上G的样子吧。大家是如何阅读的呢?大概需要多长时间呢?这个我首先解释一下,有人可能会说,这个东西是不能量化的,因为它涉及到方方面面,这个我承认,在这里我只想知道一个参考值,平均值,我想这个肯定是有的。这个问题困扰了我很长时间。所以希望大家能在这个问题上多多帮助我,不胜感激!我所接触的主要有两种方法:1,跟变量,个人觉得这种方法对于快速解决问题有一点点作用,对于理解代码,属于事倍功半,欲速则不达的类型呵呵~2,就是一步步一个函数一个函数看。有个师兄曾经和我说他的四年经验总结起来,就是在一个工程中,知道哪些代码粗看,哪些代码需要细看。至于其他的一些linux下的东西,他也是几乎小白级别。

除非脑子出问题了,否则不会有人去读几百M的源代码的,高校教育工作者闲得发慌,可以写一本源码分析之类的书,提高一下知名度。实际情况是,如果你是项目组成员,在一个几百M的项目里面工作,只需要搞懂你负责的模块就可以了,如果是项目经理,还要对项目的整体架构有些了解。微软一个office项目组一千多人,一个版本要搞一年多时间,你拿到这个项目的源代码,当小说看,一辈子也看不完的。

3.我的师兄和我说过,他的工作最大的工作量就是bug fix。至于每年的代码量可能只有几K行,一万行左右。因为都是在base 代码的基础上进行修改的。所以我的第三个问题是,是否大部分软件公司都是以改bug为主,工作中需要的主要技能是对大工程代码的理解速度和深度。也就是说快速看懂。

国内的公司不出意外都是这样,因为改bug的速度跟不上产生bug的速度,统计数据是,一年产生一万行/人的公司,(这种公司本来就很少)每改掉两个bug,就会增加3个bug.

4.最后一个问题可能比较笼统,是最不收人待见的问题--(因为属于等吃现成的)但是在这里还是一并说了吧。自己还是懒惰的。想从事嵌入式linux的工作,那么我现在需要怎么做?希望能通过应用层和内核层两个方面得到解答。前提是通过在工作中提高以外的方式。找个开源的代码学习??还是有其他更好的办法?总觉得单纯看书效果不好,而且一本书那么厚,看完一本书要好长时间,何况一本书是要看几遍才能大概领会其中的内容的,前辈们你们说是这样的吧?

不见得要在工作中才能提高,最好的方式是买一块开发板,自己写程序down下去run,我还没见过哪个专职的代码工人是靠纯看书学会敲代码的。从嵌入式层面来说,应用层和内核层的代码差不多,想学哪层就编哪层的代码down下去试。
------解决方案--------------------
1.找几本好书看看。如果书都看不懂,你还希望看懂代码?
做什么东西都要理论基础的。把技术书当成小说看,几天看一本不是问题吧,看完掌握相关概念,理解某些关键地方就可以了。

2.找个感兴趣的开源的软件,尝试做一些改进,