要不要修数双呢?(关于数学于计算机的讨论)

********************************************************************  
                            atlantis13579(更深的蓝)(^_^)   (     )    
  ********************************************************************  
  点看法一点体会——作者:骄傲的中国人    
   
    其实很早就想写这遍文章了,趁有点时间,想把自己的感受说一    
  下。我的写作水平just   so   so,写english还好一点,因为不用象中    
  文那样,要注意那么多的修辞方式和文采,只需平铺直叙就行了。    
   
    可能我天生就是要注定学Computer的,因为从小学到现在,只有    
  两堂课是可以的——数学,英语。我那股凡事都要问个为什么的牛脾    
  气,更在学数学中体现得淋漓尽致。整天地查书,追问着同学,老师    
  每一条算式,定理的推算和证明,直到最后得知那是一条公理,才心    
  有不甘地停止了穷追猛打,甚至还想弄一些鬼点子来推翻公理。以至    
  同学、老师一见到我就觉得烦。可惜我学艺不精,小中大学都被选拔    
  参加过不少数学竞赛,却没有拿过一次理想的成绩。我那牛脾气也延    
  续都到写program中,几乎什么都喜欢自己implementation。所以我不    
  太喜欢VB,DELPHI,CBC,什么都用别人的Component。觉得有一种压    
  抑感,由于是从SDK学起的,所以Windows的机理也比较清晰,以前还    
  打算把MFC   source   codes改写成为自己的classes,可惜MFC实在庞大,    
  而且还在不断updated,以我一个人的能力完成了约1/3,已经精疲力尽    
  了。以前在国内一直梦想着能到Symantec   这样的公司做developer,    
  因为很想弄清楚为什么Norton能把Windows   control   起来。    
   
    以前总觉得国外的programmer很厉害,若不是的话,为什么能开    
  发出这么多改变人类生活Software,但出来见识过了,才知道在技术    
  上,他们也不过如此,反而觉得国内的高手还多一些。也许这与教育    
  制度有关,国内普遍都认为只要数学学好了,计算机也就没问题了,    
  君不见国产的教科书都是以那些枯燥的数学问题来教导初学者。诚然,    
  数学思维对写code有莫大的帮助,我也是受益者,所以中国人写程序    
  在同等外界条件下(硬件,资料等)绝对比鬼佬强。但同时也带来了    
  严重的错误观念——“编程研究到一定程度,归根结底是数学问题”。    
  刚出来的时候,我也是这样认为。    
   
    我哥也是Master   of   Computer   Science出身,由于他自己的努力,    
  还没到30岁,已经在3com总部担任Project   manager了。他以前在silion    
  valley   多间公司做过,包括Symantec。兄弟俩经常就computer的问    
  题进行讨论,他为了我能尽快适应silicon   valley的文化,不断把不    
  少经验告诉我,使我收益非浅。发现其实是观念上的不同。这里认为    
  “编程研究到一定程度,归根结底是管理和人类发展的问题”。    
   
      一、管理问题:   其实写code在一个software   product生产过程中只    
  占一小部分,关键在于如何使product占有market和有效管理整个pro-    
  duct的开发过程。这学期在Project   Management   Course学习中,有两    
  点很有感受。    
   
    (1)   At   some   point   in   the   development,   Better   becomes   the    
  enemy   of   Good.      
   
          (2)   Engineers   are   very   good   at   taking   more   time   and   sp-    
  ending     more   money   to   make   "better"   than   what   the   customer      
  ever   wanted   or   has   the   time   or   money   to   pay   for.      
   
          (3)一群水平一般的Engineers   +   一个优秀,经验丰富的Manager    
  >>   一群拔尖的Engineers。    
   
    而中国恰好在管理上缺乏优秀人才,制度和观念更是与silion      
  valley   的不能同日而语。因此,尽管国内优秀的programmer相当多,    
  但是只是一盘散沙,白白浪费掉。可叹的是有不少国人还白日做梦地    
  期盼着中关村能取代硅谷。若制度和观念不改变的话,即使把全国最    
  优秀的程序员聚积在中关村,也别想追上硅谷。另一个典型的例子,    
  Linux   如今高唱入云,而且聚积了世界上许多优秀程序员的成果,但    
  是若它的开发和维护仍停留在以个人或小群体的基础上,没有系统性,    
  规范化。即使它的性能比Windows   要好许多,也只能成为那些发烧友    
  桌上的宠物,永远不能登大雅之堂!如今不少大公司加入其中,对它    
  开发和维护的管理有很大帮助,才有可能向microsoft叫板!    
   
    二、人类发展从计算机技术的发展历史来看,计算机最终解决的    
  是人类发展问题,而不是数学问题。很简单的例子就是,Programming    
  Language的发展,asm->   c->   c++->   java->   CORBA(注意:CORBA不    
  是一种语言)    
   
    可以看到这样的发展,主要是为了方便一个Software,一个Pro-    
  duct   的更有效的开发和应用。简单地说,c使程序员摆脱了机器语言    
  的苦涩,c++(也可以说Object-oriented   Languages)使产品的组成、    
  开发、维护更符合人类的思维方式,java在Internet流行的这个年代,    
  顺理成章地成为了宠儿,CORBA更是进了一大步,承诺Language-inde-    
  pendence,     Platform-independence,     Location-independence。已    
  经是相当成熟的Distributed   Object   Computing。看了许多CORBA   的    
  书,颇有感叹,CORBA应该说是人类思维的发展的一个体现。同时,    
  为中国计算机的研究无奈!这里的研究可以说是以人为本,为的是在    
  整体上运用计算机促进人类发展,而国内的研究更多的是在于算法等    
  局部,微观的研究,这方面虽然是必要,但在观念上可以看得出人家    
  已经高一个层次了。不夸张地说,silicon   valley,它有自己独特的    
  文化,在这里,不但可以看到到计算机技术的飞速发展,同时也从中    
  感受到人类思维的发展。这也是为什么要独立开办一个Computer   science      
  department的缘故。毕竟,数学与计算机有紧密联系,但同时也有许    
  多本质的不同。    
   
    以上是我出国后感觉到的不同,归根到底就是两个字:“观念”。    
  这也是我一家之言,盼能与大伙讨论一下,为中国的计算机发展出一    
  分绵力。     


