提高编程能力的10种方法

标签: 分类?没有 编程 | 发表时间:2011-07-04 15:19 | 作者:Slacken Jason
出处:http://heikezhi.com

1、学习一种新的编程语言

学习新的编程语言会强迫你运用全新的方法来思考,特别是当这门语言使用一种你还不怎么熟悉的范式。你能够学习到很多将来你会在你熟悉的语言中用到的思考方式,而且甚至你还可能用新的语言来实现一个正式的项目。

能够提供一次极好的学习过程但不仅限于此的优秀编程语言包括:Lisp(Scheme非常好)、ForthPostScript或者Factor面向堆栈的编程语言)、J(奇妙的阵列编程语言)、Haskell强类型、纯粹的函数式编程语言)、Prolog逻辑程序设计)和Erlang并行编程典范)。

2、读一本优秀且具有挑战性的程序设计书籍

我们能从书中学到很多东西。尽管实践很重要,读一本真正好且具有挑战性的编程书籍是挑战你的思维并将其提升一个层次的极佳方式。这样具有挑战性的书包括:《计算机程序设计艺术》(如果你想要一个真正的挑战)(译者注:当当链接)、《计算机程序设计与解释》(SICP)、《程序设计训练》或者著名的《龙书》。

你也可以读没那么具有挑战性的书,但要避免读像《天才班》丛书一样、试图在“24小时”或者“21天”教会你东西的书;你很难从中真正提高编程技能。

3、加入一个开源项目

加入一个开源项目有什么好处呢?你将会同别人合作(当你以前只是在周末从事于个人项目时这尤其不错),而且你必须深入研究和学着理解一个你不熟悉的代码库(这会是非常具有挑战性的)。

你可以在像GitHubSourceforgegitoriousBitBucketOhloh的网站上找到不同的项目。

4、解决编程难题

你会经常解决编程难题,而且的确存在很多难题。你可以在Project Euler——可能是关于编程难题的最热门的网站——在上找到各种基于数学的问题。

你也可以尝试代码高尔夫(code golf)——程序员用最少的击键次数来解决一个给定的编程问题。这能教会你很多更隐晦和特殊的语言特性,并且你将必须对编码进行创造性的思考(而这非常有趣)。

编程难题,主要是代码高尔夫,可以在codegolf.stackexchange.com上找到。

5、编码

开始从头到尾写一个程序。设计各种体系架构并实现它,如此往复。

最好的学习编写程序的方法就是编写程序。你会从你自己犯的错误中学习,而且完成一个项目会给人以动力,这比读一本书可有趣的多。

6、读源代码,从中学习

研究著名的软件项目,像Linux内核(提示:它很庞大)。一个适于学习用途的优秀操作系统是MINIX3.你可以从中学到很多新的语言惯用语法,一两种软件体系架构。读不熟悉的代码一开始是令人畏惧的,但报酬也是丰厚的。

你还能够增进对你常用的一些API的理解,或者编程语言——通过读它的实现方式。

7、活跃在编程网站上和多看博客

活跃在像论坛或者Stackoverflow的网站上会将你置于其他程序员及其学识的审视之下。

还有,多看博客,也许这更可取。好的博客有:Joel on Software(尽管Joel不再写博客了,但好的文章可以在存档中找到)、Coding Horror Lambda the Ultimate

你还应该订阅news.ycombinator.com

8、写关于编程的文章

开始在博客上写关于编程的文章,尽管可能写出的文章只有你一个人看。你还可以在不同的问答网站或论坛上回答问题,或者在一些网站(如DreamInCode)上编写教程。在你写关于编程的文章的时候,你得确保使用正确的术语并且知道为什么以便解释问题和技术。这能够让你反省你的编程知识并且提高你的英语语言能力,而这对于编程很重要。

9、学习底层的编程

学习底层的编程及对应语言对于获取对底层机器的更好理解很有用。试试C,也许还可以学学一些处理器的汇编语言

了解计算机是如何执行一个程序和操作系统是怎么工作(在高一层)。如果你真的想认真尝试低级语言编程,你可以读一些关于计算机组织、操作系统、嵌入式系统、操作系统驱动开发等等方面的书(我现在就在读)。

10、别急着求助于StackOverflow。请认真思考先!

