开源代码的学习方法

来源:互联网 发布:朝鲜核讹诈中国知乎 编辑:程序博客网 时间:2024/06/06 03:20
一、历史

     开源代码作为一种特色的产物,随着物联网的进步得到了前所未有的发展。一开始,很多代码其实不是开源工程,后来软件的开发商发现根本没法用这些代码来挣钱,所以索性把这些代码发布到网上,让更多的人来进行维护和开发,比如说IBMeclipse就是这样。当然,在网络上还是存在很多志趣相同的人,因为网络让他们走在了一起,一起讨论方案,一起讨论软件架构,慢慢社区的影响力也会越来越大,这方面做的最好的就是linuxkdegnome等软件。后来,在社区发展起来后,很多的大公司为了让这些开源软件在自己的硬件设备上跑起来,纷纷对这些开源工程投入资源、建立相应的基金会、贡献代码等,比如说hp、富士通等。等到后期,一些公司主动开发开源软件,根本不指望他们能给公司带来什么收益,而是希望借此带来广阔的人气,比如说android软件。

 

    关于开源代码,其实要说的内容很多,每个人也有自己的体会。今天我抛砖引玉,就开源代码谈谈自己的一些经历,当然谈及的项目基本上都是以C语言项目为主,对于其他的搜索项目、框架项目、平台项目没什么经验、也谈不好,希望大家多多谅解。

 

 

二、特点

 

    相比较私有软件,开源代码有很多的自己的特点,我们不妨聊聊看看,

(1)开源代码质量差别迥异;

(2)开源代码形态各异,有的是完整的软件,有的只是插件;

(3)开源代码热度不一样,很多软件其实已经没有人维护了;

(4)开源代码一般没有专门的支持人员,很多事情需要自己解决;

(5)开源代码的编译环境迥异,要努力寻找合适自己的。

 

 

三、阅读代码

 

    要阅读代码,需要很多的前期条件。首先,你得把软件编译出来吧;其次你需要基本的软件知识吧,常用的调试方法也必须掌握;最后,对于软件本身需要的内容你 得明白吧,搞视频播放的得知道视频编解码的相关知识,搞压缩软件的要知道压缩的相关算法,搞搜索引擎需要知道爬行、分词和索引查找的相关知识吧,当然这些 都是一些基础条件。那么,如果我们已经做到了上面几点,接下来应该怎么做呢?

(1)下载代码,本地编译通过,生成版本;

(2)熟练使用该软件,明白软件的基本功能和操作方法;

(3)根据软件功能分析软件的模块结构;

(4)寻找到某一个软件最被可能断住的地方设置断点,查看上下文;

(5)围绕上下文判断代码的来龙去脉,逐步展开;

(6)尝试修改代码,重新编译验证自己的想法,循环之;

(7)不断拓展代码的阅读范围,注意记录笔记和与网友分享;

(8)分析代码的时候,忌快,一目十行不如看懂一行。

 

 

四、编译环境

 

    对于C语言和C++与来说,使用的比较多的还是windows环境和linux环境。其实C语言的编译其实挺简单的,windows上面有visual studio帮忙,linux上面有autoconfautomake这个强大工具,编译看上去是件容易的事情,其实不然,

(1)不同的编译器对C语言的支持标准是不一样的;

(2)编译器的不同版本也会出现编译不一致的情况;

(3)很多软件常常需要进行修改,这就是对大家基本功的考验;

(4)某些软件需要依赖第三方库,需要自己动手编译;

(5)部分软件只支持高版本的编译器,移植到低版本的编译器要靠自己;

(6)部分软件使用linux可以编译通过,但是在windowscygwin就是编译不过;

(7)部分软件编译时间长,而且内存占用大,一旦编译失败,前功尽弃;

(8)头文件失败、链接失败、数据类型转变失败,很多情况需要自己处理解决。

 

 

五、选择代码

 

    网上的代码很多,但是要选择真正对自己有用的代码。否则,对于那些低质量的代码,即使你下载下来也没有什么用。

(1)下载高质量的代码;

(2)下载的代码要结构清晰、编写规范;

(3)下载的代码要可编译;

(4)下载的代码最好一直在演进中;

