標籤:

編程 和 數學 的關係是什麼?

學到了循環while和for 用while畫個菱形畫了2天,頭都快暈了。找不到規律和技巧,這可腫么辦呢?預習了函數和遞歸大腦已經虛脫了。

準備買本 《黑客與畫家》和《怎樣解題》補充一下。(本人在學習php零基礎 之前沒學過c/c++ )


1. 編程是人人都可以學會的。我教過很多文科生,畢業後一樣可以從事軟體開發工作

編程就是你讓電腦幫你做事, 用它能懂的語言。

只要你會使喚別人,理論上就能學會編程。很多人覺得編程難,只是沒遇到好的領路人罷了。

2. 程序員分為基礎程序員和應用程序員。

基礎程序員主要做框架或SDK,應用程序員就是使用SDK和框架開發應用的程序員。

國內大部分是後者,高中數學基礎就夠了。前者也不是都需要數學理論水平很高,只限定某些領域比如搜索、科學實驗等。

3. 有這個疑問的主要是被很多大學老師或被這些不懂編程的老師誤導了,他們經常說的謬論之一就是學好編程要學好數學。


你去看看演算法導論,很多演算法需要數學證明可行性。有些時候編程寫實現必須要有數學基礎,特別是關於圖像或者遊戲,自己下來推導數學公式。


Zed Shaw 演講時候曾說, canvas 連個畫圓圈的 API 都不提供, F**k ...

編程語言也算人機交互重要的介面, 被代碼刁難就像被說話給刁難,

樓主放棄用 for/while 徒手畫圖形吧, 那不是應該有的編程方式,, 除非任務真有這種必要.

編程粗略得說是一群數學家設想用計算解決世界上所有問題, 結果帶來的工具,

編程語言理論那兒會有相當多數學和編程交織的內容, 推薦看王垠大大的博客,

http://blog.sina.com.cn/s/articlelist_1569777711_0_1.html

具體我不太熟, 樓主可以看文章了相關更多內容. 還有等待高人回答..

或者如果樓主只是對編程的難度感到疑惑的話, 建議瀏覽相關話題.

http://www.zhihu.com/question/20298345

作為類似的新手, 我還是覺得 PHP 不是一門好的入門語言, 使用環境太特殊了.

動態語言的選擇還有很多, Python, JS 未必不能入門, 看情況咯..

還有, 樓主畫圖是用什麼畫的? 好奇, 真的..


買本《數學之美》看吧


為什麼「言編程必言數學「呢?

一般的程序員達不到大師級那麼高的造詣,一般的編程也不需要太多的數學知識。

掌握好常用的數據結構,熟悉一些常用的演算法一般就能滿足編程的需要。

我個人非常認同一句話:好程序不是編出來,是不斷重構出來的。

先入門,再慢慢精通吧。

看完《黑客與畫家》這本書,解決不了你的問題。


你所用的幾乎每一個軟體產品背後都有很深的數學演算法為基礎。仔細想想吧,你用某api畫了一個圖形,你說沒用到數學啊,api一調圖形就出來了。那你再想想這個api哪來的,這個api用到數學沒有。如果不調api你能通過給像素著色的方式畫出幾何圖形嗎,比如畫一個橢圓並填充顏色。不斷深入下去你會發現,總有底層的編碼是需要數學的。你只不過用了別人的成果而已,你不需要了解具體數學實現並不代表你完成的功能里沒有數學,你調了別人的演算法成果而已


雖然題目問的是編程和數學的關係,但是你碰到的幾個問題跟數學關係不大,而是跟邏輯和熟練度有關的,《黑客與畫家》這本書裡面也沒有和數學相關的內容。

計算機最開始是為了解決數學問題的數值計算而研製的,最早的編程語言如FORTRAN也是為了解決數學問題的。

數學是科學的皇后,同樣計算機的運算模型是離不開數學的,沒有數學的發展作為基礎,就沒有現代的計算機技術。

數學和計算機是相互影響的, 計算機中的計算原理處處都包含著數學思想,同樣計算機的高速運算能力也大大地推動了數學的發展。

編程實際上是求解某個問題的過程,這個過程也可看做是設計演算法到實現演算法的過程,因此可以看出編程離不開數學原理的支持,沒有良好的數學思維就很難編寫出高質量的程序。

有道是,對於好的程序員來說,數學不重要,但如果你想成為偉大的程序員的話,那麼數學很重要。


關係是這樣的,

如果你對數學有興趣,那麼編程是一種有意思的事,同樣有趣,同樣有條理,同樣邏輯嚴密。而且同樣還有挑戰性和創造性。

如果你對數學沒有興趣,那麼你就沒法立刻發現編程的樂趣。

換句話說,一個不喜歡思考和計算的人,從事高強度腦力勞動,會不適應的。


數學是一切科學的基礎,沒有數學就不會有其他科學。


因為只有把現實世界抽象成數學模型,然後推導出演算法,有演算法就可以寫代碼了。


數學這東西,面試的時候會用到一點,比如考你個這演算法,那演算法,但實際上真正如果用到某演算法還是google一下別人的成果比較靠譜,否則你就自己研究吧,直到老闆對你的效率產生嚴重的懷疑為止。

學編程,個人素質,經驗,對新技術的興趣,代碼習慣,以及公司同事的整體素質很重要。我嚼的一個編程人員的綜合素質等於上面各項乘積(各有加權)。

我的乘積很小,小到連自稱IT民工都不太好意思。


要讓電腦畫菱形,你得自己會畫菱形。

菱形的定義是什麼,怎麼樣的圖形叫菱形。你的問題不在於是否學會編程,而是這個問題你沒有思路,而不是不會編程


數學和編程


ruby是一種不錯的語言,但是趕不上python,數學還是應該會的,雖然會費時間,雖然這只是對適合的人來說的,人總是要進步,要進取,就得不斷的挑戰極限,超越自我,如果不在平時進行超越,總有一天會在上面吃虧,不否認數學不好也可以搞好編程,但是想要成為一個厲害人物,還是需要系統深入的學習,向人工智慧,與機器人,還有計算天體以及飛行物體的速度和時間,都需要用到別的學科。一專多能的複合型人才才是人們應該追求的。


這裡討論的還不夠細緻,說碼農用不到數學知識是不公平的,炮兵打鳥也不需要大炮,然而獵槍也是「炮」,其實碼農在不經意間也使用了一些數學知識,具體我無能力一一列舉(我進來也是尋找答案的)。我所指的不夠細緻是指,什麼是數學?數學的階段性知識點是什麼?而計算機哪個領域或者哪個技術點用到了哪些數學知識點。


做了6年互聯網相關開發,現在自己在研究硬體(飛行控制系統),發現只有在實際物理應用的時候,編程才會涉及大量數學


推薦閱讀:

假設每天上知乎八小時,三年後是否會有個嶄新的大腦?
閱讀大量課外書籍能否提高學習成績?
在差學校就應該安於應該安於現狀嗎?
醫學學習過程中好用的口訣有哪些?

TAG:學習 | 編程 |