当你遇到一个困难,在试着花半分钟解决无果之后,你是怎么做的?求助于StackOverflow。千万别。而是花一些时间独立试着自己解决。拿一张纸和一支铅笔,草拟出解决办法。假如这没有用,停下来一会儿以保证大脑清醒,然后继续。

如果一个小时(具体时间取决于问题的大小)后还是没有结果,这时你才应求助于StackOverflow,反正求助之前你得自己想清楚。

——–
英文来源:http://www.antoarts.com/10-ways-to-improve-your-programming-skills/
中文翻译:城主(http://www.huntist.cn)。

想和我们一道传播黑客精神?快来加入吧!

无觅猜您也喜欢:

10个编程首选字体

最快的编程语言是?

世界,你准备好了吗?

全球鹰(Global Hawks):在地中海拥挤的上空
无觅

相关 [编程 方法] 推荐:

Javascript异步编程的4种方法

- - 阮一峰的网络日志
你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务. 如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推. 这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行.

提高编程能力的10种方法

- Jason - 黑客志
学习新的编程语言会强迫你运用全新的方法来思考,特别是当这门语言使用一种你还不怎么熟悉的范式. 你能够学习到很多将来你会在你熟悉的语言中用到的思考方式,而且甚至你还可能用新的语言来实现一个正式的项目. 能够提供一次极好的学习过程但不仅限于此的优秀编程语言包括:Lisp(Scheme非常好)、Forth、PostScript或者Factor(面向堆栈的编程语言)、J(奇妙的阵列编程语言)、Haskell(强类型、纯粹的函数式编程语言)、Prolog(逻辑程序设计)和Erlang(并行编程典范).

7个免费的从头开始学习编程的方法

- - LuckerMe.com
我们曾在一篇文章中讨论过不会编程算不算是文盲的问题,虽然有人认为这样有点说过头,但同时也不可否认如今编程确实显得越来越重要. 比如作为设计师,懂一些编程可能会帮你更好地理解自己工作内容;而如果你想从头开始创业,技术创始人的身份则会让你的很多工作显得更容易. 无论想学什么,也无论出于什么目的想学,都需要你保持好奇心.

我的阅读编程书籍的好方法

- - 外刊IT评论
我是学电子工程毕业的,在这个专业里我必须要用的编程语言只有C/C++,汇编和Matlab. 在参加了一个 创业周末的活动后,我开始对软件开发、计算机编程感兴趣,我决定要试一试,要进入这个领域. 我发现,要想做一些编程项目,你需要去学一些完全不同的编程语言. 在过去的一年半里,我学会了Java(用于开发Android),Python和Javascript(& HTML/CSS)(用于web开发),我慢慢认识到,这最好的从书本和教材上学习编程的方法是把它们读3遍.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Shell编程

- - 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.

用 AlphaCode 编程

- - 奇客Solidot–传递最新科技情报
至少在部分问题上 AI 程序员能与真正的程序员竞争了. Alphabet 旗下 AI 子公司 DeepMind 宣布了 AI 代码生成系统 AlphaCode(PDF),声称测试显示其水平在编程竞赛中已经具备了竞争力. 计算机科学家 Scott Aaronson 也为 AI 在编程方面的进步 惊叹不已.

编程能力与编程年龄

- - 酷壳 - CoolShell.cn
程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型,就像《 程序员技术练级攻略》这篇文章很多人回复到这种玩法会玩死人的一样. 我在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭. 因为,大多数程序员都认为,编程这个事只能干到30岁,最多35岁吧.

[译]所有编程皆为Web编程

- - 呦呦鹿鸣
原文作者:Jeff Atwood. Michael Braude对Web编程大受追捧表达了他的不屑:. 大部分人想去做Web编程的原因是,他们不够聪明,因此也做不了别的事. 他们不懂编译器、并发性、3D或类继承. 他们根本不明白我为什么要使用接口或者抽象类. 他们不理解虚函数、指针、引用、垃圾回收、终结器、传引用与传值的区别、C++的虚拟析构函数、或者C#的结构体与类之间的差别.

javascript 编程规范

- 红茶 - 博客园-Ruby's Louvre
为公司起草的javascript编程规范,参考了网上的许多资料,尤其是google的规范. 现在放出来,希望能抛砖引玉,大家多提宝贵意见. 本规范是针对javascript函数式编程风格与公司严重依赖于jQuery进行编码的现实制定出来. 禁止使用eval,with与caller(ecma262 v5 的use strict要求).