-
1 # 許興華數學
-
2 # ACMEGEN
1.完全不需要...一丁點兒用沒有...頂尖程式設計師就是系統架構師和系統分析師...你可以看看相關的書籍...一個積分號都找不到.........
2.你可能會問那演算法工程師和資料分析師呢...人家一巴掌呼你臉上...你才是程式設計師...你全家都是程式設計師...
3.資料分析師不用說了...那是統計學的內容...演算法工程師真有用高數的...但那是行業內的lowB...因為他只懂高數了...人理解高數費勁...計算機理解高數更費勁...這能寫出什麼好演算法?比如判斷一個32位數是正是負...用數學的方法判斷?基本的畫線畫圓都是儘量禁用乘除的...何況高數...各種演算法鮮有用高數的...包括抄的火熱的人工智慧...但高數是證明演算法收斂有效的論文體現...你要沒有看論文、寫論文需求...完全可以不學...
4.但這不是你可以不學高數的理由...對於一個演算法工程師來說...你接觸的一定都是你不會的...你碰到的都需要你現學...你的學習能力要求很強...也就是說你至少得能做到一天不去上課...考高數前看一個小時書就能及格...否則這個職位對你太累...
-
3 # 任性的麻雀
首先,我認為並不存在純粹的頂尖程式設計師!程式設計是極其簡單的事情,程式只是工具,目的是解決實際問題,對研究物件要有深刻的理解。
其次,要成為行業專家,並不侷限於高等數學。比如研究自然語言處理,不但要有一定的數學能力,還必須具備足夠的語言能力。
-
4 # 桌布小乖
現在每所大學,凡是軟體工程專業的課必開設高等數學的課程,像線性代數離散數學這些都是必須的。我想說的是,頂尖程式設計師,更重要的在於其邏輯思維能力,要是我們立志做一名程式設計師,數學思維要有,重要的就是形成這種思維方式啊!要不怎麼寫程式呢?
-
5 # 絕痕灬
其實在我看來,要學,但不是必須學,如果想往更深層次的開發,那肯定是要學的,如果僅僅是普通的軟體開發,是沒有太大必要的,畢竟程式語言已經將很多計算過程包裝好了,大多數的時候呼叫下函式即可,舉個比較鮮明的例子,普通的軟體開發就像你需要得到2這個數字,你知道1+1可以等於2,3-1可以等於2等等,但是你不知道為什麼1+1等於2,就像呼叫函式一樣,你知道這麼個結果,但是底層的計算過程你卻不知道,因為大部分的軟體開發,這些已經足夠用了。
所以我覺得,可以學,但不是必須學,根據自己情況而定,主要還是現在很多程式設計師到後期並不是一定需要往高深層次去的,轉型成公司管理的也不在少數,所以我覺得根據自身的情況決定。
-
6 # 超級數學建模
首先宣告一個,數學好並不代表你就能成為頂尖的程式設計師,但數學不好可能會影響你成為一個優秀的程式設計師。
那我就簡單地舉一下例子吧,不知道大家有沒有接觸過Project Euler。
Project Euler是一個具有挑戰性的不僅僅需要具備數學能力的“數學/計算機程式設計”問題集合。數學方面的知識可以幫助你獲得優雅而高效的解決方案,與此同時,計算機應用和程式設計技巧也不可或缺。有一次,我從Project Euler找到一個問題,透過正常的演算法模型,解決這個問題,需要執行六個小時才可以。而就在程式碼執行的過程中,我重新分析了這個問題,發現這個問題中數字間似乎存在一點關係,而這個時候加減乘除似乎並不太夠用,開始嘗試用二分法去解決。我再次執行,這次得到僅消耗了 6分鐘。而這與最開始使用的演算法模型的效率有了天差地別。
從360分鐘到6分鐘實現了效率60倍的提升,這效率值槓槓的。你想想,如果一個系統輸出結果要等6個小時,卻因為你的最佳化,6分鐘就搞定了,老闆還不給你發一個大大的雞腿嗎?
60倍的效率提升,感覺還可以做得更好些。再次回到數字中去,數字又重新跟我招手,而我也發現了另外一種沒有見過的模式,而這一次解決這個問題只需要花1分鐘。
是的,沒錯,透過數學把問題解答從360分鐘最佳化到1分鐘。
而我也嘗試僅從程式設計層面和並行去暴力最佳化程式碼,確實讓整體的執行效果提升了,但是依然沒有辦法使之少於1分鐘。而這就是數學隱藏的能力。
-
7 # IT168企業級
很多高校的計算機專業都會開設高等數學課程,這足以說明高等數學的重要性了吧!且不說程式設計中會應用到很多函式知識,高等數學的學習本身也是一個鍛鍊邏輯思維的過程。對程式設計師而言,邏輯思維是編碼過程中必不可少的,程式碼缺乏邏輯性極易出現bug,並且維護的成本也非常高。頂尖程式設計師的邏輯性一定是相當強悍的,不一定看高等數學,但只會比這更高階。
回覆列表
是的,筆者認為:要想成為一名頂尖的程式設計師,學習高等數學是必不可少的。
下面筆者從網路上整理出一篇文章,供需要的讀者參考。
本篇文章是作者多年來的一些感受,主要寫給那些想學習程式設計而又很迷惘的朋友,希望可以帶來一點幫助。 我第一次接觸電腦是在小學二年級的時候。那時純粹是因為喜歡打電子遊戲,聽別人說電腦上的遊戲十分好玩,於是就漫漫開始與之接觸了。在三年級時父母出於我對計算機濃厚的興趣送我去了一個BASIC程式設計學習班,從那時起我才真正開始走上程式設計這條不歸之路。雖然說現在程式設計這門專業在社會上很熱,競爭十分激烈,但是這只是學習程式設計的人比較多而已。真正能夠掌握以至於精通的人實際上很少,畢竟中國的軟體業才剛剛起步不久。現在社會對優秀的程式設計人員的需求量還是相當大的,但是前提是必須要優秀。我自己雖然也談不上優秀,但多少還是有些感觸。
在這裡想講述自己對於一般程式設計師和優秀程式設計師之間在技術上的一些認識(什麼敬業精神生活態度我就不多說了): 首先作為一個優秀的程式設計師,數學是十分重要的。數學是自然科學的基礎,計算機科學實際上是數學的一個分支。數學主要能讓人懂得一種分析問題的方法,然後再透過程式設計去實現它。計算機內部的許多原理也都牽涉到比較複雜的數學知識。它是我們用來解決現實問題的最高效的工具。很多學習程式設計的朋友對數學覺得不屑一顧,覺得對於程式設計沒有什麼關係。實際上優秀程式設計師和一般程式設計師拉開檔次很大一個程度上就是取決於對數學的能力。一些專案有時需要很複雜的數學建模和利用數學對於系統效率進行分析,而這些專案對於一般的程式設計師是很困難的。正確應用數學知識有時候能使你的程式的效率產生質的飛躍。現在的程式設計師在數學上普遍是薄弱環節,這點是大家應該引起足夠重視的。當別人對於這些專案感到無從下手,而你卻能夠完成,這個時候你的價值也就表現出來了。真正優秀的程式設計師是能夠最基本的一點就是要能夠透過自己的知識來解決一般程式設計師所無法完成的問題。而數學能力就是一個很重要的環節。
其次就是要對資料結構引起足夠的重視。如果說計算機專業的學生與非計算機專業的最根本的差別絕對是資料結構(數學大家都一樣學了,主要看你自己學得好壞)。對資料結構的掌握與運用能力是衡量你程式設計能力的一個很重要的指標。有的人對於看了連結串列,棧,樹,廣義表這些東西就頭痛。然而這些東西往往能使你的程式的效率比別人高出百倍。由於一直搞資訊學競賽,到了大學又搞ACM,所以我對數學和資料結構都掌握得相對較好。這使我在應聘與工作中明顯感到勝人一酬。記得自己大學時去一家公司應聘的經歷,當時去應憑的還有3個人,有2個大學畢業,有個也工作了一段時間了。他們幾個都在大講自己的能力如何之強,會使用的語言及程式設計工具如何之多,經驗如何之豐富。按理說我應該是資質最淺的。當時也是初生牛X不怕虎,也就硬著頭皮去了。當時面試的題目是一個公司的資金管理專案的一個問題,要求每個人都在思考後給出自己的設計方案。其中比較核心的一個問題就是要計算一個資金最小波動值的問題,給出的資料量相當大,對效率要求很高。
對於整個程式的面向物件化的分析我們幾個都是差不多的,畢竟這些東西在學校裡是很重視的,而且不是真正的難點。然而到了最關鍵的問題時其餘的人都卡殼了,有兩個是用簡單的雙重迴圈,時間複雜度(N^2),慘不忍睹。還有一個在冥思苦想了好一陣以後說用樹,具體技術細節又講不清楚,效率分析也很馬虎。只有我當時很快就給出了採取AVL樹的方案,並且利用高等數學推導作出了很詳細的效率分析和時空換算,並提出了引入彙編的方法。很自然的我得到了這分工作。在這裡大家顯然可以看到數學和資料結構對於一個優秀程式設計師是多麼重要,它們是和一般的程式設計師開啟檔次的最關鍵的地方。這樣向“棗子”碰到的那種情況應該很輕鬆的就可以想到。
如果你是一位想學習程式設計的朋友,我經過多年的學習總結出來了一個學習的線路希望對你有所幫助。要學習程式設計是要有很大恆心和毅力的,首先你要明確自己的目標,想好自己程式設計是為了幹什麼。如果你學習僅僅只是一時想編出QUAKE和成為比爾蓋次的衝動,那麼我勸你還是應該還是不要開始學習,應為這樣的目標很難支援你日後大量的學習。而且你的年齡不能太大(最好是中學或者大學生)。如果你想好目標並決定開始奮鬥,那就讓我們開始吧。如果你一開始對電腦一無所知,那麼你應該先熟悉一些電腦的一些最基本的原理和操作,這個不需要特別細緻的學習,只要大概知道二進位制和一些基本操作就可以了。接下來你應該先學習BASIC語言,這個語言並不會耽誤你太多的時間,學習它完全是為了入門,讓你對電腦程式設計有一個比較初步的認識。這時候你應該多編一些小的程式,知道一些最基本每條語句的功能,搞清楚一些基本的資料結構(尤其是陣列)對於一些其餘用途的函式最好不要做任何學習,因為這樣只會分散你的注意力。當你能夠可以熟練的運用BASIC編出猴子選大王,以及電腦出題考試之類的程式時,你就可以開始後面的學習了。接下來如果覺得自己接受能力強的話就可以開始學C了(注意不是C++),如果感覺有困難也可以先學Pascal過度一下。還有很重要的一點就是千萬不要一開始就學VB,DELPHI,VC之類的東西,這些東西在一開始學會對你造成很壞的影響。有可能會把你引入另外一個錯誤的學習方向而忽略了真正應該掌握的東西。學C主要是學過程話的程式設計,學會把自己的程式分成許多的函式(或過程),養成良好的程式設計習慣。這時可以多看一下高人的程式,不一定要懂意思,主要是學會別人程式的格式(比如變數如何起名,怎麼劃分函式)。
除了掌握基本的控制流語句外,應該學習一些很簡單的I/O函式和數學函式。C的學習主要是你捨棄原來BASIC程式那種把所有語句積成一大堆的風格,要學會使用函式,提高程式碼重用性。對於指標之類的東西如果實在看不懂可以先不去管,到後面會有辦法。當你能夠比較自如的用C編寫一些小的計算程式時,你就可以開始你的資料結構的學習了(數學的學習主要是在學校,自己要多用心)。資料結構你可以一點一點漫漫看,並不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學會用資料結構的知識來規範自己的程式設計和提高程式的效率。學完C我認為接著最好學習彙編。這個或許有許多人都會反對,然而我個人認為這樣是很好的。從最基本的DOS彙編開始,買本《IBM PC彙編程式設計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反覆的嚴讀是一定可以看懂的。彙編是一定要掌握的,因為它涉及到很多最基本的知識。掌握了彙編和對I/O有了個很徹底的認識後,應該去學編譯原理。這個東西並不要精通,但是一定要知道,在大腦裡要有一個這樣的概念,這對你對程式語言的控制能力都有很大的幫助。這樣最基本的學習就算完成了。一般智力正常的人前一段東西應該都是可以掌握的。接著後面的學習就要看你自身的造化了。這個時候你應該研究一下資料結構,不要分散自己學習的注意力,要知道資料結構是異常重要的(相信我,絕對沒錯)如果你覺得自己已經對於樹,連表,堆疊之類的東西和排序,遞迴之類的演算法已經十分清楚,就可以開始學習C++了。學習前一定要有個正確的認識,那就是C和C++是兩個不同的東西。學習C++是為了學習面向物件的程式設計,這個時候你對於指標應該也能夠掌握了(有彙編的基礎),主要抓住C++和C相比的一些新特性,對於多型之類的特性要注意理解掌握,如果沒有搞懂就堅決不要往下學習。一些基本的概念掌握以後可以看一些別人設計的程式,學習別人怎麼利用面向物件的方法來設計程式的。這個東西也是人之間拉開檔次的一個環節,可以和資料結構放在同等重要的地位。
我就見過有的人都大學畢業了還搞不懂virtual到底是怎麼一回事情。其實我認為學到這裡你已經為你成為一個優秀的程式設計師打下了很好的基礎,你已經能夠應用C++,懂得面向物件程式設計,對資料結構掌握很好,掌握彙編和編譯原理。接下來的學習就是基於操作平臺的了,一般是先學windows(Microsoft畢竟是老大),先學win32 api,搞請windows基本訊息機制和原理,有彙編基礎基本上不會碰到什麼困難。其實只要會了API,其餘什麼MFC,VCL都是囊中之物了,都不過是對於API的封裝而已。VC,C++Builder都可輕鬆拿下,這只是開發工具的問題。以後的OLE(ActiveX),.NET,資料庫就要看自己的發展方向而定了。我在這裡強調的是前面的基本能力的學習,後面操作平臺雖然知識體系龐大,然而畢竟比較死,更好掌握。最後程式設計能力的高低主要還是有以下幾點決定:1.程式設計的習慣 。2.數學能力(包括邏輯思維,分析問題的能力) 。3.對資料結構的認識能力 。4.經驗的多少(包括多使用語言的掌握能力) 以上只是本人一些愚見,希望大家指出不正確的地方並與我多多交流。