网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月27日漏签0天
linux吧 关注:530,346贴子:2,572,670
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 49回复贴,共2页
  • ,跳到 页  
<<返回linux吧
>0< 加载中...

应该读那些项目代码?

  • 只看楼主
  • 收藏

  • 回复
  • Regop32
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最近想通过读一些开源项目的代码,主要目的是通过这个提高一下自己的水平,毕竟能读懂代码才能参加开发。但是不知道初学者应该读哪些项目的比较好。大概的要求是这样的,要有用,最好是还在开发中的,代码不能太长,开发语言可以是C/C++或者python。求推荐


  • fcwlxd
  • ----x--x
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
fcitx or ibus?


2025-11-27 23:55:23
广告
不感兴趣
开通SVIP免广告
  • Regop32
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@realasking
@大地精
@mephistohk 


  • Regop32
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@realasking


  • Regop32
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@8pm


  • 木何
  • ----xr--
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
个人喜欢这个。code.lupaworld.com,再配上gentoo的源(gentoo的版本比较全,不怕找不到对应的源码)。
好了我承认除了这个我啥都不会-


  • Kevinneyc
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自己喜欢哪方面的就去github上翻翻


  • 贴吧用户_006UAeU
  • ----x-wx
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个不好说吧,对开源的理解力,一方面来自于C/C++水平,再一个就是对Linux内核的了解,基本上这两方面能力决定了你能否理解开源项目的代码。
我觉得如果对C/C++水平有信心,并且对Linux内核有些了解的话,一般的软件项目,看懂代码是没问题的,自己写的话... ...就不知道了。


2025-11-27 23:49:23
广告
不感兴趣
开通SVIP免广告
  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看什麼取决於你研究或感兴趣的方向
