通过代码提高编程能力

原文发于:http://qing.weibo.com/2059598087/7ac2f90733002b1b.html

几乎所有的程序语言都是作为编程工具而出现的。因此每种语言必然有区别于其他语言的语法特性,后出现的语言可能会集成已出现程序语言的好的语法特性,也可能会适当创建合适的语言特性。早一些的,比如while、for、switch语句的出现。晚一些的,比如python中的生成器、生成器函数。在python中,还去掉了switch语句,增添了elif关键字。

因此,通过源代码学习一门语言是能力进阶毕竟的阶段。毕竟初学者只是鹦鹉学舌的使用一门编程语言。而通过学习前辈的程序源码,常常能豁然开朗,恍然大悟“原来还可以这样写代码”。这种恍然大悟当然可以通过个人的编程实践及聪明才智摸索创造出来。但终归是“重新发明轮子”,效率是比较低的。
比如C语言中,“赋值语句也是表达式”。这句话对于初学者而言是晦涩的。他决不至能独立创造出如下的代码来:

while(c = getchar())
{
	...
}

而更可能写出这样的代码:

c = getchar();
while(c)
{
    ...
    c = getchar();
}
而无论在那种语言中,初学者都绝无可能无师自通的学会递归函数的编写。
void frecurse()
{
    ……
    ……frecurse()……
    ……
}
而对于一个从C转到python的程序员来说,则可能会选择性忽略for、while语句中的else语句块。Python中去掉而来C语言中的switch语句,因为该语句太过于灵活容易出错。我也是在书上看到,原来switch语句中还可以嵌套if...else...语句。通过if...else...以及不使用break来控制程序流。显然,在这样宽容的约束之下,极可能产生控制流混乱的代码。正是因为switch语句这一缺点,在C#中,规定每一个case语句必须以break或者goto语句结束。这既限制但又保留了switch语句的灵活性。不过同样地,goto语句的不当使用仍会使程序流更难理解。由此看来,python中取消switch语句是明智的。只是对于C程序员而言,这多少会有些不太适应。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章