不按传统套路,我是这样学习新编程语言的

2018 年 1 月 13 日 伯乐在线 伯乐在线

(点击上方公众号,可快速关注)


编译:伯乐在线/郑芸


【导读】:以往我们认为学习新编程语言的最佳方式是看语法,然后做小项目练习。Sahil Dua 另辟蹊径,找到了学习新语言的另类方式:参与对应的开源项目。参与的过程中,需要查看已有的模块,了解这种语言的模式,对自己写出高质量的代码非常有益。

补充:Sahil Dua,创业公司 Refiral 合伙人,DuckDuckGo 开源社区 leader 之一,多个开源项目主要贡献者。


目前编程语言超过 500 多种。学习一门新的编程语言对我们来说已是家常便饭。很有可能你熟悉 C++ 和 Java,而你的工作需要用到 Python 或者你非常精通 Python,但你工作写代码需要用 Java 。再或者你想学习一种炫酷的编程语言来拓展你的技能。

如果你想学习一门新的编程语言,你选择哪种方法?

  1. 网络教程

  2. 网络公开课(MOOC)

有些人甚至主张,学习新编程语言最好的方法其实如下:

  • 学习语法;

  • 创建一些个人项目;

嗯,说得过去!你想学习一门编程语言,你学了它的语法,创建一些个人小项目可以确保你应用到这些语法知识。

在学习不同的编程语言时,我创建了 20 个以上的小项目。相信我,当你为一周甚至一整晚就能快速完成的小项目写代码时,你只是想完成任务。你所关心的只是——“我的代码能运行吗?”你几乎不关心代码的质量。

任何傻瓜都可以编写计算机能理解的代码。优秀的程序员写人类能理解的代码。”  —— Martin Fowler

那么,在尝试学习一门新的编程语言时,你怎样获得好的实践呢?

参与该语言的开源项目!

是不是感到惊讶?一些人或许会认为 —— ”等等,开源是很难的。只有当我们精通这门语言,我们才能为开源项目做出贡献,对吗?“。答案是否定的。

让我先给你讲个故事。

去年,我得到了一个来自 Booking.com 的全职工作 offer,而且我得知我工作的编程语言是 Perl (这是他们公司首要的后端语言)。2016 年 6 月,当我完成我的大学学位,我开始学习 Perl ,以便准备我大学后的第一份工作。我入职的时间是 7 月的第二周,因此我差不多有一个多月的学习时间。

我开始阅读 Perl 的语法,并开始理解该语言的一些常见模式。到这里,我真正想使用 Perl 来创建一些东西,这样我就可以应用我学到的该语言的知识,实践它的各种概念。当我在为使用 Perl 创建一些东西寻找 idea 时,我在 GitHub 上偶遇了 DuckDuckGo 的开源组织。我注意到一些开源项目是用 Perl 语言写的。我浏览了一下发布的 issues,找到了很多带有“初学者”标签的 Issue 。我立即开始工作,并提交了一些 pull requests。快进到今天,我成为了它们一些开源项目的主要贡献者,以及 DuckDuckGo 20 个开源社区的领导者之一。

这个故事的意思:我通过参与 Perl 语言的开源项目最终学会了 Perl 语言。

为什么参与到开源就奏效了呢?

就在我学习了 Perl 的语法后,我开始参与开源项目。在那期间,我常常查看现有的模块。我时常注意 Perl 正被使用的模式。因此我开始挑选这些好的实例应用到我自己的代码中,这有助于我学习怎样用 Perl 更好地写代码。

这不只是巧合;让我告诉你另一个故事,以获得更多的相关性。

最近,在 Booking.com 工作时,我接受了一些任务,其中有一个是在 Go 语言写的服务系统上添加一些功能。下面是我和队友的对话:

我:我真的很喜欢这个任务,我想完成它。你怎么看?他:是的,的确很有意思。但是它要用到 Go,你熟悉 Go 吗?
我:不。
他:那你想学吗?
我 : 是的!
他:😊 你可以的!

所以,那就是我学习另一种编程语言—— Go 的起点!

我开始学习 Go 的语法,并在其官网上找到了一个很棒的初学者指南,足以让我掌握这门语言的基本概念。