(5)下载的代码最好经过了很长时间的验证;

(6)下载可以独立使用的一段代码,好阅读、好总结;

(7)使用业内广泛使用的开源代码,降低成本,尽量不要一个人战斗。

 

 

六、下载工具

 

    目前关于代码下载的办法还是很多的,当然最简单、最方便的还是直接从服务器上面进行下载使用,不过现在也有很多的下载软件了,比如说,

(1)svn工具;

(2)Git工具;

(3)ftp工具等等。

 

 

七、寻找代码

 

    我平时看代码主要是CC++代码为主,Java代码也会偶尔看一下。平时除了自己积累一些代码之外,也会主动去寻找一些代码,比如说,

(1)到sourceforge上查找相关代码;

(2)到google code上面查找具体的代码;

(3)到apache网站上寻找java的相关代码;

(4)直接到开源项目网站上面寻找代码;

(5)到csdn等网站下载代码,偶尔会有意外的收获;

(6)到图书出版社下载图书附录的代码;

(7)直接和软件作者联系,看看能不能获取相关的开源代码。

 

 

八、学习项目:

 

(01CoolPlayer:一个完整的mp3播放器

 

            

    http://coolplayer.sourceforge.net/

 

 

(02)Lua:一个完整的脚本虚拟机

                   

    http://www.lua.org

 

 

(03)FTK:一个简单GUI解决方案,windowslinux都可以使用

        

    http://code.google.com/p/ftk/downloads/list

 

 

(04)Ucos:实用的实时嵌入式操作系统代码

 

       

    http://micrium.com/page/home

 

 

(05)eMule:好用的p2p代码

 

                 

  http://www.emule.org.cn/download/

 

 

(06)Irrlicht:开源3d引擎

 

            

    http://irrlicht.sourceforge.net/

 

 

(07)TightVNC:远程控制代码,clientserver皆有

 

          

    http://www.tightvnc.com/

 

 

(08)ToDoList:强大的任务管理软件

 

                     

 

   http://www.tightvnc.com/

 

 

(09)Notepad++:实用的文本编辑工具

 

               

 

    http://notepad-plus-plus.org/

 

 

(10)Pnglibjpeglib:图片库文件

 

  http://libpng.sourceforge.net/

    http://sourceforge.net/projects/libjpeg/

 

 

(11)CUnit: 单元测试库文件

 

    http://cunit.sourceforge.net/   

 

 

(12)Libsvm: 好用的数据挖掘库

    http://www.csie.ntu.edu.tw/~cjlin/libsvm/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 托班教案迷路了怎么办 大班安全教案遇到小偷怎么办 小班孩子舞台表演找不到位置怎么办 懂你英语学完了怎么办 小班社会走丢了怎么办 帮小老鼠搬鸡蛋怎么办 小老鼠还能怎么办鸡蛋 中班教案走丢了怎么办 走丢了怎么办可后反思 社会走丢了怎么办教案 孩子一直不吃幼儿园的饭怎么办 大班安全游泳抽筋怎么办反思 汤洒了怎么办教学反思 迷路了怎么办小班详案 大班牙又痛又摇怎么办 大班安全教案着火了怎么办 小班社会生病了怎么办反思 脚扭伤了怎么办的反思 中班安全迷了眼怎么办 15个月的小孩长泡疹怎么办 墨盒加错颜色墨水怎么办 墨盒颜色加错了怎么办 uV打印有色差是怎么办 cmyk和rgb有色差怎么办 染头发新长出来怎么办 白色衣服弄上口红怎么办 口红弄到牛仔裤上怎么办 口红弄到沙发上怎么办 做了拔罐后背疼怎么办 拔罐拔出血水后怎么办 拨了罐浑身疼怎么办 拔完火罐洗澡疼怎么办 拔罐之后脊背疼怎么办? 五个月的狗胆小怎么办 电脑颜色不正常分辨率调不了怎么办 宝宝认人怎么办 五个月 新生儿42天听力筛查未通过怎么办 幼儿大便干燥拉不下粑粑怎么办 宝宝大便干燥拉粑粑带浓血怎么办 新生儿便秘4天了怎么办 写卷子的题目不认识怎么办?