當(dāng)所有中國(guó)的高中生都在拼命為跨過(guò)高考這道窄門疲憊不堪時(shí),美國(guó)的準(zhǔn)高中畢業(yè)生們也開(kāi)始申請(qǐng)大學(xué),北京某國(guó)際學(xué)校的陶子進(jìn)是其中一員,他的眼神中似乎看不出慌張感。 今年 18 歲的陶子進(jìn)出生在美國(guó)芝加哥,11 歲的時(shí)候由于父親工作的原因隨全家回到北京生活。 回國(guó)后,在國(guó)際學(xué)校就讀的他仍然成長(zhǎng)在美國(guó)教育體系下,與國(guó)內(nèi)的同齡人被淹沒(méi)在繁重的學(xué)業(yè)壓力下相比,陶子進(jìn)在學(xué)習(xí)之余還堅(jiān)持拉小提琴、下棋、擊劍,成績(jī)都還不錯(cuò)。 近兩年他還喜歡上了編程,當(dāng)國(guó)內(nèi)的大部分同齡人還在死磕數(shù)學(xué)題時(shí),他已經(jīng)做了十幾個(gè)編程小項(xiàng)目,除了興趣使然,當(dāng)然也受到了家庭影響。其父親是一位連續(xù)創(chuàng)業(yè)者——濤思數(shù)據(jù) CEO 陶建輝。說(shuō)起陶子進(jìn)學(xué)編程的經(jīng)歷,陶父認(rèn)為主要是美國(guó)教育體系下成長(zhǎng)的學(xué)生知識(shí)面很廣,而國(guó)內(nèi)的高中生除了準(zhǔn)備高考的課程內(nèi)容,沒(méi)有時(shí)間和精力考慮太多。 隨著對(duì)編程語(yǔ)言了解的更加深入,陶子進(jìn)開(kāi)始通過(guò)參賽來(lái)檢驗(yàn)自己的編程水平。 在今年 2 月初結(jié)束的由大學(xué)生和高中生組隊(duì)參加的MIT Battlecode 比賽上,600多個(gè)參賽隊(duì)伍中,陶子進(jìn)和四人團(tuán)隊(duì)在全球所有參賽隊(duì)伍中拿到第 9 名,高中生團(tuán)隊(duì)中排名高居第 4。 左一為陶子進(jìn),右邊依次為隊(duì)友 Alex、Drason,Tom 連線參加頒獎(jiǎng) Battlecode 是一款即時(shí)策略游戲,參賽者通過(guò)兩兩對(duì)戰(zhàn)決出勝負(fù)。每年的比賽目標(biāo)任務(wù)都會(huì)有變化,今年雙方需要編寫(xiě) AI player,通過(guò)管理機(jī)器人資源并執(zhí)行不同的攻擊策略來(lái)摧毀對(duì)方的城堡。 參賽者將需要學(xué)習(xí)使用 AI, pathfinding 插件,分布式算法和網(wǎng)絡(luò)通信技術(shù)以使自己的 AI player 盡可能具有競(jìng)爭(zhēng)力。 整個(gè)比賽歷時(shí)一個(gè)月,前十六強(qiáng)在麻省理工學(xué)院進(jìn)行比賽,獎(jiǎng)金總額超過(guò) 50000 美元。它目前已成為發(fā)掘優(yōu)秀程序員的選拔賽。 這是陶子進(jìn)第二次參加 Battlecode 大賽,他稱這是 MIT 最硬核的 AI 編程比賽,因?yàn)樘貏e難做,經(jīng)常要寫(xiě)程序到半夜,才有機(jī)會(huì)進(jìn)入前 16 ,他們整個(gè)團(tuán)隊(duì)在最后一個(gè)星期的比賽中,有好幾次到了凌晨 4 點(diǎn)還在編程。 對(duì)編程的激情離不開(kāi)陶子開(kāi)始學(xué)編程時(shí)做的小項(xiàng)目,積累更多經(jīng)驗(yàn)后,才能在大賽中施展拳腳。 就此,AI科技大本營(yíng)與陶子進(jìn)就參與 Battlecode 的過(guò)程和感受,高中生入門學(xué)編程的經(jīng)驗(yàn)進(jìn)行了交流,其背后也呈現(xiàn)出美國(guó)教育體系下學(xué)生成長(zhǎng)路徑的一個(gè)切面。 不可否認(rèn),縱然家庭環(huán)境對(duì)陶子進(jìn)的成長(zhǎng)非常關(guān)鍵,而成長(zhǎng)在中國(guó)教育體系下的大部分高中生沒(méi)有多少可比性,因?yàn)榇蠖鄶?shù)人都沒(méi)有其他選擇。 即便如此,至少在編程學(xué)習(xí)方法和路徑上,陶子進(jìn)的個(gè)人學(xué)習(xí)經(jīng)驗(yàn)對(duì)國(guó)內(nèi)高中生甚至大學(xué)生來(lái)說(shuō)是具體、可執(zhí)行的操作建議。也不止于編程,從他身上,你更應(yīng)該看到那種超越國(guó)內(nèi)大部分同齡人都還未擁有的廣闊眼界和認(rèn)知。 再戰(zhàn) Battlecode AI科技大本營(yíng):為什么還要再次去挑戰(zhàn) Battlecode 比賽? 陶子進(jìn):去年打完以后就去看其他人寫(xiě)的 code,看到各種各樣的比賽方法,學(xué)習(xí)后感覺(jué)今年有更好的改變,再加上今年我用的編程語(yǔ)言是 JavaScript,寫(xiě)得更快。 另外,我近期也參加了華爾街對(duì)沖基金 TwoSigma 的 Halite AI 比賽,全球共有來(lái)自 100 多個(gè)國(guó)家的 4000 多個(gè)隊(duì)伍參加, 我最終排位第 66,屬于擊敗 Benchmark 的前 94 個(gè)隊(duì)之一。 在參賽的全球 500 多高中生中,排名第 5,在中國(guó)區(qū)參賽隊(duì)中排名第 2。它比 Battlecode 比賽更簡(jiǎn)單,但是拿第一必須得用好多其他方法,我也積累了一些比賽經(jīng)驗(yàn)。 AI科技大本營(yíng):比賽中主要使用了哪種編程語(yǔ)言? 陶子進(jìn):這是第二次參賽,團(tuán)隊(duì)的其他三個(gè)成員都是我同學(xué)。去年第一次參賽的成績(jī)不太理想,當(dāng)時(shí)總排名是前 32,在國(guó)際的選手中是前 16。 我們第一年用的語(yǔ)言是 Java,今年用的是 Javascript,其他比賽隊(duì)伍有使用 Java 的,Python 也是有的,但 JavaScript 其實(shí)更快。 AI科技大本營(yíng):你們?cè)诒荣愔惺侨绾尉帉?xiě)算法來(lái)制定戰(zhàn)略?取勝的關(guān)鍵點(diǎn)是什么? 陶子進(jìn):你要編寫(xiě)一種能夠在引擎上運(yùn)行的算法,然后結(jié)合比賽中的地圖和已經(jīng)給出的數(shù)據(jù),來(lái)給出最好的策略,比如寫(xiě)的某個(gè)策略是你用來(lái)控制整張地圖的,如果你獲得更多的機(jī)器人資源,你就會(huì)比競(jìng)爭(zhēng)對(duì)手更好,但如果你寫(xiě)的程序超過(guò) 20 毫秒都沒(méi)有響應(yīng),那可能就會(huì)輸?shù)舯荣悺1荣惖牡谝恢芑径际菍?xiě) Foundation,這樣后面寫(xiě)的策略都可以加進(jìn)去。 每個(gè)隊(duì)伍都有自己的策略,然后你要看他們的用的是哪種策略,因?yàn)檫@種比賽可能有 A、B 和 C 三種策略,你得先選一個(gè)好的,然后再看你對(duì)方在做什么,完了再改你自己的,但由于比賽時(shí)間有限,有些策略是沒(méi)時(shí)間去做的,所以你要全局考慮進(jìn)行應(yīng)對(duì)。 AI科技大本營(yíng):拿到這么高的名次,你們團(tuán)隊(duì)還有哪些做得比較好的地方? 陶子進(jìn):我們經(jīng)常會(huì)看別人以前的比賽,仔細(xì)研究為什么輸了或者贏了,這會(huì)提醒我們?cè)诒荣愔幸龀龈淖?,比如最后一次比賽中就用了觀察到的新策略讓我們進(jìn)入了前 16。 其次是我們寫(xiě)程序算是比較快的,比如要對(duì) DFS(深度優(yōu)先算法)很熟悉,馬上能在幾十秒內(nèi)就寫(xiě)完,所以加新的策略很容易,沒(méi)有花那么多時(shí)間在 Foundation 框架上。 AI科技大本營(yíng):比賽過(guò)程中遇到比較困難的地方有哪些?當(dāng)時(shí)是怎么解決的? 陶子進(jìn):困難的就是 Debug,因?yàn)檫@次比賽中沒(méi)有明顯給我們提示程序哪個(gè)地方出了錯(cuò),所以還是耗了好多時(shí)間找到問(wèn)題來(lái)解決。 AI科技大本營(yíng):比賽最刺激的經(jīng)歷是什么? 陶子進(jìn):賽程是 22 天,特別短。有意思的是你必須要選做什么,沒(méi)有足夠的時(shí)間找到最優(yōu)解,必須得選要寫(xiě) A 還是寫(xiě) B,做數(shù)學(xué)計(jì)算,估計(jì)它的重要性。當(dāng)然,最后我們團(tuán)隊(duì)拿到了第九名,主辦方給了我們 1750 美元獎(jiǎng)金。 AI科技大本營(yíng):團(tuán)隊(duì)止步第九名,哪里出現(xiàn)了失誤? 陶子進(jìn):每一場(chǎng)比賽里面都是隨機(jī)地圖,你得做出很好的判斷去適應(yīng)這些地圖,第二句和第三局(雙淘汰機(jī)制)我們都沒(méi)有做好。 贏了我們的那個(gè)團(tuán)隊(duì),其實(shí)平常我們是打敗他們的,只是這一次他們有一點(diǎn)小幸運(yùn)。 編程入門之道 AI科技大本營(yíng):你是從什么時(shí)候?qū)幊谈信d趣的? 陶子進(jìn):六年級(jí)的時(shí)候接觸過(guò)編程,但當(dāng)時(shí)并沒(méi)有產(chǎn)生興趣,真正開(kāi)始學(xué)編程是在高中十年級(jí)的時(shí)候,最近兩年,做的項(xiàng)目也更多了,對(duì)編程產(chǎn)生了更大興趣。 去年開(kāi)始寫(xiě)程序的時(shí)候,是從 JavaScript 和 CSS 開(kāi)始寫(xiě)的,逐漸開(kāi)始對(duì)編程感興趣,通過(guò) JavaScript 還學(xué)了 Processing.js, Node.js。 AI科技大本營(yíng):主要通過(guò)哪些途徑學(xué)習(xí)編程? 陶子進(jìn):主要是看網(wǎng)上的資源,一些在大學(xué)里開(kāi)始學(xué)計(jì)算機(jī)的朋友給我推薦了一些網(wǎng)站,對(duì)我?guī)椭Υ蟮摹A硗馕易约河袔妆?CS 書(shū)和 Script 類的書(shū),這兩者還是有關(guān)系的。 AI科技大本營(yíng):有哪些可以推薦的學(xué)習(xí)網(wǎng)站? 陶子進(jìn):美國(guó)的 edX 課程(注:edX 是麻省理工和哈佛大學(xué)于 2012 年 4 月創(chuàng)建的大規(guī)模開(kāi)放在線課堂平臺(tái)),還有 freecodecamp, Github 和 MDN Web Docs 網(wǎng)站,比如我要做軟件的話,就會(huì)從 Github 上找到我需要的庫(kù),我最基礎(chǔ)的編程能力都是從這些網(wǎng)站學(xué)來(lái)的,不會(huì)的東西都是靠維基百科現(xiàn)搜。 AI科技大本營(yíng):除了參加編程比賽,你都做過(guò)哪些項(xiàng)目? 陶子進(jìn):現(xiàn)在大概做了十幾個(gè)項(xiàng)目。去年 10 月,我和另一個(gè)人幫北京一所小學(xué)寫(xiě)了一個(gè)讀英文書(shū) ese 學(xué)習(xí)平臺(tái),幫助小學(xué)生學(xué)英語(yǔ),平常記錄他們讀書(shū)的時(shí)間,通過(guò)這個(gè)平臺(tái)可以檢測(cè)學(xué)生是真的讀,還是在玩游戲。 還有一個(gè)圣誕節(jié)做的“teachers appreciate week”的小程序,通過(guò)掃二維碼,把祝福和感謝的話發(fā)送到大屏上,然后顯示出來(lái),后臺(tái)統(tǒng)計(jì)有超過(guò) 400 人掃碼。 很多小項(xiàng)目都是通過(guò)我自己在微信跟人聊,覺(jué)得好玩的才去寫(xiě)的。一個(gè)比較大的項(xiàng)目是 Polytomizator,這是一個(gè) web 小程序,當(dāng)你上傳照片到這個(gè)網(wǎng)站上的時(shí)候,它可以幾秒鐘生成 Poly 藝術(shù)照,但如果你要用 Photoshop 處理照片的話,可能需要很長(zhǎng)時(shí)間。它主要是用 JS 和 HTML 來(lái)做的。 還有一個(gè)是讓人玩的 Cut-Bread 的小程序,它可以均勻切割面包、水果等事物,比如圖片上有兩個(gè)面包一個(gè)火腿,可以讓你一刀切下去保證一半是火腿,一半是面包,我也不知道為什么,但這個(gè)小游戲已經(jīng)有數(shù)千人玩過(guò)了。 更多項(xiàng)目可查看 GitHub 網(wǎng)站: https://stonet2000./projects.html AI科技大本營(yíng):讓你不斷去做這些項(xiàng)目的動(dòng)力是什么? 陶子進(jìn):做這些項(xiàng)目很有成就感,因?yàn)槎际呛苋菀卓梢暬某晒?,這其實(shí)是比較好的。但如果一開(kāi)始不是直接寫(xiě)程序,而是學(xué)離散數(shù)學(xué)這些理論知識(shí),我覺(jué)得自己不會(huì)對(duì)編程產(chǎn)生興趣,但我知道那些東西是需要學(xué)的。 AI科技大本營(yíng):這應(yīng)該跟美國(guó)教育的風(fēng)格相關(guān)。 陶子進(jìn):是,我有個(gè)老師之前教了一些基本的編程原則,教得很好,而且美國(guó)人的教法特別注重你自己要做點(diǎn)什么東西。 AI科技大本營(yíng):你爸媽都會(huì)編程,家庭環(huán)境的影響也是一部分? 陶子進(jìn):會(huì)有影響,會(huì)講一些基本概念,但并沒(méi)有具體輔導(dǎo)。 AI科技大本營(yíng):馬上要讀大學(xué)了,申請(qǐng)了哪些學(xué)校?準(zhǔn)備讀什么專業(yè)? 陶子進(jìn):申請(qǐng)了 MIT 等 10 所大學(xué)。因?yàn)槲椰F(xiàn)在做了這么多 CS 項(xiàng)目,現(xiàn)在主要想學(xué)的是 CS,但也不一定說(shuō)大學(xué)還想去做,我也不是特別知道我想干嘛,所以我特別想去美國(guó),因?yàn)槊绹?guó)學(xué)??梢宰屇悖ㄗ杂桑┻x擇。 |
|
來(lái)自: 長(zhǎng)沙7喜 > 《新聞》