成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數(shù)學(xué)和編程

移動開發(fā)
好些人來信問我,要成為一個好的程序員,數(shù)學(xué)基礎(chǔ)要達(dá)到什么樣的程度?十八年前,當(dāng)我成為大學(xué)計(jì)算機(jī)系新生的時(shí)候,也為同樣的問題所困擾。面對學(xué)數(shù)學(xué),物理等學(xué)科的同學(xué),我感到自卑。經(jīng)常有人說那些專業(yè)的知識更加精華一些,難度更高一些,那些專業(yè)的人畢業(yè)之后如果做編程工作,水平其實(shí)比計(jì)算機(jī)系畢業(yè)的還要高。直到幾年前深入研究程序語言之后,對這個問題我才得到了答案和解脫。由于好多編程新手遇到同樣的困擾,所以我想在這里把這個問題詳細(xì)的闡述一下。

好些人來信問我,要成為一個好的程序員,數(shù)學(xué)基礎(chǔ)要達(dá)到什么樣的程度?十八年前,當(dāng)我成為大學(xué)計(jì)算機(jī)系新生的時(shí)候,也為同樣的問題所困擾。面對學(xué)數(shù)學(xué),物理等學(xué)科的同學(xué),我感到自卑。經(jīng)常有人說那些專業(yè)的知識更加精華一些,難度更高一些,那些專業(yè)的人畢業(yè)之后如果做編程工作,水平其實(shí)比計(jì)算機(jī)系畢業(yè)的還要高。直到幾年前深入研究程序語言之后,對這個問題我才得到了答案和解脫。由于好多編程新手遇到同樣的困擾,所以我想在這里把這個問題詳細(xì)的闡述一下。

數(shù)學(xué)并不是計(jì)算機(jī)科學(xué)的基礎(chǔ)

很多人都錯誤的認(rèn)為,計(jì)算機(jī)科學(xué)是數(shù)學(xué)的一個分支,數(shù)學(xué)是計(jì)算機(jī)科學(xué)的基礎(chǔ),數(shù)學(xué)是更加博大精深的科學(xué)。這些人以為只要學(xué)會了數(shù)學(xué),編程的事情全都不在話下,然而事實(shí)卻并非如此。

事實(shí)其實(shí)是這樣的:

  • 計(jì)算機(jī)科學(xué)其實(shí)根本不是數(shù)學(xué),它只不過借用了非常少、非常基礎(chǔ)的數(shù)學(xué),比高中數(shù)學(xué)還要容易一點(diǎn)。所謂“高等數(shù)學(xué)”,在計(jì)算機(jī)科學(xué)里面基本用不上。
  • 計(jì)算機(jī)是比數(shù)學(xué)更加基礎(chǔ)的工具,就像紙和筆一樣。計(jì)算機(jī)可以用來解決數(shù)學(xué)的問題,也可以用來解決不是數(shù)學(xué)的問題,比如工程的問題,藝術(shù)的問題,經(jīng)濟(jì)的問題,社會的問題等等。
  • 計(jì)算機(jī)科學(xué)是完全獨(dú)立的學(xué)科。學(xué)習(xí)了數(shù)學(xué)和物理,并不能代替對計(jì)算機(jī)科學(xué)的學(xué)習(xí)。你必須針對計(jì)算機(jī)科學(xué)進(jìn)行學(xué)習(xí),才有可能成為好的程序員。
  • 數(shù)學(xué)家所用的語言,比起常見的程序語言(比如C++,Java)來說,其實(shí)是非常落后而糟糕的設(shè)計(jì)。所謂“數(shù)學(xué)的美感”,其實(shí)大部分是夜郎自大。
  • 99%的數(shù)學(xué)家都寫不出像樣的代碼。

數(shù)學(xué)是異常糟糕的語言

這并不是危言聳聽。如果你深入研究過程序語言的理論,就會發(fā)現(xiàn)其實(shí)數(shù)學(xué)家們使用的那些符號,只不過是一種非常糟糕的程序語言。數(shù)學(xué)的理論有些是有用的,然而數(shù)學(xué)家門用于描述這些理論所用的語言,卻是紛繁復(fù)雜,缺乏一致性,可組合性(composability),簡單性,可用性。這也就是為什么大部分人看到數(shù)學(xué)就頭痛。這不是他們不夠聰明,而是數(shù)學(xué)語言的“設(shè)計(jì)”有問題。人們學(xué)習(xí)數(shù)學(xué)的時(shí)候,其實(shí)只有少部分時(shí)間在思考它的精髓,而大部分時(shí)間是在折騰它的語法。