再一次地,我开始寻找一些发布的 Issue 中带有“初学者”或者“简易修复”标签的 Go 语言开源项目。我通过 Google 找到了一个项目,大致就是 GitHub 的 REST API 包装器。

在我开始学习 Go 语言的第二天,我在那个项目上发了第一个 pull request。

我去年一整年的贡献图 ( https://github.com/sahildua2305 )

开源项目是如何提供帮助的?

那么,你现在可能会疑惑参与开源项目怎样可以帮到你获得好的语言实践。有好几个方面,让我们逐个讨论。

代码质量

大多数优秀的开源项目都有严格的代码标准,想要你的代码融入其中,你必须遵守这些准则。这会帮助你适应这些准则,因此写出高质量的代码,即使你才刚学习这门语言。

不仅如此,你还有机会查看代码的其余部分,看看别人是怎么样写代码,写文档的。

代码审查

为开源项目做贡献最佳之处就是代码审查(code review)。当 push 你的代码,你得到与该项目相关的专家的反馈,因此它给了你一个提高对这门语言理解的机会。

你获得了一次如何写处优秀代码的私人机会,并且还免费的呢!

鼓励和赞赏

这是我在 Go Lang 上发出的第一个 PR 后,别人写下的第一个评论。

作为软件开发人员,我们的工作确实需要得到理解和鼓励;开源社区能让你得到足够的鼓励和支持。在我为开源贡献的所有经历中,我从未收到过任何侮辱性或消极的评论。每个人都是特别愿给他人鼓励和帮助。

DuckDuckGo 社区其他人给我的评论


所以,下次你想要学一门新语言,大步向前去冒险吧!找到一个开源项目去做贡献,在学习这门语言和它微妙之处的道路上行进。



看完本文有收获?请分享给更多人

关注「伯乐在线」,看更多精选 IT 职场文章


淘口令复制以下红色内容,再打开手淘即可购买

范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

近期,北京地区正常发货,但派件时间有所延长。

登录查看更多
0

相关内容

程序设计语言( Programming Languages )又称编程语言,是一组用来定义计算机程序的语法规则。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
195+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
91+阅读 · 2020年6月28日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
162+阅读 · 2020年5月14日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
181+阅读 · 2020年1月1日
机器学习入门的经验与建议
专知会员服务
94+阅读 · 2019年10月10日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
做机器学习和AI必备的42个数学知识点
AI前线
9+阅读 · 2018年12月6日
各编程领域最好的入门书籍
程序猿
28+阅读 · 2018年7月29日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
数据分析/数据挖掘 入门级选手建议
R语言中文社区
5+阅读 · 2017年12月20日
只需5个月,编程小白也能掌握机器学习
ImportNew
5+阅读 · 2017年12月4日
机器学习实践指南
Linux中国
8+阅读 · 2017年9月28日
Arxiv
24+阅读 · 2020年3月11日
Arxiv
102+阅读 · 2020年3月4日
Arxiv
24+阅读 · 2019年11月24日
Arxiv
15+阅读 · 2019年9月11日
Arxiv
18+阅读 · 2019年1月16日
Arxiv
3+阅读 · 2018年4月5日
VIP会员
相关资讯
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
做机器学习和AI必备的42个数学知识点
AI前线
9+阅读 · 2018年12月6日
各编程领域最好的入门书籍
程序猿
28+阅读 · 2018年7月29日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
数据分析/数据挖掘 入门级选手建议
R语言中文社区
5+阅读 · 2017年12月20日
只需5个月,编程小白也能掌握机器学习
ImportNew
5+阅读 · 2017年12月4日
机器学习实践指南
Linux中国
8+阅读 · 2017年9月28日
相关论文
Arxiv
24+阅读 · 2020年3月11日
Arxiv
102+阅读 · 2020年3月4日
Arxiv
24+阅读 · 2019年11月24日
Arxiv
15+阅读 · 2019年9月11日
Arxiv
18+阅读 · 2019年1月16日
Arxiv
3+阅读 · 2018年4月5日
Top
微信扫码咨询专知VIP会员