tips for learning from opensource
除了练习(实践和更多的实践)阅读书籍和论坛,分析他人的代码是一个必须的,以有一个在这个领域的职业生涯。
问题是我是一个学生(感觉总是处于学习阶段),但有时我自己解决不了这些问题。我在想,在公共开放源码存储库上可能是我正在寻找的答案。
我的问题是如何在开源项目/社区中找到我的一些问题的答案?你有什么建议给我分享吗?
TY
学习与软件开发相关的问题解决技能的一些事情(一旦你找到了一个你感兴趣的项目,也可以用你觉得合适的语言编写),是:
- 注册邮件列表
- 潜伏在项目的IRC上频道(假设他们有频道)
- 读取错误报告(打开试图解决的问题,以及闭着眼睛看别人怎么解决他们)
当然,讨论讨论讨论,如果你认为你对手头的问题有一个基本的了解,但需要澄清一些问题,不要害怕问你的同龄人。
希望这至少能有所帮助,欢迎来到开源世界,祝您好运!
Analyzing others people code is a must... I'm a student... public open source repositories might be the answer?
开源的问题是质量变化太大。(有很多我自己的代码放在公共开放源码存储库中,我不想让任何人看到这些代码,更不用说从中学习了。然而,我的一些代码,我浪费时间和精力的代码,非常好,我的同事们告诉我。)所以你不想选择一个开源项目,向随机黑客J.学习。你想向最好的黑客学习。
以下是一些策略:
如果你是一个学生,你可以接触到老师。其中一两个可能对软件有想法。询问他们什么值得阅读—您将从中学习什么。
查看发布有关软件的会议和期刊:SigPlan、SigSoft、UseNix、Software—Practice&Experience、Journal of Functional Programming。了解您感兴趣的系统。写信给作者,询问他们是否建议你尝试从他们的代码中学习。仔细听他们说什么;大多数最好的黑客都知道他们可以做得更好。如果你勉强地承认,有一堆警告,那也许有东西要学,你找到了合适的人。
如果你正在学习C,很多贝尔实验室的旧东西真的很值得一看(很多东西都不值得)。我欣赏乔恩·本特利、布莱恩·克尼根和罗伯·派克等人的作品。您可以下载并阅读原始
awk 的源代码,或用于newsquak的pike解释器。受欢迎程度与学习的适宜性无关。GNU工具非常流行,但是几乎所有看过这两种工具的人都会告诉您,您将从贝尔实验室的版本中学到更多。Linux很受欢迎,但是我相信在这个领域工作的人告诉我,如果你想了解操作系统,你应该学习BSD。我自己在编译器领域工作,可以告诉你,如果你想用C语言编写编译器,要模仿的模型是鲜为人知的
lcc ,而不是广受欢迎的gcc 。
最后,我高度推荐Richard Bird、Hans Boehm、Ralf Hinze和Phong Vo(两个Haskell程序员和两个C/C++程序员)的工作。
... analyzing others people code is a must in order to have a career in this field.
我不会说那是对的。当然,这不是必须的。阅读别人的代码通常不能解释他们为什么选择以某种方式解决问题,以及他们考虑了哪些备选方案,然后将其排除在外。此外,发现设计和/或实现不当的开放源码并不罕见。
The problem is that ... but sometimes i can't solve the problems by my own.
啊。好吧,解决这个问题的方法是实践,实践,实践,不要害怕犯错误。自我批评,但不要让这阻止你"尝试"。你自己解决问题的能力越强,问题就越容易解决。
这些年来,我发现有用的是验证代码、执行各种语言的编码约定和最佳实践。开放标准是开源软件的必然组成部分。为了维护一个成功的OSS项目,它必须在社区中有一些共同点,例如:
- 如果要执行某些(x)HTML和CSS,请始终按照W3C标准执行。通过验证本身会大大提高你的技能。使用无表标记(参见无表设计的好处);
- 如果做了一些PHP,就要通过PEAR编码标准,这是所有OSS PHP项目的实际标准;
- 如果在flex/actionscript中执行某些flash平台编码,请参阅flex-sdk编码约定和最佳实践;
- 如果做了一些Java,会看到Java的代码约定吗?程序设计语言。
最后,但同样重要的是,研究面向对象编程和用于软件开发的各种体系结构,例如MVC模式。
正如其他人所说,向项目的邮件列表请求,无论如何,一些开源开发人员不愿意为这类事情提供帮助(不幸的是)。
在这种情况下,我自己搜索答案:拿起一个终端并使用grep。
猜测涉及到您的问题的类/函数的命名,您将找到通向模块的方法,在模块中写入有趣的位。
问,问,问,问你是否遇到了你不理解的特定问题或解决方案。真诚地努力解决问题或理解解决方案,分享你的思维过程,然后提问。这是一个很好的地方,你无疑已经发现了。祝你好运!