并没有什麼"应该"读的
因为任何 nontrivial 的代码,都需要一定的 domain knowledge 才能了解,看不懂通常不是因为语法层面的,而且缺少了相关的 domain knowledge(这就是我很爱说的:功夫在语言外)
所以如果纯粹为了提高写代码水平,额外学习一大堆用不上的 domain knowledge,不一定值得
(当然,各种 domain knowledge 知道得越多越好,没坏处,只是需要时间)
由於这个原因,所以通常很难有适合任何人的通用例子(即不太需要 domain knowledge 来理解)
可能最接近通用的就是:
POSIX userland 的基本工具了,如
GNU Core Utilities 或 BSD 的相关代码或 busybox(C)
STL 源码(C++)
Python standard library 裏的 .py 源码(Python)
除此之外,都需要 domain knowledge,因此增加学习成本,需要看需求或兴趣来选择
试举一些见过别人推荐的,如 lighttpd (C)、nginx(C)、sqlite(C)、lua(C)、trac(Python)、sqlalchemy(Python)、flask(Python)、bottle(Python)、原**ittorrent(Python)
另外阅读正在使用的框架的源码的全部或部分相较可行,因此使用必然对其 domain knowledge 较了解,这类的有各种 GUI toolkit,boost,django 等
最后只能总结成四个字:见仁见智
PS. 楼上大地精的 "毅力决定深度" 和 "至少需要 5-10 年磨练" 确实很关键
Malcolm Gladwell 有个著名的 The 10000-hour rule
Peter Norvig 关於这方面经典的文章,Teach yourself programming in ten years,很值得一读


  • mephistohk
  • ----x--x
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
基础扎实和目标明确是提高水平的关键
通过读源代码提高自身水平通常有如下前提:
1、需要熟练掌握书写源代码的编程语言
这一点是显而易见的。在此基础上读源代码可以通过学习进一步提高编程语言的书写技巧。强化学习编程语言时容易忽略或错误理解的细节。
2、需要熟练掌握常用数据结构和算法
逐行阅读代码效率是很低的,如果熟练掌握了常用数据结构和算法,这时源代码在眼里就不再是一行行的表达式,而是具体化了的数据结构和算法。这样在阅读时就不会过于纠缠代码书写的细节,从而可以在全局上掌握源代码的架构,正确理解代码的含义并提高阅读效率。
3、需要掌握目标代码运行的运行环境
任何源代码最终都是需要在特定的运行环境中执行的,如果对运行环境了解不够的话,就无法真正理解代码与运行环境如何交互,自然就更无法理解之后对运行环境返回信息的处理过程了。因此对于解释型语言如 Javascript 或 Python 等等,需要掌握解释器本身的特点,如对异常处理的实现方式等等。对于编译型语言如 C,需要掌握执行时操作系统环境的特点,例如 unix 下的系统调用,Windows 下的应用程序编程接口 WinAPI 等等。还要包括相关的函数库等等。总之,对目标代码运行环境了解越深,就越容易抛开这些细节,专著于代码的逻辑实现。
4、需要掌握书写源代码所涉及的行业知识
计算机系统软件的操作对象一般是计算机本身,因此对计算机相关专业出身的人来讲很容易理解。但计算机应用软件的操作对象大多是非计算机领域的专业内容。例如 gimp,它主要是用来操作图象的。使用它需要学习很多绘画领域的专业知识如色系、滤镜之类等等,阅读源代码时自然也不例外,所以光靠学习计算机专业知识的完全不够的。对于计算机相关专业出身的人来说,学习这些和计算机技术本身八杆子打不着的东西更费脑子。因此如希望开发非计算机技术领域的应用软件,则相关的行业知识自然就跑不了了。
5、需要掌握项目管理的一般内容
为了提高开发效率,现代软件大多是靠团队来完成的。团队就意味着管理,典型的例子如版本控制系统的大量应用,以及模块化的设计理念。这些在客观上增加了源代码组织上的复杂度。因为管理信息的介入,很多源代码书写时会大量应用宏定义、条件编译、编译时常数之类方便管理的手段,造成源代码读起来不够直观。所以读源代码时,首先需要掌握一些项目管理知识,由此可以轻易地识别并分离掉那些为了管理而存在的内容。从而有效地避免这些信息对阅读造成的干扰。
6、需要掌握相关的开发工具
除了规模很小的源代码以外,大量源码开发都会使用一些可以提高效率的开发工具。但这些开发工具为了更有效地控制代码结构和格式,通常会自行加入一些固定的代码段,例如预定义模板中的内容等等。这使得最终生成的源代码由于在形式上过度分离显得“缺乏人味”,更象是适合“机器”阅读的东西。客观上造成了阅读的困难。因此阅读源代码者,必须对源代码相关的开发工具有足够的重视。只有对开发工具产生的效果有足够的认识,才能降低阅读这类源代码的难度。
综上所述,在选择阅读源代码,提高自身水平时。应根据自身当前的技术实力以及预定的发展方向来选择适合的源代码。
例如想搞计算机系统软件的研究和开发,如果去读 gimp 这样的源代码不光阅读困难而且意义就不大。
又如阅读 linux 内核源代码,linux 内核是用来管理计算机系统的所有硬件,并向用户层提供抽象接口的。这意味着读 linux 内核需要对计算机硬件有相当程度的熟悉,这个要求是非常高的。如果阅读者主要学习的是计算机软件开发,虽然对编程语言及操作系统接口比较熟悉,但通常对计算机硬件远没有专门学习计算机硬件专业的人熟悉。这样即使强行阅读 linux 内核也是勉为其难,效果不佳自然在情理之中。
因此我个人的经验是选择一款源代码规范、代码规模不大、和操作系统交互简单,且属于计算机系统软件范畴的源码来阅读。
在这里我推荐阅读 lighttpd,理由是:
1、规模适中:这是款轻量级 Web 服务器,不象 Aapche 那种具备工业级强度(除了性能外还意味着扩展性强带来的复杂架构)。就是实现一个 Web 的服务端功能,因此结构简单容易在全局上把握。
2、平台专一:是典型的 unix 风格软件,在 Windows 平台上是通过 Cygwin 移植的。这也就意味着读它时不会过于受跨平台设计带来的影响。
3、结构清晰:尤其是其中的网络引擎的设计,堪称经典。
4、实用性高:现代互联网几乎算得上是 “Web网”。因此掌握 Web 服务器的开发,乃至自行设计一个完全由自己掌控并能根据自己需要随心所欲修改的 Web 服务器,对以后的开发、调试、研发新品,甚至学习安全类知识(你懂的)等等都是非常有益的。
再多说几句:如果LZ有兴趣且发展方向相近的话,建议去下载 lighttpd 来阅读。当时我本人在设计自己的服务器 mws 时,一开始也是阅读的 lighttpd。这个过程大约持续了 5 个月,但让我直到现在都大受其益。



  • 伊人海边望月
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶楼上


  • Laconism
  • ----x-wx
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感觉自己看glib也挺有收获的


  • 伊人海边望月
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请问一下 stl源代码资源下载网址 谢了先


  • xscyqs
  • ----x---
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你的 c/c++ 强不? 不强的 没必要 一个大型项目的源代码太复杂了
你没文档的情况没法看 你根本不知道怎么看
别人随便写一个4000行以上的代码 没文档 或者是注释不完整 你有法看吗
找些插件的源代码 应该可以 至于什么插件源代码你懂的


2025-11-27 23:43:23
广告
不感兴趣
开通SVIP免广告
  • lushl9301
  • ----x---
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我根本没什么项目开发经验……不过我目标是攻下内核……所以我现在正在深入学习C语言……按照大神给我建议的路线先走着……


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 49回复贴,共2页
  • ,跳到 页  
<<返回linux吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示