在這一年裡,我打造了一個可以通過手機和電腦進行對話的 AI 系統。它能夠控制我家裡的燈光、溫度、電器、音樂和安防系統,而且這個 AI 還能了解我的品味和習慣,可以學習新的辭彙和概念,甚至可以逗我的女兒 Max 開心。Jarvis 是由 Python、PHP 和 Objective-C 編寫的,運用了包括自然語言處理、語音識別、面部識別以及強化學習在內的人工智慧技術。
需要五年這麼久的時間嗎?依我個人的經歷,恐怕更長也說不定。無論程序員也好,軟體工程師也罷,叫著簡單,領域知識卻是浩如煙海。進入現代網際網路階段,程序員的領域細分到了令人髮指的程度,比如 XX 語言工程師,前端工程師,後端工程師,架構師,大數據工程師,安全工程師,運維工程師,移動開發工程師,DBA 等等,叫法繁複,甚至職能重疊,這些角色最初都叫做程序員,最終他們像一棵大樹,枝條粗壯,蜿蜒生長,然後在樹冠分開,並結出了各種各樣的果實。同時,每個細分的領域又會衍生出浩瀚的領域知識。
比如編程語言,常用的編程語言就有幾十種,靜態語言,動態語言,腳本語言,函數式編程,面向對象編程,過程式編程等等,從平台角度,Java VM 上有 Java,Scala,Groovy,Clojure,Jython,Ceylon 等,.Net 平台上有 C#,J#,F#,VB.Net,VC#,ASP.Net,移動平台有 iOS,Android,Windows Phone……
程序員一看就是個很專業的工種,但是正如前面所述,這個領域的技術用浩如煙海來形容豪不為過,我們窮盡一生也無法掌握其萬分之一。人們常說先做專才,再做通才,也就是所謂的 T 字型人才,既有某個領域的專業知識,同時知識技能廣泛,為人處世,大開大合。古代開國皇帝大抵都是這種,雄才大略又武藝高強,上馬砍人,下馬治國,一通百通。