[視訊]《我的第一本程式設計書》作者平山尚:“非科班”的逆襲(圖靈訪談)
訪談嘉賓:
平山尚
1977年生於北海道,曾在京都大學研究生院工學研究科進行分子生物學的研究,2002進入世嘉株式會社,參與了《電腦戰機》(PS2)、《超級網球大獎賽3》(AC、PS3)、SEGA CARD-GEN MLB(AC)、《超級網球大獎賽4》(PS3、360、Wii、VITA)的開發。他編寫的《遊戲程式設計權威指南》獲得2009年CEDEC最佳著作獎,並被指定為SEGA公司新人培訓教材。
視訊訪談:
訪談內容:
大家好。本期圖靈訪談我們有幸請來了《我的第一本程式設計書》的作者平山尚老師。平山尚老師畢業於京都大學,研究生期間主攻生物學。2002年進入世嘉公司後參與了“電腦戰機”“超級網球大獎賽”等遊戲的開發工作。他的處女作《遊戲程式設計權威指南》在日本廣受好評,被世嘉公司選為新人培訓教材。最近的《我的第一本程式設計書》同樣大獲成功,至今已重印數次。
平山老師,感謝您百忙之中接受採訪。
不用客氣。
平山老師的履歷中寫到,研究生期間主攻的是生物學專業。那麼為什麼會選擇進入遊戲行業呢?
其實是為了逃避生物。我並不擅長生物學的實驗。生物實驗即花費時間,順序又難懂,我有時甚至不理解一些實驗步驟的做法。因為耗時過長,我又心急,所以實驗做的很差。生物學中需要記憶的內容很多,搞不清理由也要死記硬背下去。而且我的英語不好,不善於閱讀論文,更別說是讓我寫了。同時英語交流也不在行,總之不敢再沿著生物學的道路走下去了。於是試著面試了遊戲公司和IBM這樣的企業,正好通過了世嘉的面試,所以就進入遊戲業工作了。
原來這樣。那麼進入公司前有多少程式設計經驗呢?
進入公司前為了處理研究用的資料,或多或少使用過C++和Visual Basic。但在這之前,我已經先拿到了入職許可。從參加面試到拿到入職許可這段時間,我幾乎完全沒有寫過程式碼。僅能用Perl寫個留言板的水平,卻讓我拿到了入職許可。
那麼剛進入公司時一定受了不少苦吧?
不可思議的是,開始程式設計後自然而然就學會了。所以(對於其他人)可能沒有太大的參考價值吧。不過,雖說開始程式設計後自然而然就學會了,但我用在程式設計上的時間絕對不算短。新人培訓結束後會,員工會被分配到各個小組中。從那之後,我每天10點到公司一直呆到深夜1點,每天寫15個小時的程式。中午也幾乎不怎麼休息,可以說15個小時都用來程式設計了。雖然週日休息,但週六也會上班。每週六天,每天寫15個小時程式的話,我想自然也就能學會程式設計了吧。
在學習程式設計的過程中,會用到演算法、資料結構以及相關的數學知識。您怎麼看待它們的重要性以及與程式設計的關係。特別是我經常看到“在工作中很少用到演算法的知識,為什麼面試中還要考呢?”這樣的意見。您對這種觀點有何看法?
這個問題很難回答。因為在工作中是否要用到演算法是因人而異的。需要使用的人當然存在,我就是其中一員。像向量、矩陣、四元數、排序、檢索,等等,我每天都會用到。所以要是問我“為什麼明明不用,卻要學習?”的話,我會回答“不不,要用到的啊”。如果負責“在遊戲中人物怎樣移動比較有趣”“這個道具的出現概率應該是多少”這些內容的話,肯定用不到演算法吧。
所以,不能一概而論。有一點需要補充的是,這種基礎知識有助於鍛鍊大腦。我們在中小學學到的很多內容都是用來鍛鍊大腦的,只有一部分能拿來即用。演算法大概也屬於這一類吧。
無論是在中國還是日本,讓小孩去上鋼琴班、算數班等情況均不罕見,您覺得程式設計教育應該從何時開始呢?此外,怎麼樣才能讓初學者對程式設計產生興趣呢?
我沒有教過對程式設計不感興趣的人,小時候也沒學過程式設計,所以這個問題不好回答。不過,我覺得沒必要過早開始。可以試著把計算機和程式的書籍放到孩子身邊。如果他們自己會去看的話,那會是個很好的契機,我想那個孩子一定會進步得很快。但如果沒有這樣的機會,卻硬要在課堂上教中小學生程式設計,我想結果不會很好。首先老師就很難教好吧。在我看來,會程式設計的人一般來說都會去從事程式設計的工作,而老師們大多不會程式設計。
平山老師可否談談編寫本書的緣由?
最直接的契機就是在九州大學授課的經歷。本來是別人請我的前輩去講,但因為他比較忙,所以前輩就讓我去了。可是那裡的學生大多屬於藝術系,對程式設計並不在行。如此一來,我考慮先做一個半成品,讓他們感受一下製作遊戲的樂趣即可。就像是做菜時只需要把菜切好入鍋,就能做出美味料理的半成品,有點類似於Unity的做法。但是這種方法用的人太多,沒有什麼新意,還不如不使用任何程式語言,讓學生在只有點的狀態下製作出遊戲來。嘗試之後發現效果還不錯。
因此您選擇在書中介紹程式設計師的思考方法,而非實際的解決方案,對嗎?
實際的解決方案多種多樣。不但製作的東西種類多樣,而且遊戲程式設計師與其他行業的程式設計師也完全不同。同時,語言、開發環境、機器均千差萬別。10年前的遊戲和現在的遊戲也不一樣吧。10年前根本想象不出智慧手機上的遊戲是什麼樣子。所以記憶一些庫的用法意義並不是很大。“無論是怎樣的開發環境和程式語言,我都能應付得了”--這樣的狀態才是最好的。為了達到這種“任何情況下我都能編出程式”的狀態,我認為需要學會在沒有任何道具的情境下編寫程式。如果能學會在“只能繪製點”的情況下寫出俄羅斯方塊一般的遊戲,那麼在任何情況下都不會陷入窘境吧?
是的,那可否談談讀者應該如何閱讀本書呢?
按照我編寫本書時的想法,依照順序一邊閱讀,一邊自己編寫程式碼並加以確認是最有效的。不過若是別人讓我來閱讀本書,我肯定不會這麼做。程式設計教科書中,是不是都有許多練習題?我從沒做過。學校裡的教科書亦然。無論是化學、數學還是生物,我都覺得太麻煩。所以我會選擇一直讀下去而不進行練習。像我這樣的人肯定不少,這樣的讀者直接讀下去就好了。等讀完後發現了應該練習一下的部分,再去編寫程式碼,重新確認也是完全可行的。
除本書以外,您的著作《遊戲程式設計權威指南》在日本也博得了很高的人氣與評價,可否告知一下此書的創作背景?
應該是2007年的時候,我負責新人培訓工作,對來到我們部門的4名新人進行程式設計教學。但我發現市面上沒有一本可以直接推薦給他們的書。雖然有一二十本以上關於數學、物理、C++的優秀書籍,但要讓他們去讀這些書,就太勉為其難了。他們的時間也不多,而且剛剛進入公司,若是直接把這些書一股腦給他們,難免會讓他們產生厭惡的情緒。所以我就想到,難道不能用一本書解決嗎?但我沒能找到這樣的書,所以只能自己制定課程,讓他們學著做一些簡單的遊戲,或者去模仿一些遊戲。培訓結束後,我在自己的部落格上寫道,“要是有這樣的書就好了啊。”正巧我的部落格被出版社的人看到,就問我要不要試著寫一本這樣的書。一般而言,在公司裡工作的人是不會寫書的,又不怎麼賺錢。但我詢問了上司後,上司竟然同意了。正好當時也不太忙,所以就開始編寫。沒想到花費的時間遠遠超出想象,本以為大概會寫300頁左右,沒想到最後的書長達900頁,花費了9個月的時間。實在有點對不起我的上司。
說到遊戲開發,隨著Unity的普及以及移動遊戲的逐漸流行,遊戲製作的門檻已經低了不少。特別是使用Unity的話,可以不必再去學習曾被認為是必學語言的C++,平山老師怎麼看待Unity這款遊戲引擎?您認為遊戲開發的入門者還需要學習C++嗎?
我認為Unity非常優秀,為遊戲製作提供了一條捷徑。有了Unity這樣的引擎,許多至今而言比較枯燥的部分、依靠程式設計師的死記硬背編寫出來的部分就不再需要了。可以說這是時代進步的必然結果。比如我們生活中的快遞公司,它們肯定不會自己去造運輸用車吧。這種理所當然的事情在遊戲界曾經不算理所當然。這種遊戲引擎的出現,使得高階程式設計師才能做的東西不再是必需的了。我認為這是正確的趨勢。
至於C++,也是同樣的道理。如果不再需要了的話自然不用再去學習。但必須要說,學了自然比不學要好。在生活中,自然是會的東西越多越好。要是有餘力的話,學一下總是好的。不過要是為了將來可能的需要而去學習的話,難免遇到挫折,也不會感到什麼樂趣。所以需要用到C++時再學就行了。如果想提前學習的話,可以讓自己的工作內容變得需要用到C++,比如說,進入到一些比較傳統的遊戲公司,依然需要編寫C++的程式。進入這種公司的話,即便厭煩也必須去學習的吧。把自己放到那樣的環境中就行了,不要想著等到學會C++後再去那樣的環境中工作。學會C++後,就能瞭解到Unity的內部到底在做什麼。因為Unity內部是用C++寫成的。如此一來,就算是僅僅使用一下Unity,也能使用得更熟練一些。像效能優化、載入時間等內容,都會在瞭解了內部的程式後有所掌握。比如垃圾回收器突然開始執行導致程式變慢後,你就能想到“因為用C++寫的話是這樣的,所以會這麼慢”。如此一來,就能和不會C++的人拉開很大的差距。
伴隨著程式開發工具和遊戲引擎的進步,僅僅數人就能完成遊戲的開發與銷售。那麼專業的程式設計師應該如何提升自己的競爭力呢?
大方向應該分兩種吧。第一種,去做一般的程式設計師做不了的工作。比如進入Unity內部後,肯定要用C++編寫程式碼。那麼像效能優化這種不需要像過去一樣費心研究的內容依然不可或缺。這種人需要擁有很高的技術實力。因為現如今大部分地方都不需要鑽研這些內容,所以不做到世界上數一數二的級別是不行的。總之,成為一流程式設計師是一種辦法。另一種方法是著眼於現在Unity並沒有提供,但是最好能用C++寫出來,需要專業程式設計能力的部分。比方說,雖然相關的資源可能有一些,Unity中並沒有過多涉及人工智慧的內容。如果自己能編寫這一部分的程式,那麼一般人肯定無法做到,自然就有競爭力。這兩種之外還有一個方法,就是成為能夠展現出遊戲本來趣味的人。也就是說,涉足策劃領域。一個遊戲成敗與否,與引數的調整、AI的行為動作息息相關。如果掌握了這些一般人難以掌握的內容,那麼一定能做出有趣的遊戲。單純的程式設計師做不到這些,單純的策劃人員因為不會程式設計,也無法直接寫出遊戲。若能兩者兼修,就能找到自己的生存空間。
在平山老師眼中,程式設計到底是怎樣一種存在?程式設計對您的生活和人生帶來了哪些影響?
首先,程式設計是掙錢的工具。在我意識到自己能夠程式設計前,我一直因為找不到賴以生存的技能而擔心不已。生物學又不好,雖然是生物專業的研究生畢業,卻完全不覺得自己擅長這方面。是不是件很痛苦的事情?但進入遊戲公司,開始程式設計後發現自己做得還不錯。可以說人生髮生了很大的轉變。因為我終於意識到,我可以憑藉它掙錢的。可以說這改變了自己的人生。雖然程式設計只是個工具,但它給我指出了一條生存的道路,我必須要感謝它。
但與此同時,我要冒險說一句,我認為我並不熱愛程式設計。我的一些同事,對程式設計有深深的愛,在家也會寫程式。他們會把許多程式和開原始碼拿來進行研究。我卻不會在家編寫程式碼,也不會去看別人的程式碼或者查一查有什麼庫存在。所以,我應該並不愛程式設計。但是,真正編寫時是很開心的,因為我喜歡鍛鍊自己的大腦。總之,程式設計對我而言既是玩具,又是工具,但卻說不上熱愛。真是很奇妙的感覺。
訪談的最後,有什麼想要對中國的讀者說的嗎?
那麼就談談這本書吧。本書是寫給那些認為自己“不能不學程式設計”的讀者的。所以家長要是讓孩子根據這本書進行學習的話,可能會有難度。因為沒有特意新增什麼有趣的要素。相較而言,不如讓孩子去試試Unity或者Minecraft。這本書的物件是希望學習程式設計、希望自己能夠程式設計的讀者。針對這些讀者,我盡了自己最大的努力去構思,去排除掉可能產生干擾的要素,希望能幫助所有有學習慾望的讀者學會程式設計。
但不得不說,這依然是一份苦差事。在書中,我會有意寫一些存在問題的程式碼,並在很多頁後才指出來。整個閱讀過程肯定不會輕鬆。若是先略加瀏覽後再編寫程式碼的讀者,對書的內容會有所把握,問題還不算大。但如果是從開頭就認認真真邊練習邊閱讀的話,需要做好受苦的準備。可我必須要說,能夠克服這些辛苦的讀者,才是最能從本書中獲益的讀者。因此,想要自己嘗試一下程式設計,想要學會如何程式設計,以及雖然讀過許多程式設計書卻仍雲裡霧裡的讀者,已經工作卻依然不自信是否能夠程式設計的讀者,比如因為“雖然掌握了某個庫的使用方法,卻不知道在其它環境下會怎樣”而忐忑不安的讀者,不妨嘗試著閱讀一下本書。
好的,謝謝您參加本期的圖靈訪談。
謝謝。
圖靈訪談特約記者: 張沈宇 《我的第一本程式設計書》譯者,畢業於九州大學。大學期間主攻人機互動設計。現居日本東京,從事以自然語言處理為主的人工智慧相關技術的研究與開發工作。 |
相關文章
- 非科班程式設計師和科班程式設計師的差距到底在哪裡?程式設計師
- 非科班小白如何逆襲,成功跨考985軟體工程?!軟體工程
- 程式設計師的副業:我的第一本書出版啦!程式設計師
- 非科班程式設計師才不知道的矩陣Matrix程式設計師矩陣
- 一位非科班阿里程式設計師的 CTO 之路阿里程式設計師
- 非科班程式設計師才不知道的線性系統程式設計師
- 程式設計師的副業:2021年初,寫完了我的第一本書程式設計師
- 《我的第一本程式設計書》第八章 可以操作的程式,操作方塊程式設計
- 程式設計龍書的兩位作者憑藉編譯器技術獲得2020年圖靈獎程式設計編譯圖靈
- 《我的第一本程式設計書》第三章 迴圈,讓程式變短程式設計
- 《我的第一本程式設計書》第六章 會動的程式,讓方塊下落程式設計
- 《我的第一本程式設計書》第四章 程式的變形,繪製大量的方塊程式設計
- 《我的第一本程式設計書》第七章 為儲存區起名,更多的中文程式設計
- 《矽谷之火》作者訪談
- 非科班出身的Web前端程式設計師,從這三個方面來提升自己Web前端程式設計師
- 逆襲職場,有風變程式設計就夠了程式設計
- 《我的第一本程式設計書》第一章 第二章繪製方塊程式設計
- 反轉!以視訊搜視訊,這批 AI 程式設計師要逆天了!AI程式設計師
- 《我的第一本程式設計書》第五章 將程式分離,更輕鬆地繪製大量的方塊程式設計
- 從網癮少年到網管,再到程式設計師,看他的逆襲路,哭了……程式設計師
- 我寫的第一本書《TypeScript 入門教程》TypeScript
- 大佬視角:談談程式設計師的離職和跳槽程式設計師
- 4月書訊:10本圖靈新書圖靈新書
- [圖靈程式設計叢書].持續交付:釋出可靠軟體的系統方法.pdf圖靈程式設計
- 小李的玩伴逆襲之路
- 《視覺化複分析》作者的新書視覺化新書
- 《我的第一本演算法書》筆記一演算法筆記
- 《JavaScript DOM程式設計藝術》作者談:原型程式碼與生產程式碼之間的矛盾JavaScript程式設計原型
- 華瑞IT學校|非科班出身零基礎能學好程式設計嗎程式設計
- 《重學Java設計模式》作者開始錄視訊了!Java設計模式
- 自學程式設計和計算機科班出身的差別在哪?程式設計計算機
- DataGirls社群創始人 Aislinn:做勇敢的少數派(圖靈訪談)AI圖靈
- 001-006 Rust死靈書筆記之非安全程式設計與資料佈局Rust筆記程式設計
- 我的第一本書,被選作大學教材了!
- 談談對程式設計師的管理程式設計師
- 關於程式設計師的996,我們談談歷史和邏輯程式設計師996
- 程式設計師必讀的30本非技術書(文末福利)程式設計師
- 我的程式設計之路程式設計
- 我的程式設計人生程式設計