QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2315|回复: 9
打印 上一主题 下一主题

[其他经验] 转载——数学和编程

[复制链接]
字体大小: 正常 放大

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组: 2015国赛冲刺

    群组: 2016美赛公益课程

    群组: 国赛讨论

    群组: 第三届数模基础实训

    群组: Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-8-31 20:37 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    数学和编程6 ^& G% f" a7 q3 V2 O0 ^% ~
    (这篇博文,语言有些偏激,大家就当饭后茶余的搞笑片段吧!)
    8 b; I9 V4 `7 t( a5 `" }. t
                                    来源: 王垠  发布时间: 2015-08-04 21:33  阅读: 10042 次  推荐: 23                   原文链接                                   [收藏]                           8 U  ?8 k& s9 f' z. l
      好些人来信问我,要成为一个好的程序员,数学基础要达到什么样的程度?十八年前,当我成为大学计算机系新生的时候,也为同样的问题所困扰。面对学数学,物理等学科的同学,我感到自卑。经常有人说那些专业的知识更加精华一些,难度更高一些,那些专业的人毕业之后如果做编程工作,水平其实比计算机系毕业的还要高。直到几年前深入研究程序语言之后,对这个问题我才得到了答案和解脱。由于好多编程新手遇到同样的困扰,所以我想在这里把这个问题详细的阐述一下。
    " r8 e7 ]- E& Z4 X  数学并不是计算机科学的基础; K* P$ S& i. h$ g) o* P
      很多人都错误的认为,计算机科学是数学的一个分支,数学是计算机科学的基础,数学是更加博大精深的科学。这些人以为只要学会了数学,编程的事情全都不在话下,然而事实却并非如此。
    ) A* S* h' w/ [  q& e  事实其实是这样的:
    & `  M& Z& k# L4 L' F9 E; \
    • 计算机科学其实根本不是数学,它只不过借用了非常少、非常基础的数学,比高中数学还要容易一点。所谓“高等数学”,在计算机科学里面基本用不上。
    • 计算机是比数学更加基础的工具,就像纸和笔一样。计算机可以用来解决数学的问题,也可以用来解决不是数学的问题,比如工程的问题,艺术的问题,经济的问题,社会的问题等等。
    • 计算机科学是完全独立的学科。学习了数学和物理,并不能代替对计算机科学的学习。你必须针对计算机科学进行学习,才有可能成为好的程序员。
    • 数学家所用的语言,比起常见的程序语言(比如C++,Java)来说,其实是非常落后而糟糕的设计。所谓“数学的美感”,其实大部分是夜郎自大。
    • 99%的数学家都写不出像样的代码。
      + H, L) H8 a! {; \% H" W' @) w
      数学是异常糟糕的语言
    ! L( l; `: L, Z6 k  N: v  这并不是危言耸听。如果你深入研究过程序语言的理论,就会发现其实数学家们使用的那些符号,只不过是一种非常糟糕的程序语言。数学的理论有些是有用的,然而数学家们用于描述这些理论所用的语言,却是纷繁复杂,缺乏一致性,可组合性(composability),简单性,可用性。这也就是为什么大部分人看到数学就头痛。这不是他们不够聪明,而是数学语言的“设计”有问题。人们学习数学的时候,其实只有少部分时间在思考它的精髓,而大部分时间是在折腾它的语法。
    5 H: r) r6 K2 C, C/ p7 _, v) g$ x5 }  举一个非常简单的例子。如果你说x-1表示x的-1次方(x的倒数),那么f-1表示什么?f的-1次方,f的倒数?别被数学老师们的教条和借口欺骗啦,他们总是告诉你:“你应该记住这些!” 可是你想过吗:“凭什么!” x-1表示x的-1次方,而f-1,明明是一模一样的形式,表示的却是函数f的反函数。一个是求幂,一个是反函数,风马不及,却写成一个样子。这样的语言设计混淆不堪,却喜欢以“约定俗成”作为借口。
    0 e$ x- Y6 g$ Z; ]5 U0 o  如果你再多看一些数学书,就会发现这只是数学语言几百年累积下来的糟粕的冰山一角。数学书里尽是各种上标下标,带括号的上标下标,x,y,z,a,b,c,f,g,h,各种扭来扭去的希腊字母,希伯来字母…… 斜体,黑体,花体,双影体,……用不同的字体来表示不同的“类型”。很多符号的含义,在不同的子领域里面都不一样。有些人上一门数学课,到最后还没明白那些符号是什么意思。
    * `( }/ T9 {( H3 E- N! O& ]  很多人学习微积分都觉得困难,其实问题不在他们,而在于莱布尼兹(Leibniz)。莱布尼兹设计来描述微积分的语言(∫,dx, dy, ...),从现代语言设计的角度来看,其实非常之糟糕,可以说是一塌糊涂。我不能怪莱布尼兹,他毕竟是几百年前的人了,他不知道我们现在知道的很多东西。然而古人的设计,现在还不考虑改进,反而当成教条灌输给学生,那就是不思进取了。
    2 I( w) J% k. h  数学的语言不像程序语言,它的历史太久,没有经过系统的,考虑周全的,统一的设计。各种数学符号的出现,往往是历史上某个数学家有天在黑板上随手画出一些古怪的符号,说这代表什么,那代表什么,…… 然后就定下来了。很多数学家只关心自己那块狭窄的子领域,为自己的理论随便设计出一套符号,完全不管这些是否跟其它子领域的符号相冲突。这就是为什么不同的数学子领域里写出同样的符号,却可以表示完全不同的涵义。在这种意义上,数学的语言跟Perl(一种非常糟糕的程序语言)有些类似。Perl把各种人需要的各种功能,不加选择地加进了语言里面,造成语言繁复不堪,甚至连Perl的创造者自己都不能理解它所有的功能。: K6 G$ y! c9 \4 T+ s" x
      数学的证明,使用的其实也是极其不严格的语言——古怪的符号,加上含糊不清,容易误解的人类语言。如果你知道什么是 Curry-Howard Correspondence 就会明白,其实每一个数学证明都不过是一段代码。同样的定理,可以有许多不同版本的证明(代码)。这些证明有的简短优雅,有的却冗长繁复,像面条一样绕来绕去,没法看懂。你经常在数学证明里面看到“未定义的变量”,证明的逻辑也包含着各种隐含知识,思维跳跃,非常难以理解。很多数学证明,从程序的观点来看,连编译都不会通过,就别提运行了。( Q3 ?0 ~3 O/ i0 w. |
      数学家们往往不在乎证明的优雅性。他们认为只要能证明出定理,你管我的证明简不简单,容不容易看懂呢。你越是看不懂,就越是觉得我高深莫测!这种思潮到了编程的时候就显出弊端了。数学家写代码,往往忽视代码的优雅性,简单性,模块化,可读性,性能,数据结构等重要因素,认为代码只要能算出结果就行。他们把代码当成跟证明一样,一次性的东西,所以他们的代码往往不能满足实际工程的严格要求。) R- e7 u# }: E% B* p, B
      编程是一门艺术+ A$ e, l3 @' o& V, X  ~
      从上面你也许已经明白了,普通程序员使用的编程语言,就算是C++这样毛病众多的语言,其实也已经比数学家使用的语言高明很多。计算机科学并不是数学的一个分支,它在很大程度上是优于数学,高于数学的。有些数学的基本理论可以被计算机科学所用,然而计算机科学并不是数学的一部分。数学在语言方面带有太多的历史遗留糟粕,它其实是泥菩萨过河,自身难保,它根本解决不了编程中遇到的实际问题。5 P0 E' R7 i/ o4 c
      编程真的是一门艺术,因为它符合艺术的各种特征。艺术可以利用科学提供的工具,然而它却不是科学的一部分,它的地位也并不低于科学。和所有的艺术一样,编程能解决科学没法解决的问题,满足人们新的需求,开拓新的世界。所以亲爱的程序员们,别再为自己不懂很多数学而烦恼了。数学并不能帮助你写出好的程序,然而能写出好程序的人,却能更好的理解数学。我建议你们先学编程,再去看数学。% s+ \" h8 m2 I
    ' y" R+ ?/ F" o+ T/ X2 n- x
    & }7 Y8 b) p- y, N

    " @: C! ~9 {( u
    - g4 j& ]: Z+ f- O; F: v; E& N3 T2 }$ E" C2 W* Q- {* e
    ; g( v; v5 v2 Y1 K( B

    5 F& g8 B) A4 q' r$ p+ {5 X) W) b8 W+ K- O1 S# K
    . d+ W9 S" L4 \9 l2 T& z
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国版主团队!

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    回复

    使用道具 举报

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    希望可以帮助到更多的人
    : Y) x9 K1 f- B* u4 _
    回复

    使用道具 举报

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    回复

    使用道具 举报

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    回复

    使用道具 举报

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    回复

    使用道具 举报

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    回复

    使用道具 举报

    453

    主题

    24

    听众

    4332

    积分

  • TA的每日心情
    奋斗
    2016-9-9 07:08
  • 签到天数: 157 天

    [LV.7]常住居民III

    国际赛参赛者

    自我介绍
    建模爱好者

    社区QQ达人 新人进步奖 发帖功臣

    群组: 2015SAS数据分析大赛

    群组: 西京学院数学建模协会

    回复

    使用道具 举报

    0

    主题

    10

    听众

    309

    积分

    升级  3%

  • TA的每日心情
    难过
    2016-8-4 20:44
  • 签到天数: 48 天

    [LV.5]常住居民I

    邮箱绑定达人 社区QQ达人

    群组: 2015国赛优秀论文解析

    回复

    使用道具 举报

    dabao005        

    0

    主题

    8

    听众

    4

    积分

    升级  80%

    该用户从未签到

    1 n$ J3 c+ U% M( |1 s  q' D( `
    , M' E4 l. W5 B/ G; ^5 r  ?

    1 p: M% O, h5 t1 T很不错写的
    & Z6 n$ {9 l& t- u$ i+ V% r# H
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-11-10 08:44 , Processed in 0.285388 second(s), 105 queries .

    回顶部