舉一個非常簡單的例子。如果你說x-1表示x的-1次方(x的倒數(shù)),那么f-1表示什么?f的-1次方,f的倒數(shù)?別被數(shù)學(xué)老師們的教條和借口欺騙啦,他們總是告訴你:“你應(yīng)該記住這些!” 可是你想過嗎:“憑什么!” x-1表示x的-1次方,而f-1,明明是一模一樣的形式,表示的卻是函數(shù)f的反函數(shù)。一個是求冪,一個是反函數(shù),風(fēng)馬不及,卻寫成一個樣子。這樣的語言設(shè)計(jì)混淆不堪,卻喜歡以“約定俗成”作為借口。

如果你再多看一些數(shù)學(xué)書,就會發(fā)現(xiàn)這只是數(shù)學(xué)語言幾百年累積下來的糟粕的冰山一角。數(shù)學(xué)書里盡是各種上標(biāo)下標(biāo),帶括號的上標(biāo)下標(biāo),x,y,z,a,b,c,f,g,h,各種扭來扭去的希臘字母,希伯來字母…… 斜體,黑體,花體,雙影體,……用不同的字體來表示不同的“類型”。很多符號的含義,在不同的子領(lǐng)域里面都不一樣。有些人上一門數(shù)學(xué)課,到***還沒明白那些符號是什么意思。

很多人學(xué)習(xí)微積分都覺得困難,其實(shí)問題不在他們,而在于萊布尼茲(Leibniz)。萊布尼茲設(shè)計(jì)來描述微積分的語言(∫,dx, dy, ...),從現(xiàn)代語言設(shè)計(jì)的角度來看,其實(shí)非常之糟糕,可以說是一塌糊涂。我不能怪萊布尼茲,他畢竟是幾百年前的人了,他不知道我們現(xiàn)在知道的很多東西。然而古人的設(shè)計(jì),現(xiàn)在還不考慮改進(jìn),反而當(dāng)成教條灌輸給學(xué)生,那就是不思進(jìn)取了。

數(shù)學(xué)的語言不像程序語言,它的歷史太久,沒有經(jīng)過系統(tǒng)的,考慮周全的,統(tǒng)一的設(shè)計(jì)。各種數(shù)學(xué)符號的出現(xiàn),往往是歷史上某個數(shù)學(xué)家有天在黑板上隨手畫出一些古怪的符號,說這代表什么,那代表什么,…… 然后就定下來了。很多數(shù)學(xué)家只關(guān)心自己那塊狹窄的子領(lǐng)域,為自己的理論隨便設(shè)計(jì)出一套符號,完全不管這些是否跟其它子領(lǐng)域的符號相沖突。這就是為什么不同的數(shù)學(xué)子領(lǐng)域里寫出同樣的符號,卻可以表示完全不同的涵義。在這種意義上,數(shù)學(xué)的語言跟Perl(一種非常糟糕的程序語言)有些類似。Perl把各種人需要的各種功能,不加選擇地加進(jìn)了語言里面,造成語言繁復(fù)不堪,甚至連Perl的創(chuàng)造者自己都不能理解它所有的功能。

數(shù)學(xué)的證明,使用的其實(shí)也是極其不嚴(yán)格的語言——古怪的符號,加上含糊不清,容易誤解的人類語言。如果你知道什么是 Curry-Howard Correspondence 就會明白,其實(shí)每一個數(shù)學(xué)證明都不過是一段代碼。同樣的定理,可以有許多不同版本的證明(代碼)。這些證明有的簡短優(yōu)雅,有的卻冗長繁復(fù),像面條一樣繞來繞去,沒法看懂。你經(jīng)常在數(shù)學(xué)證明里面看到“未定義的變量”,證明的邏輯也包含著各種隱含知識,思維跳躍,非常難以理解。很多數(shù)學(xué)證明,從程序的觀點(diǎn)來看,連編譯都不會通過,就別提運(yùn)行了。