********************************************************************  
                            atlantis13579(更深的蓝)(^_^)   (     )    
  ********************************************************************  
  软件工程师需要数学的真正理由  
   
  作者:Keith   Devlin  
   
  翻译:g9yuayon  
   
  本文译自   The   Communication   of   ACM   第44卷,2001年第10期  
   
   
  软件工程师们常常宣称他们从来不用在大学里学到的任何数学知识.   说到这个,他们还会说连大学里学到的计算机专业知识都用不了多少。我搞了三十年数学,就让别人来谈计算机专业方面的情况,不过就数学的使用情况而言,我不 得不坦白承认那些软件工程师太对了:他们就是用不着大学里学的数学。  
   
  但他们也太错了。他们每天都运用着大学里学到的数学。  
   
  其实这没什么矛盾。关键在于“运用”这词何解。一种理解是软件工程师们曾在数学课上常碰到的。比如,在高数课上学了分步积分法后,学生们就用该方法解相应 的练习题和考试题。这种所谓的“运用”最为常见,而且也是当软件工程师说他们从不用大学数学时所暗指的。不过,这种理解建立在把人的学习方式看作“填鸭” 的观点上。  
   
  根据这种“填鸭”观,教育主要就是把知识灌到我们头脑中,而运用我们所学主要就是把灌进去的东西再倒出来。我敢说,这种教育观高度简化而且错了。不过,现 行教育制度(我也置身其中)下,人们开课,然后设置三小时反刍般的笔试(译注:三小时的笔试是北美很多大学期末考试的标准)来检验课的效果。正是这种方 式,一次又一次滋养了教育是填鸭的观念。  
   
  相比之下,数十年来所有关于大脑工作方式及学习方法的大量研究都表明,掌握知识和像算法般的系统化做事步骤不过是人们学习过程的表象(我们知道那些是表 象,因为我们一般都会在期末考试后飞快地忘记课堂上学到的东西)。教育的真正价值不在于此。我们的大脑或许是世上适应性系统的最佳范例。当我们让大脑经受 长期的教育,大脑就会发生永久性的改变。从身体角度讲,大脑中某部分传导神经纤维链进一步生长并得到加强。从功用和经验的角度讲,我们获取了新的知识和技 能。学习过程重复得越多,上述的改变就越强越久。  
   
  重复学习在数学里展现的效果之强烈,其他学科无出其右。形式化数学大概有五千多岁。5000年在漫漫进化史中不过眨眼工夫,而且肯定只够我们的大脑做出最 细微的改变。因此,虽然闪族人在5000年到8000年前提出抽象的数,人类的数学思维当在更久更久前便已发轫。我们在最初的自然选择中发展了思考大自然 和社会的能力,但人脑中应数学思考而生的新改变将综合我们的能力,使我们不光能思考具象的世界,还能推演我们头脑所创照的纯粹抽象世界。  
   
  要人脑处理新层次上的抽象极度困难。这就是为什么直到18世纪数学家们才能自如地处理零和负数,也是为什么直到今天许多人都不能接受负一的平房根是真正的数。  
   
  但是,软件工程全跟抽象相关,它的每一个概念,观点,以及方法,都是完全抽象的。当然,很多软件工程师都不这样觉得,但这正说明了我的观点。他们从数学课 上得到的最大收益便是曾对纯粹抽象的物体和结构进行过严格推演。而且,数学课是唯一给他们这种体验的科目。这种体验不在于那些课堂上教的重要东西,而在于 其本身是数学化的。日常生活中,熟悉滋生出轻慢,而在学习如何在高度抽象的领域工作时,熟悉培养出的是种感觉,唔,熟悉的感觉   --   就是说,曾经让人感到抽象的东西开始变得具体,因而变得比较容易对付。  
   
  尽管学习数学带给计算机专业人士的回报大过常人,但现今社会里每个人都能由此受益。例如,美国教育部1997年一项研究(The   Reilly   Report)表明,在高中修过严格的代数或几何课的学生在升学方面表现更加优秀,而且升学后的表现也更好,不管他们在大学里学的是什么。换句话说,看来 完成一门严格的数学课   --   学生们甚至不用学得多好   --   是让人们提高自己思维能力,变得聪颖的绝佳方法。这种思维能力能让人们在各方面受益。  
   
  (我在自己的书,《数学基因:数学思考如何演进及数为什么像闲言碎语》(Basic   Books,   2000)中,我更加仔细地分析了本文的观点,并确定了哪些生存优势致使人类有能力进行数学思考。)  
   
  如我在这篇短文中所指,学数学对软件工程师们的这种好处比对其他人大得多。其实,这是基本的先决条件。虽然并没在工程系学生的必修数学课的要求里被正式提到,但它的确是数学为什么有用的真正理由。  
   
   
  Keith   Devlin   (devlin@csli.stanford.edu)   是斯坦福大学语言及信息研究中心的执行主任 


