我翻阅本身以前写的博客文章,发如今 2015 年我刚开始学习编程的时候,翻译了一段 Paul Graham 关于“How can I learn to program?”的回答。git
当时居然没有翻译完,我就跑去 GitHub 上面收集有意思的项目去了。三年过去了,我作了 HelloGitHub 这个项目 🤪。程序员
今天既然翻到了,那是时候把这个事情作完了。我以为须要先介绍下 Paul Graham 是谁?github
保罗·格雷厄姆(英语:Paul Graham,1964年11月13日-),哈佛大学应用科学(计算机方向)博士学位,美国著名程序员、风险投资家、博客和技术做家。web
公司:他是著名的创业投资公司 Y Combinator 的创始人,这个公司有个新闻网站叫 Hacker News。编程
书:他还写了本书《Hackers & Painters》(黑客与画家)框架
钱:最先的 Web 应用 Viaweb 的创办者之一,1998 年被雅虎以近 5 千万美圆价格收购,后成为 Yahoo! Store。编程语言
我看完他的介绍就两个字“大神”。下面是他对 How can I learn to program? 如何学习编程这个问题的回答。ide
原文分为 6 段,咱们一段段的看。开源项目介绍
原:Find a friend who knows how to program. Get them to set you up with a system where you can edit and run programs. Use whatever language they suggest for a beginner (probably it will be Python or Ruby). Then get the O'Reilly book and start working through it.学习
译:找一个会编程的朋友,让它帮你部署编程环境。学习他们建议的适合初学者的编程语言(多是 Python 或者 Ruby),而后找 O'Reilly 出版的关于该语言的入门系列书籍,啃完。
我的实践:由于编程入门安装开发环境是一件很痛苦的事情,因此最好有人帮你弄好,我当时是靠搜索引擎折腾死我了。编程语言的话找一个语法简单,好比:Python。书的话我当时看的是《笨方法学 Python》,而后看的是《Python 核心编程第 2 版》
原:As you learn the mechanics of writing and running a program, start thinking about specific programs you want to write. That will motivate you to learn more.
译:当你学习编程的时候,也要想一想本身想写个什么好玩、有意思的项目。思考你想要编写什么酷的程序,这样会让你有动力去学习更多东西。
我的实践:“无知无畏”的想法是让你学习更多的动力,并且它是一个“种子”。我就当时想写一个可以画词翻译的网站,而后能够记录我请求翻译过的单词和次数,不一样翻译次数颜色不同(绿、蓝、金、暗金,玩过暗黑的都懂)。后面再看别的文章的时候就知道那些是高频词汇,我就能够突破记忆一下,有助于我提升英文阅读的能力。后来我作了这个项目 holleworld,在写这个项目的过程当中让我学习到了不少。当时不少代码都是拷贝来的,可是能让它跑起来达到我预期的效果,着实让我查了不少资料。 😪
原:Don't start with a problem that's too big. A good way to begin is to take an existing program and modify it to do something new.
译:起步的时候不要去解决太难的问题。一种好的方法建议:修改一个已有的程序,让它实现新的、更多的功能。
我的实践:修改项目会比较简单,并且基于某一个流行框架去作一个项目也会轻松不少。首先要动手写,改、抄都是动手,不要上来就想写个功能强大的项目,慢慢来。我在写上面那个项目以前,抄了两遍廖雪峰老师的那个博客实战项目(不用复制粘贴,手打每行代码)😬。最开始我一大段一大段的抄,抄完 model 模块,代码跑都跑不起来,看不到博客的样子让人心灰意冷。后来我就一个功能一个功能的抄,抄完跑、调试。每一个功能调试过能看效果,而后就知道每行代码有什么用了,并且对项目有个总体的感受,后面修改、增长功能就很简单了。而后我又去 GitHub 上找有趣的开源项目,想着能不修改、增长功能之类的。后面收集的项目多了,就有了 HelloGitHub。
原:Initially your programs will be ugly, but don't worry about that. Everyone's are. Just keep going, and they'll get better.
译:起初你的程序可能很“丑“(代码不简洁、界面丑、编码风格很差),可是不用担忧这些,由于每一个人刚开始写的程序都不咋样。只要你坚持写下去,你写的东西会愈来愈好的。
我的实践:我如今的代码依然很丑,这是个漫长的过程。知道丑就行,写多了就会变得好看和简洁了。我还记得我最开始写网页的时候,每一个页面下面都有一段联系方式之类的信息,而后我把这段代码在每一个页面最下面都写了一遍。后来一个不懂技术的产品看了说:“你这段代码都同样,能不能提取出来,而后每一个页面结尾都引用相同的那段代码的文件?”。从哪之后我就知道一段代码,若是在两个地方都用了,就须要提取出来一个公共方法。还有一次,我重构项目,看到一段编码风格特别差、没注释、for 循环滥用的代码。我心想:”这 TMD 谁写的垃圾代码。“,抬头一看做者是我本身。而后把后半句咽回去了,默默地把这段代码给重写了,毫不能让别人发现恶心别人 😂。
原:As you learn, you'll find it useful to look at programs other people have written. But you'll learn more from this once you've tried programming yourself.
译:在学习编程的过程当中,你会发现读别人的代码对你会颇有帮助。但你本身动手实现从别人哪里学到的技巧,你会收获更多。
我的实践:我还在这个阶段摸索中,我如今是通常的代码都能看懂,其中精妙部分可能也能理解。可是让我本身写就瞎了。可能这就是我要提升的方向吧,仍是要多写、实现。看明白的不必定就懂了,懂了的不必定能实现。引用费曼的名句:“我不能创造的东西,我就不理解。” 和你们共勉 💪
原:Finally, find friends who like to write programs. They can answer your technical questions; you'll get new ideas from talking to them; and they'll be the audience for your first efforts.
译:最后一点,找到一样喜欢编程朋友,他们能够解答你再编程上的问题。你也会从与他们交流的过程当中收获新的想法,他们也会是你成长的见证者。
我的实践:编程的路上,若是有一群志同道合的小伙伴一块儿交流、鼓励,相互促进的前行,那样你会走的更远的。“三人行,必有我师”,多和程序员的小伙伴成为朋友,相互交流技术的过程潜移默化就会获得提升。因此我这边拉了个 “HelloGitHub 交流群”(加入方式下面有),群里都是编程爱好者、小白、从业多年的人、Geek 等。这个群是讨论技术、开源项目、程序员相关话题,但愿你们在这里呆的开心。我也在作开源项目的过程当中、还有群里,结交了不少朋友😏。对了!你还能加入咱们 HG-Team 一块儿作些有意思的事情(加入方式在最下面)。
上面大神说的这段话是翻译完成了,内容包含了:编程入门、动力、实践、坚持、提升、交友🤣。大神的说的这段话,我是真的从中收益了不少。如今回头看看,仍是有要提升地方,因此这里把这篇文章分享给你们,其中有不对的地方欢迎指正。
成长的路上,你我都是新手,咱们何不结伴同行,成为亦师亦友的小伙伴?加咱们 HelloGitHub-Team 的小(后面会不会变‘大’不知道)家庭,咱们须要你。咱们可以接受和你一块儿成长,经验不是问题,态度决定一切:
扫描下面的二维码,关注公众号回复加群。就能够入群和一群热爱技术的小伙伴一块儿交流成长。对上述坑有兴趣的小伙伴也能够去群里找我,我等大家!