《数学和编程》
刚打开王垠的博客,发现新文章《数学和编程》,大概读了一遍,但正好想起,自己前一段时间,用C#与F#,写斐波那契数列,的时候产生的一个简单的想法,数学和编程语言有什么关系?
斐波那契数列,数学公式描述(图片来源于维基百科,斐波那契数列条目):

斐波那契数列的第N项,F#求解:
let rec fib n = match n with | 0 -> 0 | 1 -> 1 | _ -> fib (n - 1) + fib (n - 2)
把F#的求解方式放前面的原因是,由于F#的Pattern Matching特性,使得斐波那契数列的表示,非常简洁,清晰。
斐波那契数列的第N项,C#求解:
private static long CalculateFibonacci(long n) { if (n == 0) return 0; if (n == 1) return 1; return CalculateFibonacci(n - 1) + CalculateFibonacci(n - 2); }
对比前面的前面的F#实现,就发现了,F#的不需要指定类型,以及Pattern Matching等特性,对于描述斐波那契数列简直是,非常合乎思考逻辑,也与数学公式描述是最接近的,甚至是优于数学公式描述(个人观点),这正好印证了王垠文中的,“编程语言比数学家使用的语言高明很多”(注:大意,非完全的原文引用)。
从这个简单的例子中得到思考是,对于现实中的大多数问题,也许已经有了数学家的数学语言描述,然后根据数学语言,改编成程序语言,这样做也许就能做到,程序语言的描述是严谨的,正确的。所以回应开头抛出的问题,数学和编程语言有什么关系呢?我的答案就是,都可以描述现实中的一些问题。
(水平有限,欢迎指出有问题的地方,另外第一次写博客)
浙公网安备 33010602011771号