starfish(海星)回复于 2002-09-08 13:05:53 得分 50

第一篇文章的作者看问题有些片面了。  
  任何学科都有三个层次:科学、技术和工程。科学研究的是自然的规律,其目的是认识自然;技术研究的是生产经验和方法,其目的是改造自然;工程研究的是生产管理过程的控制,其目的是提高生产力。  
  这三个层次是缺一不可的,科学研究是基础,如果没有科学来认识自然,技术是无法得到发展的;而如果没有技术,工程无从谈起;如果没有工程,生产力不够,科学的研究发展也会受到限制。  
  计算机领域也是这样,包括计算机科学,计算机技术和计算机工程三个层次。计算机科学研究到最后就是数学。事实上所有的自然科学科学甚至一部分人文科学(物 理,生物,化学,经济,政治,etc)搞到最后也是归结于数学,因为“数学是上帝用来书写宇宙的语言”(伽利略的名言);计算机技术7以计算机科学为基 础,首先是由计算机科学家搞出理论,然后将该理论应用到生产实践中,再经过总结归纳,最后才形成技术;而工程研究如何更有效地利用技术从事生产,的根本目 的是为了提高生产力。科学只关心“是什么”和“为什么”,技术关心“怎么做”,工程则关心“怎样做最好”。  
  第一篇文章中所提到的“管理问题”,充其量只是计算机工程中的一个方面,而且还不是最主要的方面,因为那已经不属于计算机的范畴了,搞管理的未必要懂计算 机,懂计算机的未必可以搞管理,搞管理是学经济学管理的人应该做的事。国内IT行业的管理不好,应该责怪的是那些学管理的人和那些学计算机但是却偏偏要去 搞管理的人。第一篇文章中强调学计算机的应该重视管理,根本就是误导。学计算机的就应该学好本行,管理应该由学管理的去搞。国内很多技术型的创业者总以为 自己是全能型的人才,什么都要亲力亲为,殊不知他虽然在技术上是一把手,但是在管理上则是外行,还不如去安分地做一个工程师或技术员呢。国内以前很有前途 的那些软件公司,包括求伯君的金山,晓军123,都是载在这个上面。至于微软的成功,那是因为比尔本来就是管理型人才,他本人无论是在技术上还是理论上并 无过人之处,他厉害的地方是他判断力和决断力,这些和计算机是毫无关系的。  
   
  至于那篇文章提出的第二点  
  -------begin   quote------------  
  “人类发展从计算机技术的发展历史来看,计算机最终解决的    
  是人类发展问题,而不是数学问题。很简单的例子就是,Programming    
  Language的发展,asm->   c->   c++->   java->   CORBA(注意:CORBA不    
  是一种语言)   ”  
  ------end   quote--------------  
   
  呵呵,这就有点可笑了。要知道,计算机语言的发展是最能够说明数学对于计算机重要作用的一个例子。如果没有自动机理论,没有语法分析的算法,没有形式语言 的理论,怎么可能会产生编译器呢?java为什么好?为什么说java是类型安全的?这些都是有理论保障的啊,去看看那些关于程序设计语言的研究论文,通 篇都是lamda演算,那不是数学是什么?大家天天用程序设计语言编程序,有没有考虑过为什么我们能保证编出来的程序运行结果和我们预期的一致?为什么大 部分程序设计语言中只要for,   while,   until三种循环结构就足够了?为什么只要我们能想到的算法都能够用某种程学设计语言把它给翻译成代码?会不会有某些问题我们能想出算法但是无法写成代 码?为什么C++或java的语法是现在我们见到的这个样子而不是其他的样子?好好想想这些问题吧,你就会知道数学对于程序设计语言的作用了。  
   
  至于计算机的其他应用领域,数学更是必不可少的,例如应用广泛的关系数据库,其基础是关系代数;例如XML,其基础是形式语言理论;软件工程中用到的数学就更多了,中国大百科全书对软件工程的定义是:  
  “软件工程是应用计算机科学、数学及管理科学等原理,以工程化原则、方法解决软件问题的工程。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、降低成本及确定权衡,管理科学用于计划、资源、质量、成本等的管理。”    
   
   
  ……  
   
  本来还想多写一些的,但是刚刚吃完饭回来,好像没有灵感写下去了@_@~!,暂时就说这些吧


 


 


 

来源:http://topic.csdn.net/t/20020907/22/1005337.html#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值