阅读优秀代码来学习编程

或许,下面这首现代的禅诗很好的阐述了这个意思:
To follow the path:(沿着这样一条道路:)
look to the master,(寻找大师,)
follow the master,(跟随大师,)
walk with the master,(与大师同行,)
see through the master,(洞察大师,)
become the master.(成为大师。)
...

这里我无法给你完完全全的指导教会你如何编程—— 这是个复杂的技能。但我可以告诉你,书本和上课也
不能作到(最好的黑客中,有许多,也许几乎都是自学成材的)。你可以从书本上学到语言的特点—— 只是一些皮毛,但要使书面知识成为自身技能只能通过实践和虚心向他人学习。因此要作到(一)读代码及(二)写代码。

学习如何编程就象学习用优美的自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点……如此往复,直到你的文章达到你体会到的范文的简洁和力量。

过去找到适合阅读的好的代码是困难的,因为几乎没有大型程序的源代码能让新手练手。这种状况已经戏
剧性地发生变化;开放源代码软件,编程工具和操作系统(全都由黑客写成)现在已经随处可见。

  --Eric Raymond《 如何成为黑客》( How to become a hacker)

很难想像,很多编程学习者竟会忽略阅读优秀源代码这条重要途径。

Raymond关于自然语言写作的类比简洁深刻地阐明了阅读优秀代码的重要。显然,对于新手,并不是学了语法,或者看了几个小例子,就能够编写像样的程序。用某语言实现一个功能可以有无数种写法(甚至连崇尚"做一件事只用一种方法"的Python也是如此),然而其中好的写法却寥寥。例如:

用python去除给定文件'src'中所有空行,并写入新文件'dest'。可以写成:

src_file = open('src', "r")
dest_file = open('dest', "w")

src_lines = src_file.readlines()
for src_line in src_lines:
  if src_line == '\n':
      continue
  dest_file.write(src_line);

然而也可以写成:

file('dest',"w").writelines([l for l in file('src',"r").readlines() if l[:-1].strip()])

显然下面的写法要简洁地多,显然不是学了语法,看一些简单例子就能写出来的。另外,后者还能够处理dos格式和Mac格式的文件。

上面的例子仅涉及语言细节,但优秀代码能带给学习者的却是全方位的,包括设计,算法实现,编程风格,软件包构建,常用技巧,……

其实学编程更像是学外语写作,要学怎么写,当然是"看看人家写得好的是怎么写的"。如果不读相应语言的文章就想写好外语文章,显然是不可思议的。编程同理。

转载于:https://www.cnblogs.com/bukn/archive/2010/01/03/learning_programming_by_reading_source_code.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值