昨天有網(wǎng)友問我,他原先沒有學(xué)過奧數(shù),問能不能當(dāng)系統(tǒng)架構(gòu)師?其他也有人有疑問,是不是應(yīng)該先學(xué)數(shù)學(xué),然后在考研的時候轉(zhuǎn)入計算機?
我先說一下結(jié)論,沒有學(xué)過奧數(shù),完全可以當(dāng)系統(tǒng)架構(gòu)師。如果真的喜歡數(shù)學(xué),可以先學(xué)數(shù)學(xué)再轉(zhuǎn)計算機;如果數(shù)學(xué)一般般,不如直接讀計算機。當(dāng)架構(gòu)師,學(xué)數(shù)學(xué)并不是必須的。
數(shù)學(xué)是重要的
確實,數(shù)學(xué)是計算機的基礎(chǔ)之一。計算機的先驅(qū),圖靈就是一位數(shù)學(xué)家。我們?nèi)绻磮D靈獎,也就是計算機領(lǐng)域內(nèi)的最高科技獎,計算機界的諾貝爾獎,很多獲獎?wù)叨加袛?shù)學(xué)背景。
比如,第一屆圖靈獎得主,艾倫佩利是計算機程序語言的先驅(qū)。他本科學(xué)的是化學(xué),碩士和博士是數(shù)學(xué)?梢哉f,有了數(shù)學(xué)家的參與,我們的程序語言才這么嚴(yán)謹(jǐn)、科學(xué)。
兩位得圖靈獎的女科學(xué)家,朗西絲阿倫,2006年的得主,她是數(shù)學(xué)系畢業(yè)的。還有2008年得主,芭芭拉利斯科夫也是數(shù)學(xué)專業(yè)的畢業(yè)生。
原先北大在計算機方面有位院士,王選,他的研究生很多都來自于數(shù)學(xué)系,覺得搞數(shù)學(xué)的人搞計算機靈,好。
因此,學(xué)數(shù)學(xué)再去研究計算機,那當(dāng)然很好,算是降維打擊。
不過,這并不是必須的。
IT公司的首席架構(gòu)師并不必須要數(shù)學(xué)
我們看看國內(nèi)幾家著名IT企業(yè)的系統(tǒng)架構(gòu)師,或者CTO的履歷。
阿里巴巴的王堅。王堅是整個IT企業(yè)的第一人,被評上了工程院院士。要知道,百度的李彥宏以技術(shù)出名,也沒有評上,可見王堅的水平是很不錯的。
王堅是阿里巴巴的首席架構(gòu)師,阿里巴巴整個集團的首席技術(shù)官,阿里云的總裁。云技術(shù)是我們快捷、便宜、大規(guī)模使用互聯(lián)網(wǎng)的一個非常重要的支撐力量。像亞馬遜老板貝佐斯當(dāng)世界首富,核心競爭力是亞馬遜云。而阿里云是可以跟它相競爭的,所以技術(shù)含量也很高。
那王堅是什么出身呢?王堅是學(xué)心理學(xué)的,在跳槽去互聯(lián)網(wǎng)公司之前,是杭州大學(xué)心理學(xué)系主任,心理學(xué)教授。不過有些心理學(xué)系對數(shù)學(xué)要求也是比較高的,但再怎么高,也就是一兩門數(shù)學(xué)課,不需要跟數(shù)學(xué)專業(yè)一樣學(xué)。
李彥宏做的是搜索,應(yīng)該說數(shù)學(xué)含量非常高了。不過李彥宏在北大學(xué)的是圖書情報專業(yè),好聽點的說法是信息管理系統(tǒng),到了美國,轉(zhuǎn)了計算機專業(yè)。
微信創(chuàng)始人張小龍,是華科大的電子信息專業(yè)畢業(yè)的。
快手的創(chuàng)始人宿華和程一笑,分別畢業(yè)于清華大學(xué)和東北大學(xué)的軟件工程。
這些技術(shù)巨佬們的簡歷上都沒有太多的數(shù)學(xué)背景,不過,普通人干嘛非要學(xué)數(shù)學(xué)之后再來學(xué)計算機呢?
系統(tǒng)架構(gòu)師的工作
先說一下系統(tǒng)架構(gòu)的定義,這是IEEE給出的:
軟件系統(tǒng)架構(gòu)是根據(jù)具有參考意義的實踐而定義出來的.主要表述了一個系統(tǒng)的基本組織結(jié)構(gòu)、基本組成構(gòu)件和相互的關(guān)系,以及構(gòu)件于外部環(huán)境間的關(guān)系。同時,軟件系統(tǒng)架構(gòu)為后續(xù)的設(shè)計和架構(gòu)演化提供了指導(dǎo)性原則。
這句話很拗口,我稍微解釋幾句。里面的幾個關(guān)鍵點:系統(tǒng)、構(gòu)件、環(huán)境、相互關(guān)系。單個小東西叫構(gòu)件,這些聯(lián)系起來叫系統(tǒng)。系統(tǒng)內(nèi)部的構(gòu)件之間有各種關(guān)系,也就是各種規(guī)則。系統(tǒng)跟環(huán)境還有交互功能。
這個跟建一個大樓差不多,巨大的軟件可能跟建設(shè)一個建筑群差不多。大樓內(nèi)部需要力學(xué)知識,對軟件來說,需要數(shù)學(xué)知識。大樓的功能、外部表現(xiàn)需要美學(xué)、心理學(xué)、文化、社會學(xué)等知識。軟件的功能也是這樣。
所以,作為一位建筑師需要學(xué)一點力學(xué)知識,但并不需要使勁學(xué)力學(xué),把力學(xué)擺在至高無上的地位。架構(gòu)師也是這樣,有數(shù)學(xué)知識,當(dāng)然非常好,但平常計算機專業(yè)的那些數(shù)學(xué)知識也是基本夠用的,大家不要過于害怕。
算法工程師和人工智能工程師
類似的,我再講一下算法工程師和人工智能方面的研發(fā)人員。
在計算機的早期是沒有算法工程師的,因為在編程的時候必須要考慮算法的實現(xiàn),現(xiàn)在的開發(fā)軟件做得很好,所以普通級別的碼農(nóng)的要求比早期的碼農(nóng)低了不少,不需要自己來編寫這些算法,用現(xiàn)成的模塊,調(diào)個參數(shù)就可以了。
算法工程師聽著好像都是數(shù)學(xué),其實根本來說,就是線性代數(shù)、概率論、數(shù)據(jù)結(jié)構(gòu)這些內(nèi)容。現(xiàn)在機器學(xué)習(xí)方面的比較多,機器學(xué)習(xí)的基礎(chǔ)是統(tǒng)計、向量機、人工神經(jīng)網(wǎng)絡(luò)理論。
在機器學(xué)習(xí)上面的是人工智能。人工智能比機器學(xué)習(xí)的范圍更寬,至少要包括語音識別、圖像識別、模式識別等,這些涉及的數(shù)學(xué)不單單是離散數(shù)學(xué),還包括了連續(xù)數(shù)學(xué)。
人工智能的數(shù)學(xué)要求看著更高,不過大家也不要害怕。我們可以看看華為的天才少年計劃里的那些天才少年們。他們大部分都是搞人工智能,但基本沒有數(shù)學(xué)系畢業(yè)的,基本都是計算機系、自動化系等方向。
像第二批名單中的華科大博士張霽,本科在二本,武昌理工學(xué)院,碩士在武漢郵電研究所,博士在中科大,一直是計算機專業(yè)。
所以,如果大家想要做計算機方面的工作,直接讀計算機專業(yè)毫無問題,最直接、最省事的方法。讀了數(shù)學(xué)轉(zhuǎn)計算機,當(dāng)然更好,也許會更有后勁,對某些問題的理解更深刻一些。