作 者:吴 飞
诗人潘德兴云:“诗有三境,学诗亦有三境。先取清通,次宜警炼,终尚自然,诗之三境也。”
张三丰授张无忌八卦剑的问话隐喻了武学的三重境界:“手中有剑而心中无剑,手中无剑而心中有剑,手中无剑而心中亦无剑。”
那么什么才是一个 Mathematica 探索者的三重境界呢?
第一层境界:从 0 到 1
昨夜西风凋碧树。独上高楼,望尽天涯路。
图一:Pieter Bruegel, The Hunters in the Snow (Winter), 1565
这一阶段基本属于初学入门,对 Mathematica 充满了好奇。
变量使用:全是全局变量(举个初学者的例子,常用赋值或循环。)
掌握函数:50+ 个常用函数
完成项目:独立完成 1+ 个项目
算法理解:一个好的算法运行起来比较快。
实际能力:学会写代码并成功的调试了一个程序,能用 Mathematica 来实现自己的一些想法。
评价意义:其实你写的程序根本就没有用,因为连看的人都没有,更别说使用了。
建议学习:浏览 Wolfram Mathematica 主页并不断探索 Mathematica Documentation Center 。
推荐读物:
[1] R. E. Maeder, Computer Science with Mathematica, Cambridge, 2000.
[2] S. McConnell, Code Complete, 2nd ed., Microsoft 2006.
[3] A. Hunt, D. Tohmas, The Pragmatic Programmer, Addison Wesley 2007.
[4] S. Berkun, The Art of Project Managerment, O'Reilly & 东南大学出版社 2006.
第二层境界:从 1 到 n
衣带渐宽终不悔,为伊消得人憔悴。
图二:Gustav Klimt, The Kiss, 1908
这一阶段你会疯狂的使用 Mathematica,并不断完善自己的使用技巧。
变量使用:清除全局变量(或者在每段代码前加上一行清除命令。)
掌握函数:500+ 个常用函数
完成项目:独立完成 10+ 个项目
算法理解:在分析层面上,一个聪明算法的最差情况也优于蛮力法(Brute Force)。
实际能力:熟练掌握程序设计,并开始写算法,讲究效率和艺术。
评价意义:程序可以被重构,算法将会被改进。重构和改进何时到头了呢?
建议学习:细读 Wolfram Demonstrations Project 和 Wolfram Blog,希望更阅读优秀的作品来充实自己。
喜欢读物:
[1] M. Trott, The Mathematica GuideBook for Programming, Springer 2004.
[2] Anany Levitin, 潘彦 译,算法设计与分析基础, 第2版,清华大学出版社 2007.
[3] J. Kleinberg, É. Tardos, Algorithm Design, Pearson & Tsinghua 2006.
[4] J. Bentley, Programming Pearls, 2nd ed. Addison Wesley 2006.
第三层境界:从 n 到 oo(Infinity)
众里寻他千百度,蓦然回首,那人正在灯火阑珊处。
图三:Eugène Delacroix, La Liberté guidant le peuple, 1830
遗憾的是许多软件的使用者甚至是设计开发者仅能体会到第二层境界,真正进入第三层境界实在是寥寥无几。
变量使用:没有全局变量(当然也就无需清除了,仅用局部变量。)
Mathematica 的诀窍在于把所有的变量都染成绿色的(局部变量),可以是草绿或是墨绿,但不能总是蓝色的。
掌握函数:5000+ 个常用函数
完成项目:完成 100+ 个项目
算法理解:一个有效的算法具有多项式的运行时间 ( Polynomial Running Time )。
实际能力:用数学方法来分析和证明算法,从物理层面来思考和解决问题,讲究科学方法。
评价意义:只有当算法被数学证明是正确的时候,那才是真正正确了,才是经典和完美。
其实软件、程序、算法都由人创造的,最终解决问题、揭示未知的都是掌握科学方法的人。
建议学习:参阅 Wolfram Library Archive 和 The Mathematica Journal 长期撰写和发表您自己的演示项目。
参考文献:
[1] S. Wolfram, A New Kind of Science, Wolfram Media Inc., 2002.
[2] D. E. Knuth, The Art of Computer Programming, Vol.1-4, Addison Wesley 2006.
[3] S. S. Skiena, The Algorithm Design Manual, 2nd Edition, Springer: New York, 2008.
结束语:
一代国学宗师王国维在《人间词话》中说:“古今之成大事业、大学问者,罔不经过三种之境界。”