转载

《利用开源项目,学习软件开发》内容回顾与作者采访

一本仍然在创作中的关于开源和软件开发的图书-- 《利用开源项目,学习软件开发》 可以下载阅读了,国内社区合力创作,内容涵盖如何从一个开源项目入手,循序渐进的学习开发,乃至有详尽的“Hacking”的实例。

本书最大的特色就是其本身也是开源的,代码托管在 github 上,是由国内开源活跃人士庄表伟发起,有多人共同开发。

在书的开始,作者明确了本书的读者以及学习软件,学习开源软件的开发的几个前提条件,以及诠释了古希腊太阳庙神殿的铭语“认识你自己!”,不是所有人都适合软件开发,你准备好了吗?

接下来作者阐释了软件开发的技能,及需要刻苦训练的时间要素,重点强调了软件开发所需要的必备-学习!然后引出来开源对于学习的重要性,这里不是捷径,而是一条康庄大道。然后介绍了接触开源项目之前,需要掌握的基础知识,绝不是xx技校可以三天修炼为大师的那种,并推荐了一些学习站点,并就学习编程语言专门列出了一些建议。这里有点真话:英语一定要好!

在接下来的一章里,作者介绍了如何选择一个开源项目。列出了常见的开源组织、代码托管、技术社区、及商业公司的研究院等,还有利用社交媒体、搜索引擎、问答网站、维基百科等的一些指引。然后给初学者们就如何选择一个开源项目提了几点建议,如明确自己的目的、优先选择能够独立运行的项目、选择活跃的项目、选择适当的版本。最后给出了几个适合初学者学习的开源项目例子,如著名web服务器项目 Nginx 等。

重要通知:接下来InfoQ将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注InfoQ微信公众号第一时间阅读精品内容。

《利用开源项目,学习软件开发》内容回顾与作者采访

在第四章,作者介绍了代码版本控制工具,如git、SVN、CVS等,以及一些流行语言的包管理工具,此二者均是告知读者如下获得源代码的,然后以各个语言的初始化安装环境为例,介绍了如何让这些语言能够运行程序,涉及的语言有java、php、ruby、python、Node.js、C/C++等,最后给出中间遇到困难该如何处理的“锦囊妙计”。

第五章,和著名的 《code reading:The Open Source Perspective》 一书的内容有得一拼,从静态阅读代码、动态编译运行、乃至debug来逐步跟踪等,每一个环节都是各位作者的心得和体会,希望读者在理解代码的过程中一定要知其所以然。顺便提及的就是本章的参与者其中有Python中国著名大妈:Zoomquit。

第六章,渐入佳境,作者以一度非常流行的桌面游戏《2048》,来实际修改其源代码,有趣且不失难度。

第七、八、九章,有些遗憾,还没有任何的内容。按照作者的列表来看,此三章想让开发者成为某些项目的贡献者,或者是自己发起一个开源项目,这里只能祝愿大伙加油。

在书的最后,列出了一些优秀的学习资源,是值得推荐的项目。

InfoQ有幸就此书采访了发起人庄表伟:

InfoQ: 发起创作本书的意愿及背后的原因是什么?

最初发起这个项目的时候,我还在盛大创新院,当时我在创新院的工作是“开发者关系管理”。确切的说,是搞好盛大与外部开发者的关系,当时,我们认为可以做很多与开发者相关的事情:赞助技术活动,举办开发大赛,支持与推广开源社区等等,这些事情,都能够提升盛大在开发者心目中的形象。当时,我们在开源的方面做了不少的工作,例如:创办了 teamhost 这样的开源项目托管平台,发起《我们的开源项目》这样的开源爱好者聚会,这些活动当然也办得热热闹闹,但是我们也意识到:做开源的人,还是太少了。当时,我就有一个想法,如果越来越多的在校大学生,在开始学习软件编程的时候,就知道开源是怎么回事,甚至愿意借助开源来学习软件开发,愿意参与到开源社区之中,应该是一件拓展群众基础的好事情。因此,我发起了《利用开源项目,学习软件开发》这个开源写作项目,希望能够吸引更多的爱好者,能够成为开源社区的一份子。

