因為編程有的時候不是拿現成的API就可以編出來的,有的時候必須自己造些輪子,一旦涉及到輪子,演算法就是必須要涉及的了。而你了解一些演算法知識的話,造輪子的時候你可以正確的描述你的需求,上網搜代碼的話也可以更好的找到現成的方法。其實有很多時候,只要我們能夠正確的描述問題,上 stackoverflow 或者其他地方是很容易搜到代碼的,未必需要我們手寫。如果只是簡單的搜索你的需求往往很難找到解決方案。
Ⅱ 當一個程序員需要多好的數學
任何面向工作的功利的學習行為都可以視為一種投資,必須考慮成本和收益的tradeoff;總體來看,個人認為計算機系本科不教的數學對於絕大多數程序員來說都是沒有必要熟練掌握的數學。
數學不包括演算法。演算法一直是屬於計算機科學領域的。數據結構演算法能力是程序員的核心能力之一,而且永不過時。
當程序員做開發工作,有些方向不太需要數學,有些方向需要特定類型的數學(比如游戲開發、圖形學會用到大量數值工具等);解決特定問題需要學習特定類型的數學;專門做特定領域的計算機科學研究需要用到大量特定領域的數學;既然如此,那就在碰到相應問題的需求去學習對應的知識就好了,沒有必要非要計較到底哪個重要(前提是你應當知道你這個方向需要什麼樣的知識),也沒有必要僅僅是為了提高「數學基礎」而盲目不加選擇的去學習所有種類的數學。
Ⅲ 為什麼有些工作可以用編程實現
有些工作可以用編程實現的原因如下:
1、不是每個程序員都需要搞演算法的。大部分程序員不用搞演算法。可能面試時會有比較簡單的演算法作為面試題。
2、不是每個程序員都要搞人工智慧的。門檻沒那麼高。
3、編程是個實踐課。並且不需要你記憶多好。本身網上有很多程序員自嘲,復制粘貼一把梭。就你對不懂的知識邊搜邊學邊寫代碼很正常。如果你剛開始搞程序員,肯定有很多東西邊查邊寫的,搞不定的也可以請教老程序員。等你有一定經驗後,就會查的少了,簡單的你都會了,天天吃飯的本事,形成了肌肉記憶,就算記憶力再差,也沒關系。而且計算機方麵包括很廣,總有你不知道或者某些東西時間長不用記的模糊了,再搜下就知道了。而且程序員主要的也是看能力,經驗豐富的是隨著時間增長的,而能力或天賦是在撐握基本的工具和知識後一直伴隨你一生的,是解決問題的關鍵,這個跟記億力好壞沒關系,即使你是最強大腦。所以你可以有意識鍛煉或培養自己的能力,但天賦應該鍛煉不了。但如果你在干過幾年之後,你發現自己有一定的天賦,你不鍛煉或培養,是不是也會泯然眾人。至於你問為什麼這么多人可以做程序員?那肯定是大部人是沒有天賦的,只是把程序員作為一個賺錢的工具,作為一個職業。那如果一開始作為一個職業的門檻,你都幹不了,那要看你是否適合干這個職業了。另外我文中提到的搞個幾年後會如何。我之所以這樣說,我是這樣認為的:因為我們剛開始接觸一門語言,調用api不熟,而且程序員是不斷在解決問題,是一個不斷重復先痛苦後輕松的過程。幾年的時間甚至更長,了解更多的知識面,還有了解更多的語言,從表面的語法到事物的本質,理解的更為深刻。這時候你是否會明悟一些東西,如程序有問題你很容易想到是什麼原因導致的,光看代碼就會發現代碼哪裡有問題。再往上設計或創造個新語言、新框架、新插件、甚至新的操作系統,或者想出個好的IDEA寫個很牛逼的東西。我所理解的能力和天賦,不是停留在表面上的如我來自某個牛逼大學,我年輕,我學某個語言很快等等。我覺得程序員到某個階段時,一個新的語言學起來不難,只是熟練度的問題。尤其熟練兩門不同語法系的語言後,學第三門語言會感覺很輕松。不同語言學習曲線不同,如golang跟rust的入門門檻是完全不同的,golang簡潔強大易上手,而rust雖然更強大更安全,但語法及設計理念如借用等好多概念,導致開始入坑者要學習理解很多東西,編碼也很不習慣。