检讨总结
一) 在上面的故事中,我们看到了解决编程问题的五个方法.
- 把问题规范成一个普遍的形式,这样更容易和别人交流以及找相关资料.
- 自己尝试找答案.
- 在网上搜寻更好的答案.
- 想一个方法来打败这个更好的答案.
- 翻查教科书或是文献,从基本开始思考有没有最好的解.这些书能被选成教本一定有它的原因.
- 研究问题的特殊情况, 也许会有别出心裁的巧妙方法.
二) 故事中每个程式都只有二三十行大小,说明 Python 语言表达力强且语意很浓缩, 做为快速开发或是测算自己的想法都是非常好的.
三) Python 程式浓缩之余,它的语言也异常的清晰.回看上面的程式,你会发现它们全都不难明白.这说明 Python 程式更加容易维护.
四) 在故事中,我们有很大的篇幅是在讨论方法而只有小部份是在描述 Python 的语言特性.这证明 Python 更适合用来教授编程的概念. 事实上, Python 的作者 Guido 和很多人都认为 Python 是电脑教育的首选语言. 教师可以让学生静静地思考,学通运算的法则; 而不是上来就疯狂地敲打键盘,并要记住一大堆电脑语言的古怪特徵.
五) 整个故事围绕於算法的改进而较少碰到 Python 程式的优化问题. 也许在续集中(如果有的话), 我们要尝试一下在固定的算法及尽量少改动程式码的条件下, 提高 Python 程式的效率. 我暂时想到的方法包括:
- 利用较新和较快的语法. 如 yield, generator.
- 用 Python 的自带优化选项以及内建模组.
- 用第三方的扩展模组, 如 Numpy, Scipy.
- 用编译方式代替解释, 如 freeze, py2exe.
- 用 JIT 类的方法, 如 Psyco.
- 用 Thread, 在多 CPU 的机器上平行运算.
- 最后一样要大改程式了, 用 C 来做扩展.
- 更有 'to hack' 感觉的, 修改 Python 主干程式, 加入像 string.reverse() 这样的辅助函数.
六) 文中所用的测试硬件:
- CPU: Pentium III 866 RAM: 128 MB
- 文中所用的测试软件:
- Slackware Linux: 9.0 Linux Kernel: 2.4.2 GCC: 3.2.2 Python: 修改过的 2.1.3
七) 啃凉馒头对脑筋有帮助.
八) 如果你能想到更好的方法, 欢迎联络本人: glace at chinesepython.org
本文第一次发表在 http://www.dohao.org 技术论坛 2002年许由 glace 整理到中蟒 Wiki 中 2005-3-19 ZoomQuiet 珍藏到 啄木鸟Wiki 中