QCon 全球软件开发大会暨智能软件开发生态展祝您新春愉快! >>> 了解详情
写点什么

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

  • 2015-11-19
  • 本文字数:3103 字

    阅读完需:约 10 分钟

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

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

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

接下来作者阐释了软件开发的技能,及需要刻苦训练的时间要素,重点强调了软件开发所需要的必备-学习!然后引出来开源对于学习的重要性,这里不是捷径,而是一条康庄大道。然后介绍了接触开源项目之前,需要掌握的基础知识,绝不是 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))。

2015-11-19 17:133765
用户头像

发布了 30 篇内容, 共 10.5 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

阿里都会问些什么?4面阿里余额宝Java高级技术岗

Java架构师迁哥

大陆集团携手亚马逊云科技打造创新的汽车软件平台

亚马逊云科技 (Amazon Web Services)

项目管理与项目集管理、项目组合管理的区别?

万事ONES

项目管理 项目 PMO ONES

JavaScript 中数组 sort() 方法的基本使用

编程三昧

JavaScript 大前端 数组 排序 js

人人视频被迫下架:打击盗版视频网站任重道远

石头IT视角

一文读懂开源项目 OpenHarmony2.0

科技热闻

iOS开发-Objective-C 中的 MVVM 模式介绍

iOSer

ios objective-c MVVM ios开发

聚焦机器同传前沿进展,第二届机器同传研讨会将在NAACL举办

百度大脑

人工智能 机器

探讨AI人才培养新思路,2021北京智源大会百度AI人才培养论坛召开

百度大脑

AI 人才培养

全过程智慧教育,看北京四中网校和亚马逊云科技如何实现?| 精选案例

亚马逊云科技 (Amazon Web Services)

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

华为云开发者联盟

大数据 开源 鲲鹏 鲲鹏计算 Kunpeng BoostKit

上云就上百度智能云,百度智能计算峰会召开,AI原生云全新升级

百度大脑

AI 智能云 峰会

加快技术应用规模化 建设世界先进水平区块链产业生态

CECBC

即时通讯系列-WorkPlus简介

WorkPlus

开源 即时通讯 IM 办公自动化

为什么说产品经理也要学点技术?

LigaAI

产品经理 研发管理 技术团队 产品设计与思考

🏆【声网 Agora】「PC端实现实时语音通讯4.x」

洛神灬殇

WebRTC RTC征文大赛 声网 6月日更

代码写的烂才是原罪?字节三面+微信四面+PayPal四面,大厂面经分享

Java 程序员 架构 面试

国内低代码产品是如何定位的?这3类,企业可自行对号入座

优秀

低代码

软件研发团队如何做好项目进度管理?

万事ONES

项目管理 研发管理 需求 ONES

本科毕业六年,备战一个月,四面阿里巴巴定级P7

Java架构师迁哥

别乱打日志了,这才是正确的打日志姿势!

xcbeyond

日志 规范 6月日更

5W1H聊开源之What——开源协议有哪些?

禅道项目管理

开源

不管是三胎还是App!指望“拉新”太难了,还是要靠老用户!

APP开发

《原则》(八)

Changing Lin

6月日更

@成都的Coder

蚂蚁集团移动开发平台 mPaaS

flutter 移动开发 mPaaS

不愧是清华大佬,一个联机对战游戏就把23种设计模式给抽丝剥茧了

Java架构师迁哥

从底层原理出发,了解Linux内核之内存管理

Linux服务器开发

后端 操作系统 内存管理 Linux内核 底层原理

深度剖析:Redis分布式锁到底安全吗?看完这篇文章彻底懂了!

Kaito

redis zookeeper 分布式 后端

给你一直尝试和创新的机会!走进亚马逊云科技MRC团队

亚马逊云科技 (Amazon Web Services)

限流篇,欣赏阿里开源Sentinel

下雨喽

架构 设计 sentinel 限流

HTTPS协议

IT视界

《利用开源项目,学习软件开发》内容回顾与作者采访_语言 & 开发_适兕_InfoQ精选文章