InfoQ: 书中对于读者的定位是不是有点狭窄,毕竟现在很多的公司都在使用开源。谈谈您的看法。

当然,即使对于工作多年的人来说,开源也是非常有益的。但是,直白一点说:很多工作经验“丰富”的老人,很早以前,就认为自己不再需要学习新东西了。相对的,在校大学生,以及新毕业的大学生,是深刻意识到自己需要不断学习的一群人。真的,我在技术这个圈子里,遇到了很多不思进取的老程序员。他们每天都忙得要死,根本没空学什么新东西。哪怕这些新技术,新工具,能够帮助他们提升效率,改进工作。即使他们在工作中用到了开源,也并非出于自愿,仅仅是由于上头决定的。所以,如果我当初的定位写的是“大学毕业(正负1~2年)”,的确过于狭窄的话。那么我愿意修改为“所以愿意始终不断借助自学提升自己的程序员”。

InfoQ:在理解源代码一章中,所给出的示例跳跃很大,项目、语言、工具等都有所涉略,这是否给一些初学者带来困惑?

这一章,我写得也很幸苦,因为想要表达的内容很多,而且也很难找到一个示例,将这些手段都串联起来,因此只能将各种理解源代码的手段,分门别类,一一罗列。如果说因此给初学者带来困惑,也只能先表达歉意,然后再慢慢看看如何改进。

InfoQ: 关于如何参与或发起开源项目的章节还没有完成,还是没有开始?中间遇到了什么困难了嘛?

其实,主要还是卡在了修改开源项目这一章。要找到一个足够好的示例,将修改开源项目的要点讲清楚,的确很不容易。我后来找到2048,来做一个简单的修改。但是,这个项目的复杂度,其实是不够的,有很多要点,在这个示例的范围里,其实不是容易讲出来。所以,如果有朋友能够提供更多的,关于如何修改一个开源项目的案例,则“在下不胜感激”。

InfoQ: 谈谈您对于开源对于软件开发、创新,以及其在未来的一个地位与影响如何的一些看法吧。

这个问题,实在是太大了。之前听过几个说法:未来人人都要懂编程;开源已经赢得了世界;创新需要开放的氛围。也许我们可以把这些观点结合在一起来看:因为未来是由软件来定义的,而且,越来越多的时候是由开源软件定义的。所以,如果完全不关注、不了解这一趋势,是相当不明智的。开源是什么?开源软件(硬件)是什么?搞开源的人,是一群什么样的人?他们究竟以何种动力,在搞些什么东西?的确是一些值得所有人去探究的问题。在我看来,开源是一种智力型集体劳动的协作方式,想要最大限度的发挥人类的智慧,采用开源协作模式,是最为合理的选择。而且,这种协作模式,虽然最早是应用于软件开发,最终将成为所有“智力型劳动”的共同选择。在刘慈欣的《三体》中曾经预言的技术大爆炸,在新的协作模式下,将会得到进一步的提速。

InfoQ: 您对参与本书的贡献者,或者是呼吁更多的有经验的人参与到本书的创作中说些什么?

最近,我开始跑步,有了一些感悟。支撑我跑下去的,其实不是毅力,不是责任,不是减肥目标。而是跑步本身带来的“快感”。参与开源也与此类似,我算是一个乐于分享的人,因为在分享之后,我获得了“甚至超出预期的”收获。经常分享自己的所思所得,会有很多收获: 1. 整理自己的思路,温故而知新 2. 能够收获建议和意见,三人行必有我师 3. 传播自己的理念,收获同道中人的友谊,有朋自远方来,不亦乐乎。所以,我也很期望能够更多的朋友,参与到本身中来,分享更多,收获更多。

非常感谢庄表伟百忙之中抽出时间接受InfoQ的采访。

关于作者

适兕,华为开源专家,目前主要的工作是华为的内源社区平台建设。1997年毕业于华东师范大学,曾任盛大创新院的高级研究员、印客网的技术总监。多年来一直在编程的第一线,并以Coding为最大的乐趣。

感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 《利用开源项目,学习软件开发》内容回顾与作者采访 (已满),InfoQ读者交流群(#2) 《利用开源项目,学习软件开发》内容回顾与作者采访 )。

正文到此结束
Loading...