Chinaunix首页 | 论坛 | 博客
  • 博客访问: 916346
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

分类: IT职场

2014-07-25 09:00:14

应邀答题,很好奇这样中规中矩的题目为啥要匿名。

首先说说“适合学生参与”。参与开源项目的开发者,来自各行各业的都有,并没有哪些开源项目学生的比例明显高于其它项目的。至于 GSoC,其项目也不是单独为学生专门设计的,都只是从标准的开源项目里选出一些工作量大小适中的子项目专门让学生参与而已。如果硬要说学生和其它开发者有什么不同的话,那就是学生的时间比其它行业的人会更充足一些,功利性会弱一些,贡献可以更加不计回报一些。因此,并不存在什么项目更“适合学生参与”的说法,只要你愿意,任何项目都是可以参加的。

然后说说“C++”。由于 C++ 学习难度太大,各种复杂特性太多,要想在项目中把 C++ 用好,一方面需要所有开发者都具备比较扎实的功底,另一方面还需要开发者彼此之间建立严格的规范和约定。对于以公司的形式进行的开发而言,这两个条件比较容易满足,只要通过招聘设置门槛,通过规章制度限制开发流程就行。但对于开源项目这种形式的开发而言,为了保证这两个条件,项目必然表现出很强的排外性,开源的 C++ 项目往往对于外部贡献者的接纳程度要低于其它语言的项目,想要真正参与到一个开源 C++ 项目里是非常困难的。因此,在选择项目的时候,不要把目光集中在 C++ 项目上,其它语言的项目也一样可以参与。

再说说“网络编程”。在决定参与“网络编程”相关的项目之前,你需要先明确一下你参与开源项目的目的。如果只是为了熟悉“能够联网的程序”是怎么编写,譬如电子邮件客户端啊,简易即时通讯软件等,真的没有必要非得参与一个“网络编程”相关项目,自己写几个小程序练习一下就可以了。在“能够联网的程序”里面,网络相关操作用到的无非就是几个简单的套接字 API 而已,所有和网络相关的代码,在整个代码库里面只会占到很小的比率。开发一个网络应用程序的难点反而都在非网络部分,譬如系统设计、模块划分、各种细节的处理等等,这些才是真正值得学习的。要想学习这些内容,参与任何一个具有一定用户数量和代码规模的项目都可以学到,不要把自己的选择面局限在“网络编程”上。

当然,网络操作占整个代码库较大比率的项目实际上也是存在的。不过这种类型的项目,处理的大多是大数据量、海量客户、高负载、高并发之类的问题,这些难度就非常大了。然而这些问题,如果不是在具体工作中遇到非常具体的应用场景的话,光凭想象和少量几台电脑做实验是完全无法理解掌握的。既然在学生阶段很难有机会去接触这方面内容,不如先把基础知识学好,基本功掌握更牢靠一些,把这部分知识留到工作之后再学。

最后回到我们最初的问题上,把“适合学生参与”、“C++”和“网络编程”这三个限制条件都去掉之后,问题就变成了“有哪些开源项目”了。这个问题回答很容易:直接上 sf.net 或 code.google.com 搜一搜,能找到无数的开源项目,选择面是非常广的。至于“如何参与一个开源项目”,那又是另外一个不同的问题,如果感兴趣的话可以新开一个话题单独讨论,这里就不多说了。
阅读(2161) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~