數(shù)學(xué)家們往往不在乎證明的優(yōu)雅性。他們認(rèn)為只要能證明出定理,你管我的證明簡不簡單,容不容易看懂呢。你越是看不懂,就越是覺得我高深莫測!這種思潮到了編程的時(shí)候就顯出弊端了。數(shù)學(xué)家寫代碼,往往忽視代碼的優(yōu)雅性,簡單性,模塊化,可讀性,性能,數(shù)據(jù)結(jié)構(gòu)等重要因素,認(rèn)為代碼只要能算出結(jié)果就行。他們把代碼當(dāng)成跟證明一樣,一次性的東西,所以他們的代碼往往不能滿足實(shí)際工程的嚴(yán)格要求。

編程是一門藝術(shù)

從上面你也許已經(jīng)明白了,普通程序員使用的編程語言,就算是C++這樣毛病眾多的語言,其實(shí)也已經(jīng)比數(shù)學(xué)家使用的語言高明很多。計(jì)算機(jī)科學(xué)并不是數(shù)學(xué)的一個分支,它在很大程度上是優(yōu)于數(shù)學(xué),高于數(shù)學(xué)的。有些數(shù)學(xué)的基本理論可以被計(jì)算機(jī)科學(xué)所用,然而計(jì)算機(jī)科學(xué)并不是數(shù)學(xué)的一部分。數(shù)學(xué)在語言方面帶有太多的歷史遺留糟粕,它其實(shí)是泥菩薩過河,自身難保,它根本解決不了編程中遇到的實(shí)際問題。

編程真的是一門藝術(shù),因?yàn)樗纤囆g(shù)的各種特征。藝術(shù)可以利用科學(xué)提供的工具,然而它卻不是科學(xué)的一部分,它的地位也并不低于科學(xué)。和所有的藝術(shù)一樣,編程能解決科學(xué)沒法解決的問題,滿足人們新的需求,開拓新的世界。所以親愛的程序員們,別再為自己不懂很多數(shù)學(xué)而煩惱了。數(shù)學(xué)并不能幫助你寫出好的程序,然而能寫出好程序的人,卻能更好的理解數(shù)學(xué)。我建議你們先學(xué)編程,再去看數(shù)學(xué)。

責(zé)任編輯:倪明
相關(guān)推薦

2017-03-27 08:36:08

2010-10-25 17:33:35

Oracle數(shù)學(xué)函數(shù)

2012-07-27 09:25:40

2018-11-14 13:59:53

數(shù)據(jù)科學(xué)數(shù)據(jù)集數(shù)據(jù)科學(xué)項(xiàng)目

2017-12-14 10:25:32

2023-01-10 16:08:04

人工智能擴(kuò)散模型

2013-06-27 09:31:37

聲明式編程命令式編程編程

2023-02-08 17:04:14

Python計(jì)算庫數(shù)學(xué)函數(shù)

2023-07-10 09:23:31

2024-09-23 08:30:00

AI模型

2014-06-19 14:14:35

機(jī)器學(xué)習(xí)

2009-08-06 10:58:55

jQuery和XAML

2009-07-03 14:31:51

2011-07-18 15:32:14

iPhone 錄音 播放

2014-03-03 09:48:55

SSHTmux

2012-01-17 13:53:16

JavaSwing

2012-03-30 15:49:26

ibmdw

2014-03-06 09:43:54

代碼編程習(xí)慣

2024-04-24 10:57:54

Golang編程

2023-05-24 09:31:51

CGo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 草久在线视频 | 在线国产一区二区 | 久久综合久色欧美综合狠狠 | 国产一区在线免费 | 特级黄色毛片 | 在线精品一区二区 | 国产国产精品久久久久 | 日韩成人高清 | 97av视频 | 久久国产美女视频 | 7777在线视频 | 在线观看视频中文字幕 | 最近中文字幕第一页 | 欧美日韩高清在线一区 | 精品国产一区二区三区久久狼黑人 | 国产成人久久精品 | 精品一区二区三区在线观看国产 | 91社区视频 | a视频在线观看 | 午夜精品久久久 | 在线观看免费黄色片 | 亚洲国产中文在线 | 国产精品精品久久久 | 黄色成人免费看 | 久久69精品久久久久久久电影好 | www.亚洲一区| 欧美亚洲国产一区二区三区 | 国产欧美一区二区三区在线看蜜臀 | 一级做a| 免费视频99| 91精品国产91久久久久游泳池 | 男人天堂网址 | 免费午夜视频在线观看 | 久久国产欧美日韩精品 | yiren22综合网成人 | 中文字幕av网站 | av在线一区二区三区 | 一级全黄视频 | 欧美成人h版在线观看 | 奇米久久| 欧美一区不卡 |