首页 > 其他分享 >随想录(开源代码的学习方法)

随想录(开源代码的学习方法)

时间:2022-11-23 13:05:26浏览次数:75  
标签:http 代码 随想录 学习 编译 软件 源代码 下载


 

一、历史

 

    开源代码作为一种特色的产物,随着物联网的进步得到了前所未有的发展。一开始,很多代码其实不是开源工程,后来软件的开发商发现根本没法用这些代码来挣钱,所以索性把这些代码发布到网上,让更多的人来进行维护和开发,比如说IBM的eclipse就是这样。当然,在网络上还是存在很多志趣相同的人,因为网络让他们走在了一起,一起讨论方案,一起讨论软件架构,慢慢社区的影响力也会越来越大,这方面做的最好的就是linux、kde、gnome等软件。后来,在社区发展起来后,很多的大公司为了让这些开源软件在自己的硬件设备上跑起来,纷纷对这些开源工程投入资源、建立相应的基金会、贡献代码等,比如说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上面有autoconf和automake这个强大工具,编译看上去是件容易的事情,其实不然,

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

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

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

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

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

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

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

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

 

 

五、选择代码

 

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

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

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

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

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

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

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

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

 

 

六、下载工具

 

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

(1)svn工具;

(2)Git工具;

(3)ftp工具等等。

 

 

七、寻找代码

 

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

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

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

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

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

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

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

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

 

 

八、学习项目:

 

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

 

            

随想录(开源代码的学习方法)_linux

    ​​http://coolplayer.sourceforge.net/​


 

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

                  

随想录(开源代码的学习方法)_windows_02

    ​​http://www.lua.org​


 

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

       

随想录(开源代码的学习方法)_linux_03

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


 

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


      

随想录(开源代码的学习方法)_windows_04

    ​​http://micrium.com/page/home​


 

(05)eMule:好用的p2p代码


                

随想录(开源代码的学习方法)_编译器_05

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


 

(06)Irrlicht:开源3d引擎


           

随想录(开源代码的学习方法)_windows_06

    ​​http://irrlicht.sourceforge.net/​


 

(07)TightVNC:远程控制代码,client和server皆有


         

随想录(开源代码的学习方法)_编译器_07

    ​​http://www.tightvnc.com/​


 

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


                    

随想录(开源代码的学习方法)_工具_08


 ​​http://www.abstractspoon.com/​

 

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


              

随想录(开源代码的学习方法)_windows_09

 

 


 

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

随想录(开源代码的学习方法)_windows_10


 

 

 

标签:http,代码,随想录,学习,编译,软件,源代码,下载
From: https://blog.51cto.com/feixiaoxing/5881007

相关文章

  • 随想录(用好红黑树)
      红黑树作为一种特殊类型的二叉树,在软件中有很多的用处。但是在网络上面,讲解红黑树的文章和博客很多,可是真正找一份可以信赖的、方便使用的红黑树代码却不多。本篇文章......
  • 随想录(招聘怎样的员工)
      对很多IT公司来说,招聘都是一件大事。无论是校园招聘、社会招聘,公司都会投入到很大的人力和财力来开展招聘工作。一个公司的人员构成,很大程度上决定了这个公司的业务形......
  • 代码随想录第四十二天 | 动态规划
    今天是第四十二天,是动态规划中的背包问题 416.分割等和子集classSolution{publicbooleancanPartition(int[]nums){intsum=0;intn......
  • 随想录(关于培训)
      目前,社会上的培训很多,有技能型的培训、有团队建设的培训,还有一些少儿培训、应试培训和领导力培训。当然,其中最扯的就是成功学培训,当然今天我们不说它。我们谈一谈关于......
  • ftk学习记(多窗口篇)
      在上周末的博客中,我们谈到了listview,今天可以看看效果图如何。  如果大家细心一点,可以发现list中的item有点差异,有兴趣的朋友可以思考一下原因是什么,其实可以代......
  • ftk学习记(combox篇)
      上一篇文章谈到了多窗口,还是按照约定看一下效果是什么样的。  如果大家细心一点,就会发现窗口中的label显示为window01,这其实是因为我们已经增加了一个窗口,有兴趣......
  • ftk学习记(list篇)
      在开始今天的list主题之前,先看一下icon的运行效果。  今天说的list其实和这个icon差不多。大家只需要把这些icon想像成一条一条的item就可以了。同样,list的demo代......
  • ftk学习记(脚本篇)
      上一篇说到了对话框,今天就看看结果。  对话框不复杂,今天我们就来谈一谈脚本。有过android开发经验的朋友都知道,要想开发app,除了需要编写必要的代码,还需要编写一些......
  • ftk学习记(icon篇)
      在开始今天的文章之前,我们还是先看一下上一节的效果图。  大家可以参照上一节的讲解,是不是存在这样的button,是不是存在这样的wait_box控件,同样是不是可以看到wait......
  • ftk学习记(waitbox篇)
      前面说到了脚本,那么就看看ftk中demo与script搭配的效果是什么样的?  上面的效果图就类似于一个通讯录的输入功能,大家可以和之前的脚本对照起来看,检查一下是不是这......