1-10 轉CS的優勢之一:前置條件少
前面講了很多大方向的問題,這裡開始說細節。改行改行,「改」字是關鍵。「理想狀況下」,任何行業都可以改,為什麼唯獨CS最適合呢?
重要的一點,是其前置條件少,也就是所需要的知識和課程較少。這也是為什麼改行CS優於改行學醫的關鍵一點。
假設改行學醫,那麼需要補大量的課程,這些課程本身的數量、時間、難度和花費,往往就Mission impossible了。
假設改行學EE,那麼需要很多課程,什麼電磁場、電路之類的(我不懂,大多道聽途說)。這些前置條件不僅僅大大增加了時間和金錢的消耗,還增加了入行的難度,對實際工作的作用則是令人懷疑的。
令人驚訝的,出路明顯好於EE的CS,前置課程卻遠遠少於EE:不需要高深的數學基礎、不需要統計基礎、不需要物理基礎、不需要計算機的基本原理。
有些人認為計算機需要以數學或物理為基礎,以理解其硬體實現和演算法應用,我個人認為是錯誤的。計算機的出現、發展的確與數學、物理以及相關理論、實際問題(如為了處理巨大的工程計算量)高度相關,但計算機在發明70年以後、CS高度成長後,CS已經完全獨立,絕大多數CS的知識和內容是獨立於物理硬體、數學理論的,自成一體,趨於完善。
這正如:在當代,學天文學,不必每晚都起來看星星;學地理學,不必從野外探險開始。
當然,很多CS高深的理論必然還跟數學相關很大,但這並不是改行者現在所需要擔憂的;用到數學較多的Big』O概念在演算法問題中也不算很難,完全沒必要專門學任何數學知識,包括離散數學等。
科班出身的CS人很可能不同意我所說的,認為我不懂且基礎薄弱,所以刻意貶低這些理論基礎。但我個人認為,在改行這個問題上,由於資源嚴重有限,改行者是沒有其他選擇的。
所以,CS的數學基礎,有人開玩笑說,其實就是會數數,能數清有幾個括弧的行了。這樣雖然有點誇張,但卻自有幾分道理。
其它方面,CS也沒有什麼入學的前置條件,肯定是編程經驗、編程課程作為前置條件最寶貴最有效,但不是100%必須。
我個人認為,這是因為CS是一門獨特的學科、革命性的學科,類似於歷史上科學方法(Scientific Method)的出現,是一種對世界的高度抽象,是一種方法、一種工具以及新的思潮,更是未來學科的基礎——比如科學方法導致了物理、化學等學科的出現。但科學方法本身,是沒什麼前置學科的,因為它是創新,反而是很多學科的前置條件。
那麼可以大膽假設:用機器來計算,以最簡單的0和1、模塊化來實現近乎無限制的迭代和封裝,來精確表達複雜的世界,就是CS 的本質和思路。它沒有前置條件、憑空而來,反而是人工智慧、軟體工程、大數據、機器學習等很多學科的前置條件——假設未來50年後,這些學科因CS過於興盛和細化而逐漸獨立和分家。
對於改行者來說,不應該糾結於前置條件,而應該快速正式開始CS的學習,直接奔向主題,此為上策。如果考慮前置條件,只有一個意義:如何入學,拿到錄取。
推薦閱讀:
※CS:APP Lab 2 - Bomb Lab - 帶彩蛋
※開始寫點什麼
※愚人節,說說假新聞和謠言,它們傳播得比真相更快
※如何使用一套鍵盤滑鼠,同時控制幾台電腦?
※浙江大學-數據結構-應用實例:最大子列和問題-1.3