運氣一直好,就不只是運氣了——記中學七年
- 2020 年 8 月 16 日
- 筆記
家長視角:公辦生也有春天、一波N折——無悔的高中生活
不知不覺中我即將進入大學。從菜場小學到知名985,我也算是實現了階級跨越了。初中高中這7年,運氣始終陪伴我左右。
一
坐標上海,初中是一所優秀的公辦學校。小升初時曾經糾結過另一所學校,因為它有「爹」——同名的高中,普通的市重點。後來沒有選擇那所初中,因為父母覺得一樣能考進,沒有必要藉助額外的機會,何況這一所更好一點。
既然只有這點目標,那麼課內就緊跟學校,不出差錯的話就是這條路了。
另一方面,小學的奧數進入初中變為競賽,我也按部就班地繼續著之前的課程。預初(六年級,在上海屬於初中)時新增了物理課程,也就抱著試一試的心態上了。沒想到我對物理很有興趣,考試成績也都不錯。
老師的魅力是很重要的因素,同期的數學課程作為反面更凸顯這一點。到初一時,物理競賽課的老師據說是因為收益問題離開了所在機構,我沒有追隨他的腳步,而是參加了另一所機構的插班考,考進了最好的班。之後一年,我以初一學生的身份上了一年的初三課程。雖然相比高兩屆的學生菜很多,但積極的態度讓那段時間成為我進步最快的時期。
3月,我順利進入了物理競賽的複賽,並憑藉激進的多選題策略與物理直覺獲得了三等獎。初一學生參加以初三為主力的比賽,獲得了三等獎,這空不空前我不知道,但應該是絕後了——現在初中競賽已經停辦了。
↑物理競賽獎狀
我很意外,這意味著原先的目標需要修正,因為這樣發展下去拿個大獎不是什麼遙不可及的夢想。我的野心突然膨脹,目標升級為頂尖名校的重點班。而實現目標的途徑,就是「這樣發展」——全力投入競賽。
二
野心膨脹的同時我也自大起來,初二基本沒學物理,機構里上的課是和前一年一樣的,不過是為了各種名額而「占坑」,不去上課。於是這一年沒有得獎。我有點失望,因為去年拿獎而今年沒有;但並沒有懷疑自己,因為沒學就沒獎也算情理之中,初三才是最關鍵的一年。
很久以後才知道我初一就能得獎的原因:每個區必須給兩個獎,而我所在的快樂教育區太菜了,初二初三的除了一個以外都考不過我,於是就給了老二我一個獎。這是不可複製的運氣。至於初二沒得獎,那是因為比我高一屆的參賽了。
忘了說了,我主攻數學競賽。進入初三,9月開始集中刷題,備戰12月決賽。11月初賽,滿分而歸,衝擊決賽滿分。
↑刷完的題
目標沒有達成。考場上我體會到了久違的無力感,前一次是在四年級第一次課外班考試上。最遜的是,只有三等獎。這對我來說是一個巨大的打擊,一方面三等獎對於進入名校的理科班沒有幫助,另一方面即使我考前已經很努力結果也不過如此,我是否適合走這條路?近的、遠的,未來充滿不確定。
原定於12月開始的物理複習計劃也因為數學的失利而推遲,到初賽前一個月才開始。3月複賽,最後是沒進決賽的二等獎(前30名進決賽角逐一等獎15名)。
競賽生也要中考。中考數學壓軸題,眾所周知,只要找對方向,算就完事了。我所學的競賽知識可以幫助我把題目分為大步驟,大步驟中的小步驟有固定的模式,所以我一般看完題就知道方向了,這是很大的優勢,儘管我並不需要優勢,況且競賽知識不能直接用。一方面我感受到了降維打擊的力量,另一方面我體會到了數學的層次感,而我必須學會用課內層次來描述競賽層次,即從低構建起高,這為我日後學習電腦時偏愛底層埋下伏筆。
三
因為一些懂的人自然懂的原因,這一屆的自招有點亂。
其實數學比完就有數一數二學校打電話來了。本來三等獎是輪不上的,因為多方面的運氣才有了這個機會。1月去學校與校長洽談,談好次好的理科班,以物理二等獎為升級條件。
數一數二學校,顧名思義,有兩所,是頂尖的高中,各有側重。談好條件的這所,我看中它相對自由的風氣。然而後來因為一些聽聞,目標開始動搖,向另一所傾斜。一次物理競賽課上,該校招生老師來宣講。課後我主動遞上了簡歷,招生老師說「我們已經開始關注你了」,這給了我不少信心與希望。
各校自招考安排在同一天,只能選擇一所參加。考前幾天,該校打來電話,承諾我平行班保底,並給我加20分。有了這樣的優惠,我更加堅定了,不顧勸阻放棄了另一邊理科班的約,冒著落到平行班的風險參加考試。
↑高中校園景色
最終考入以課題研究為方向的特色班。後來我才知道,那20分不對特色班生效。當初電話是打給我媽的,她堅持認為消息傳達清楚,我當時知道這20分的生效範圍,我卻怎麼都記不起來。如果當時就知道,我可能會改變主意。
四
插播一些軼事。
初二時被一個以數學為主題的社團挖過去救場,如果再沒有人參加的話就要取消了。我擔起了重任。一開始只有兩個同班同學,目標自招,就講一些競賽知識點;後來低一兩屆的都進來了,只能轉而激發數學興趣。
剛剛去老電腦里考古,與社團相關的資料只有兩份,一份是講解演算法,另一份是考試。
那時根本不懂演算法嘛!不過是用C寫了一個\(O(n^2)\)複雜度的計算根號的程式(當時不懂什麼叫複雜度),從\(O(n^3)\)降到\(O(n^2)\)(差量法)再優化常數(4位並1位),最後加上輸入輸出,就覺得可以水一課,拿來講了。我竭力避免放出程式碼因為他們看不懂,但用黑板和粉筆也很難講清楚計算過程,最終台上台下都一頭霧水。
後來又準備了一些數學性強一點的暴算題,還講了排序、RAID等。一個從未教過我的數學老師在後門一起聽,課後他對我連連稱讚,說把數學講得那麼有趣,讓他也學到了新東西。
考試主要是想讓他們體會一下差距。80分鐘14題,換我現在也做不完,內容涵蓋代數幾何數論組合,外加講過的尺規作圖和演算法。難度適中,六年級不會爆零,八年級不會及格。
↑不明所以的題目
初三時被任命為競賽班教練,沒辦法公辦學校里沒有老師能教這些,我是十分罕見的競賽生。當時正在複習之前學過的所有數學,我就從外面上課的講義里找題,每講10道,其中6道例題,40分鐘一節課根本講不完,也只能硬講。
競賽班開始之前拉了每班數學最好的幾個人來上,有一個外班同學不夠格但是想參加,由於家長彼此認識,我就跟老師說讓他進來了,初嘗權力的滋味。但是後來發現該同學的水平實在跟不上,有點後悔。不過更讓我失望的不是水平而是態度:大多數人學習態度差,上課時一直嘰嘰喳喳的,有一次我直接抄答案了(正常情況下應該一步一步講思路寫步驟,外面上課只有老師不會做時才會抄答案)。
吸取上一次的教訓,競賽班的考試題量減少至10題,都是我原創的——出題有一種別樣的感受。正因如此,考試時我允許除交流以外任何形式的開卷,包括上網搜題。最後好像還是沒有人及格。
區里初賽,幾何大題的一半是社團考試原題,但另一半把他們都難倒了。實際上是經典老題,他們不學所以沒見過。如前所述我滿分,還有一個人達到分數線,又因為照顧弱校再給了一個名額,就只有3個人進決賽。這算是我預料之中的結果,競賽班也就這樣結束了。
五
物理競賽完了以後是化學,化學我是初二才開始在學校里興趣班學的,相比之下算起步晚的。興趣班上認識了新來的化學老師,管實驗室,這下我就去實驗室刷題、問問題。後來競賽過去了,我的自招也搞定了,漸漸地就定居在了實驗室。
最開始做的是氫氧化銅實驗,發現硫酸銅和氫氧化鈉一個往另一個裡面滴會產生分層,反過來不會,覺得是密度問題。自己配了濃度差不多的溶液,默認為密度差不多,然後可以滴出好多層。
六年級上課測定硫酸銅溶解度,耗費大量硫酸銅,被我們拿來玩結晶。實驗室條件差,拿繩子作晶種,結出些不太漂亮的晶體。
↑硫酸銅晶體
後來漸漸玩開了,做了個鋅粒鹽酸制氫氣還原氧化銅的實驗。實驗很成功,不過把一支試管變成氧化銅專用的了(硝酸稀缺)。做這個實驗的時候老師不在,後來他說很容易爆炸,有點後怕。
還有一次用硝酸銨制笑氣,就是前幾天爆炸的那種物質。倉庫里的硝酸銨都板結了,老師拿玻璃棒捅下來一點,有點後怕(其實硝酸銨常溫下對碰撞不敏感)。由於缺少控溫措施,我吸了點製取的氣體並沒有特殊的感覺。
實驗室有一台磁力攪拌加熱器,有位同學在上面放了個盛糖水的燒杯,走的時候忘關了,第二天變成了焦糖。
實驗室在一樓,一樓大堂有一架三角鋼琴,我就上課時去彈。當時在玩某遊戲,遊戲的BGM很優秀,我就扒譜下來彈。這為未來埋下了禍根。
一直都在玩一款槍戰遊戲,這下閑了下來,有更多時間來肝裝備了。我擅長打衝鋒,擊殺死亡往往很高,幾乎每局都MVP和ACE至少撈一個,而遊戲似乎針對MVP降低好裝備爆率(也可能是我氪金太少),所以我規定自己必須每天12局打完。
↑有手就行
有時學校里也玩,就在實驗準備室後面的倉庫里,實驗室老師和同學是不會管的,除此以外沒有人會進來。
遊戲有各種bug和奇怪的匹配機制,導致排位滿分很難維持。久而久之,打遊戲不再快樂,反而成為一種負擔。有一天想通了,就棄坑了。
儘管棄坑,自招結束後我整個人的狀態一直是很頹廢的,是之前長時間的緊張後突然放鬆造成的。一位黑化的好友在臨畢業前跟我說「你現在已經快要變成無趣的人和討厭的人了」,希望我「多讀點書或者在喜歡的事情上繼續發展下去」。能有這樣一位好友我感到十分幸運。
這是我記得的最後一件事。初中完。
六
進入高中。來到競賽強校,我理應利用資源繼續競賽生涯,但先前打擊的餘溫仍未消退,再加上之前高中競賽課上聽不懂的感受,我決定放棄競賽。先放棄的是數學,暑假裡還在上學校的物理競賽,開學後也退出了。
高中是寄宿制的,我並沒有不適應。學校有食堂,校園裡還有一家便利店,選擇很豐富。
↑日常
我本想悶聲發大財,但還是悶不住。開學後不久,就有學姐借初中校友的關係來邀請我加入樂隊。
其實我六七年級的時候一直在學吉他,買了很多設備,還搞過樂隊,甚至上了電視。後來不學了自己練,但上了初三就一下子中斷了。畢業前又重拾,現在給我一個機會把它作為「喜歡的事情」「繼續發展」,我當然是樂意的,於是就答應了。
初入樂隊,發現裡面很亂,就瞎安排了一通以後把編曲攬了下來。低年級的去領導高年級的,現在看來可真是愚蠢。
事實也證明了這一點。本來排練節目是為了上藝術節,花了很多精力以後音樂老師說不給上。排練一段時間以後我就已經不看好自己了,這下正好有理由退出,沒想到先前來找我的那位學姐死皮賴臉求我留下,一來二去就成了我女朋友。
我對她一直是無感的,她對我本來也無感的,直到有一次我送給她一杯奶茶。而那杯奶茶的來歷,是我一次性幫同學帶了10杯奶茶後店家送的。我在班裡賣不出去,同學就建議我到樓上(高年級)賣,我覺得這何成體統於是就改送了。相當廉價的手段!
↑我和我的吉他
七
進特色班是要做課題的,學校為我們配備了相當好的資源。每周兩次,連續兩三節課,作為「專門課」,給特色班學生用來完成課題。一開始是10個方向的教授前來宣講,兩個班的學生坐在大禮堂中聽。都講完了以後就分方向,此後就每個方向分開上課了。
我選擇了通訊方向,7個人,後來做的東西跟通訊基本沒有關係。指導老師是教電腦的。分方向後前6周,由上海交通大學的教授來上課,每人2周4講10節課,分別講了模數電子、MSP430單片機和Android開發。據說請教授來上一次課就要幾千,當然是學校出,學校很有錢。
然後該確定課題了,在此先說說我與課題的過去。初中時參加過創新大賽,課題很簡單,就是把兩個輸出電阻高的模擬訊號源短接在一起給後級可以實現音頻的疊加(這些用詞是後來才會的)。課題的由來是我以前學琴的時候兩把電吉他只有一個音箱,我就用銅絲把3個6.35mm插頭接起來,沒想到真能行。真是一環扣一環(雙關)啊!
所以就想著課題也是音頻這塊的,想了個人聲處理,上知網查了點論文,完成了文獻綜述的作業。
後來覺得這個課題無從下手,想改做點效果器相關的,學了點模擬電子以後覺得行,開題報告就寫的這個題。
↑傳銷式開題
八
這個課題講的是用數字手段控制模擬電路。眾所周知效果器上的旋鈕本質上就是電位器加個帽,那麼用數字設備取代電位器的方法有可控電阻和數字電位器等,如果可以改變原有電路那麼還有可控增益放大器等,甚至還有機械方法——用舵機控制電位器。這麼多現有的晶片我不用,我偏偏選擇了一條最困難的路(不告訴你是哪條)。
3月開始學模擬電子,僅看書。最讓我耳目一新的莫過於運放的負回饋,除此以外我也沒記得什麼了。尤其是共射放大電路,不在射極加電阻根本沒法控制放大倍數,這是後來才知道的。
課題涉及單片機,所以我買了本書複習了一下C語言。六年級時學校給名額去學Arduino,後來自學了C語言(程式設計入門——C語言),買了點元器件在麵包板上搭電路。
↑早期作品
又把單片機數據手冊讀了一遍,還有一本專門講效果器設計的書,都是英文的。英文技術書初看有點累,看了一兩章以後就習慣了。
除了看書學習以外,還要電路模擬。高一時間安排不緊,但也敵不過那麼厚的書,白天時間排不過來。學校規定6點起床,我把鬧鐘調到3點(以前是5點起來練琴,有時4點起來背英語),為此室友作出了很大犧牲。為了做課題還買了手頭這台筆記型電腦電腦,本來想等Intel一屁股坐牙膏管上的,等不及了就買了(i7-7700HQ)。
這種安排下課內成績可想而知,期末拿了兩個不及格。特色班有淘汰制,好在期中考得還行,加上理科優勢,我還能繼續留在這個班裡。
之前都是理論和模擬,而展示肯定要用實物,我就去摸索了一下PCB設計,畫了幾塊方案驗證板。網上找廠家制板,淘寶上買元器件和設備,花了好長時間焊接,逐漸學會了焊接貼片器件(現在0.8mm無壓力)。
家裡沒有示波器這麼貴重的儀器,去交大借實驗室做了兩次實驗,均以失敗告終。
↑方案驗證板與波形
結果就是我把核心原理以外的結構和細節都設計完了,核心卻遲遲攻不下來。按照通常的進度,高二之前課題至少得有個樣子了,眼看著這個題遇到瓶頸,繼續下去也無望。於是我用一個星期抄完了暑假作業,高二開始從頭再來。
小結一下這個課題帶來的收穫:
-
因為缺乏相關經驗又沒有人來指正以至於誤入歧途最終失敗;
-
理論與實踐需要結合,一步一步迭代上去;
-
要利用已有的層次,不要妄想全部從底層開始;
-
搞清楚定位,不要把相關的東西全攬進來;
-
讓我體會到教科書上知識的力量,同時教科書有多麼教科書;
-
讓我學會了如何擠時間出來以及如何把握擠時間的度。
九
抄作業的時候當然沒閑著,我在思考該換什麼題。之前淘寶採購元器件時逛到過各種模組,這些東西在需要的時候是很實用的;也有直接把開發系統做成一個個模組的,但是無一例外地貴。我覺得這個想法很不錯,我也知道PCB和電子元器件都是什麼價格(甚至只用知道量級就夠了),所以就決定是「模組化單片機開發系統」了。
一個核心問題是模組間的通訊,在SPI、I²C和USART中我顯然選擇了I²C,儘管之前沒有任何寫I²C的經驗,但之前就著datasheet寫暫存器的經歷告訴我這樣做是可行的。
另一個核心問題是設計的定位,這是後來寫論文時才開始重視的,並且更改過很多次。此時的定位是N/A。
第一個比賽9月報名10月參賽,此時我的PCB剛剛製作完成,程式都還沒有寫,尤其是I²C通訊部分。我只能假裝解決了通訊問題(畢竟在通訊方向)填好了報名表,然後努力在比賽前實現了用於演示的功能。
↑初版模組
當然,是用全部的休息時間外加早起獲得的額外時間趕出來的。其實I²C通訊沒那麼困難,說到底一方面還是自己菜,另一方面此前一些參數選得不好,比如核心模組上單片機是ATmega16A而應用模組上是ATtiny24A(兩個名字可以顧名思義了),兩個系列所帶的I²C組件是不同的,還得分別開發。我不記得克服了多少不必要的困難,反正最後是完成了。
I²C通訊的上層是一些回調之類的,除了函數指針的數組怎麼寫需要查一下以外都沒什麼難度。
初次比賽,不太順利,被揪著定義的問題問了半天,我不知道我給系統里的功能起兩個名字怎麼礙著他了。最後拿了三等獎。
後來又做了一系列模組,都沒啥用,當時PCB打樣還老貴的說。程式碼也優化了一下,起碼中斷可以返回,不用每次進中斷把SP
設置到RAMEND
了。
又去參加課題答辯,專家講到I²C穩定性不行要用CAN什麼的,我當時不懂CAN也沒法回答。介紹的時候還很自大地說這個開發系統未來可以形成什麼樣的生態之類的(可見我能從過去的經歷中獲得的唯一教訓就是我不能獲得任何教訓),大有一統天下嵌入式市場之勢,被專家批評說要謙虛。
我漸漸明白,我的課題的核心賣點是「模組化、低成本、可擴展」,缺一不可;尤其是低成本,帶CAN的單片機和CAN收發器都是很貴的。當然我也沒覺得那幾個會用CAN眼裡就只有CAN的人有比我高到哪裡去。
之後一邊做下面會提到的各種亂七八糟項目,一邊繼續設計新模組,越發感覺先前確定的參數需要修改:模組上放不下下載器介面,需要用可拆卸的單片機,它的封裝不能太大,那麼它多半屬於低端系列,功能受限;模組間連接器要佔據一半的PCB面積,沒留多少用於放器件了;所有問題都歸結於模組尺寸太小。我開始醞釀新一版的硬體設計。
其間還報名了一個比賽,我初審就沒過。我們老師(校內,非指導老師)就說,讓你不好好寫論文,花那麼多時間在研究上。這算什麼學術態度?合著你就先有論文後有天唄?此人的另一個故事見搖搖棒,理工男的擇偶權(上),放一起看就不難理解了。我寫過一篇《論文奴》作為語文作業來嘲諷她,寫得不好就不放了。
同時班裡也誕生了一個說法,我沒有入圍的比賽一定不是好比賽。忘了介紹背景了,班裡40多個人就沒幾個人是認真完成課題的,其他人有的是教授直接塞課題,根據論文來寫開題中期結題報告的,不塞的就隨便混混,享受特色班的教育資源;在認真的人中,我肯定是花心思最多的。聽到這個說法的時候,我有些得意,但也嗅到了一絲嘲諷,不過我已經習慣了。
掛完人順便掛個事。各種比賽的各種申請表,填得真的頭大,看似各有側重實則千篇一律。你要是正規比賽,就去那綜評網站上拉資料不就好了?我們在那點一下等一年的網站上每學期辛辛苦苦填各種資訊,要你用的時候還要我們自己填?哦哦,你獲取不到那些官方的資訊,那不是正規比賽還不快滾?
回到正題。新版模組在3月的創新大賽之前完成了,這時報名資料已經提交了,論文里用不上新版了。我原想終評現場演示用新版模組,沒想到最後只拿了二等獎沒進終評,倒是同學由家長完成的課題進了。
↑新版模組
之後就是高三前最後的狂歡,也沒心思繼續做了。由於缺乏動力,早上也起不來了。
十
課題看似佔用了我很多時間,實際上只是一部分,更多的時間被我用來以做課題的名義玩耍積累經驗。
9月初開新課題,理應抓緊一切時間趕進度,我卻在給女朋友做禮物。當時還沒做過幾塊PCB,單片機編程的經驗也沒那麼豐富,就只能做點簡單的東西。但是抓住小姑娘的心仍是第一要務,於是我設計了這款心形LED。原理很簡單,單片機+4片595,定時器接蜂鳴器和RGB燈。
按鍵消抖做不好,EEPROM的I²C不會寫,甚至595的方向都搞反了,好在可以相應地改程式。這些都是次要的,她喜歡就好。
↑心形LED
11月,課題那邊基本成形了,我就想著學點新東西,自我提升是比較冠冕堂皇的理由,更實際的是覺得課內和課題都沒有出路,不想花很多時間,但又不能浪費時間,就選擇了上網課(C++程式設計入門(上),現推薦C++程式設計(面向對象進階))。沒幾天MOOC就上完了,但學習從未停止。
學習C++的最好方法就是用它,我把它用在我熟悉的AVR編程中。12月我設計了一塊開發板自己用,意在嘗試用C++和回調提供一種簡潔的寫法。從C升級到C++的感覺別提有多爽了,只是有點矯枉過正:工具鏈沒有提供STL,我自己寫了幾個容器,裡面大量使用new
。
單片機選擇的是flash和RAM較大的,想用來學RTOS,後來一直沒有學成。收穫是把UART中斷和定時器中斷用熟了。
1月,我看手中的USBasp很不爽,想做一個它的超集,就做了一個基於ATmega16U2的工具。後來沒有時間學USB了,同樣沒有做成。
↑塵封的開發板
2月,準備情人節禮物,做了一個6*6*6紅藍雙色光立方,原理也很簡單,9片595分三組加6個MOS管動態掃描,一個蜂鳴器放音樂。紅藍LED如果要亮度相同(或者說要調配出紫色),串聯電阻的阻值就得不同,所以我焊了72個電阻而沒有用排阻。更累的當然是光立方本體了,我沒有用網上說的泡沫塑料板的方法,而是6個LED組成一列(下圖中垂直於螢幕方向),6列組成一面,最後6個面焊到控制板上,再加鐵絲固定。
需要在此提醒讀者的是,到面這一步就必須逐個測試LED,否則後面很難更換。這是我做廢一個4*4*4光立方的教訓。
↑光立方
4月,忐忑不安地設計了搖搖棒,因為網上能參考的資料不多,還因為怕鋰電池爆炸。沒有任何調試輸出,也沒有任何經驗,我不知道我是如何把周期檢測演算法調通的。最後影像成功顯示的時候,連我都被驚艷到了。
印象深刻的是有一次在黑暗中裝電池,打開開關後不僅LED不亮,我還聞到一股燒焦的氣味。打開燈一看,單片機上出現兩個凸點——原來是電池裝反了,鉗位二極體燒掉了。我想這根肯定廢了,沒想到把電池反過來以後竟然還能亮!
一共做了兩根,另一根作為520禮物送掉了。
↑初版搖搖棒
與這些並行的是C++的深入學習,買了好幾本書,最喜歡《深度探索C++對象模型》,因為單片機也是比較底層的東西。為了使帶捕獲的lambda能用於回調,我自己實現了std::function
,此為模板水平的分界點,並明顯地強化了我對C++的興趣。我確定了以單片機和C++為主要學習方向。
只是此時課題已經告一段落了,我的手機里多了幾個遊戲。
十
暑假作業好多啊!從中我能預見到未來一年的生活。肯定是沒時間做各種項目了,那就開通個部落格隨便寫寫吧!後來事實證明,寫部落格一點也不比做項目省時間。
開的第一個坑是PAT甲級題分類彙編,因為當時在學數據結構,了解到PAT考試,覺得努力一下可以考出來,於是決定以寫部落格的方式督促自己刷題。後來只寫了一點就干別的去了,集中刷題還是考前一周,也就是開學第一周。
目前本部落格唯一的大型系列是AVR單片機教程,開坑於暑假,完結於線下開學前。動機是女朋友考上了交大密院,而在設計展中看到的大一學生作品讓我對他們的單片機教學有些擔憂(見AVR單片機教程——開發環境配置),於是設計了一款開發板並編寫了一系列教程。時至今日,這仍是我用得最順手的一塊板,只可惜教程(尤其是第一期)的品質不大行。
之前學校里上課時聽老師講起過丘成桐中學科學獎,感覺很高端,畢竟是用英語的。想起之前比賽的各種亂象,我決定報名參賽。沒記錯的話論文9月中截止,我肯定要在暑假裡完成。還好,初賽只需要中文論文。
但這並不輕鬆。首先是課題內容。新版模組的硬體設計很早就完成了,但是程式始終無法寫到讓我滿意,因為我不是一個模組分類專家,能把模組實體抽象出的類用繼承關係聯繫起來。這時類型擦除的優勢就體現出來了,最後我保留了兩層單繼承關係,其中只有繼承樹底端的類是非抽象類,同時用std::function
的擴展的容器(加上object.method
的形式與operator==
的功能,用鏈表來包裝,都是從C#學來的)來實現回調。
然後才是論文。我的課題是一個設計,它解決的是一個比較主觀的問題,那麼如何描述它的背景,如何安排對設計的描述,才能凸顯出我的設計的優勢呢?有了先前幾稿論文的經驗,我最終以「自頂向下地分析需求,自底向上地設計介面並實現」的思路寫完了論文。
↑架構框圖
臨開學還遇到了一個問題,見C++類成員默認初始值。這個問題遲遲攻不下,我只能先湊合著寫完論文(人終究要活成自己討厭的樣子),用一些硬編碼手段使示常式序能正常工作,並錄製了影片作為報名資料。至此報名結束,想想開學前還有什麼事沒做。
暑假作業?哪裡還有時間!這樣去上課肯定要完蛋,正好數學競賽在集訓,我就去避了一周(好歹高二時候考來一個名額),又利用物理集訓避了兩周(當然也有正當理由),回去以後沒人認識我,也就沒有人來問作業的事了。
競賽是混混的,撈個獎而已。第一周是數學集訓,在我這兒更是數據結構集訓——10點熄燈,我一般刷題到11或12點。一個例外是有一天遇到了1057 Stack,原以為10分鐘搞定,沒想到寫到凌晨1點(不愧是30分題),開了熬到第二天的先例。
儘管PAT滿分和數學二等獎一樣沒用,但前者給我帶來的快樂遠勝於後者。
我在上一行的鏈接中寫道要學演算法,於是我就真的報名了CCF CSP-S(原NOIP提高組),並參加了兩個MOOC開始學習演算法。一個只會數據結構的人如何用一個月的時間備戰NOIP?靠每天22點到次日2點。學的時候想到可以寫一個「寫遊戲,學演算法」系列,至今未開。
初賽的時候同考場的幾乎全是小學生,複賽的時候旁邊也坐了個小學生,第二天他因為什麼都不會哭了(說得好像我就會一樣)。儘管不會,我還是能做出兩道題再騙點分的,最後順利拿到一等獎。我覺得弱省NOIP會敲鍵盤就能拿一等獎,所以一等獎的快樂還是不及PAT滿分,儘管兩者也是一樣沒用。
一開始不知道丘獎還有半決賽,等到CSP考完有時間準備的時候距離比賽只剩兩周了,此時最關鍵的問題是前面提到的那個bug。在一個所有人都在教室自修的下午,我在熄燈的寢室里敏銳地發現了這個bug,此後就沒有什麼技術問題了,只有在C++方面有一點技術含量,這是我後來強調的。
然後是PPT。高二結題答辯的時候做過PPT,但那時是上一版模組,後來接觸的多了又有了些概念上的修正和增補,已經大不一樣了。論文是沒時間改了。
去浙江大學參加半決賽。學校非常不重視這項賽事,半決賽和總決賽的所有安排學校都不參與。到半決賽現場看到參賽選手都西裝革履的,還有老師帶隊,非常重視,與我形成鮮明對比。
比賽在一個會議室中進行,我進去以後因為要用自己的電腦而耽誤了一點時間,導致不得不跳過幾張PPT才勉強在15分鐘內講完。專家問出的問題也都跟外行似的,幾乎沒有落到課題的特色上。不過畢竟是相關方向的,能估計到我這課題的工作量不凡,結束後有一個專家追出來問了幾句是否是獨立完成、是否影響學習之類的。
後來順利進入總決賽,我有大約一個月時間準備,這一個月是有史以來我最累的一段時間——英文論文、英文PPT與講稿,還有我為課題添加的一些籌碼,比如設計了一塊與Arduino兼容的板子(這再次證明我還是吸取不了教訓,儘管這塊板挺好用的),增加了兼容性這一特色。
↑MEDS-UNO
英語方面,既得益於平時用Google和Stack Overflow的習慣,也得到了在密院的女朋友的幫助,先後完成了論文和講稿。代價仍然是睡眠,這段時間可以到凌晨3點,如果電腦還有電的話可以更晚。以前玩遊戲時看到男主兼職到晚上27點才睡覺,睡4個小時第二天還能趕上第一節課十分驚訝,現在看來不過如此。這還不夠,白天時間還要拿來背稿子,一邊在校園裡轉悠一遍背,一天下來能有一萬多步。
去清華參加總決賽,組委會報銷路費。校園很美,但這美不屬於我,我參加比賽對進這所學校沒有任何幫助。組委會為學生和指導老師提供住宿,我是和我媽去的,只能住在外面的小賓館裡面。我被安排在上午比賽,前一天晚上就背背稿子,想想可能被問到的問題。
比賽在一個小教室中進行,只有一個外國人,但大家都講英語。比賽要求參賽選手穿西裝,我感到雙重不適。更糟糕的是我無法用我的設計如何給人帶來方便打動CS的專家,導致很多點都沒有凸顯出來,準備的問題更是一個都沒用到。我非常失望。
第二天頒獎典禮,我獲得了優勝獎(我稱之為「鐵牌」),怕是評委可憐我工作量大才給我的。晚上還有個晚宴,我心情不好就沒去。
↑獎盃
此後就不再有什麼deadline了。寒假裡寫AVR單片機教程第二期6篇,一篇比一篇長,一開始還能一星期兩篇,後來兩星期都未必能更一篇,一直拖到線下開學前。長度與難度是一個原因,更主要的是因為當時我在玩一個經營類遊戲。遊戲很氪,我一分沒氪,但服里有幾個幾單幾單氪的老玩家,都是事業有成的成功人士,其中一個說我既然要高考就不應該玩遊戲,我覺得確實太浪費時間了,後來就卸載了。
我趕在等級考之前調試出了搖搖棒,它和前一版的背景都在文章里有描述。考前交給班主任讓他在考場外應援,在辦公室里引起一陣騷動,把隔壁辦公室的老師都引來了。年級組長甚至說要考慮量產,雖然這事沒有下文,但我作為一個存在感又低又高的學生應該就和搖搖棒綁定在一起存在於他們的回憶中了吧。
再往後的事,就可以在新開的文章里寫了。
十一
課內學習本應是我的「主業」,但至少在我心裡它不是。關於這方面,我想旁人應該看得更清楚,詳見文首的「家長視角」。
本文主題為「運氣」,寫到這裡我並沒有忘記。進入高中以來,我的運氣主要體現在課內,因為我花了相對很少的精力獲得了在我的圈子裡中規中矩的成績;其他方面,我所輕視的獎項甚至有些對不起我的付出,至於我獲得的知識與能力,I deserve。
眾所周知上海是高考綜合改革省份,具體的我就不介紹了。高二考地理和生物,我選擇了生物,平時分數一直在均分以下一點。高中生物是一門花工夫就一定能學好的學科,我的成績上不去的原因很容易從前文中推斷出。
考前一個月,前所未有地感到高考如此臨近,再不在乎的人也會有緊迫感的。於是我開始劃書、刷題,沒多久就把生物學成了一個自成一體的知識體系,除了那種吸入氧分子到呼出二氧化碳要穿過多少層磷脂分子之類不會考的問題以外都不在話下。
理科自古以來就是要衝滿分去的,查分時我能接受的最低分是A,後來查到是A+,信心增強了不少。
高考英語成績是春考秋考兩次取高分,丘獎總決賽結束後只有3周就是春考了。這回是課內直接得益於課外,翻譯論文那段時間我的英語翻譯分數都很高,寫稿的時候也學到不少新詞,都是可以用在作文里的。考前一周,晚上照舊晚睡,不過不寫程式碼而改寫作文,同樣得到密院學生的幫助。
最初定的目標是130,後來考了134。儘管今年考卷簡單,這也已經是超常發揮的成績了,我很滿意。從此和電腦英語以外的英語說再見了。
疫情原因,我被強行充值了一個月。等級考另兩門我選的是物理和化學,都是拿手科目,但高三以來成績一直在下滑。考前我把教科書看了幾遍,又去辦公室待了幾天,有問題就問,沒問題就聽別人問題。教科書是真的對考試有幫助,辦公室提問更多的還是心理安慰。
考完發現理化都有錯題,但好在今年考卷偏難,還是拿到了雙A+。有人說我複習節奏慢半拍,我覺得我慢的有一個小節。我就像龜兔賽跑里的兔子,先沖一把,然後睡一覺,最後再沖一把。在別人看來我在睡覺,實際上我在另一個次元里跑得可賣力了;最可氣的是,在賽跑的次元里最後我還是比烏龜快。
然後就是高考了,我只剩語文和數學兩門。高一高二時候數學的地位就沒有撼動過,進入高三一下子變得很菜,主要是因為之前很忙的時候不做數學作業被減少30分鐘考試時間,後來考試時間恢復了但分數也回不到從前了。數學這玩意兒對我來說就考一個狀態,到了正式的場合狀態自然就好了。至於語文,沒辦法,隨緣吧。
最後語文109,數學145(我覺得我沒有任何錯),總分598,清北去不了,復交穩穩的。語文算很差了,如果這三年更用功一點,我相信會有更好看的分數,但是如果給我機會重來一遍,我也不會這麼做,因為不值得。退一步講,要了也沒用。
該選擇專業了。了解我的人都以為我會去讀電腦或電子,但我卻選擇了物理。我不是要就此放棄這些已經入了門的學科,我會繼續自學下去。至於為什麼是物理而不是別的,只是因為興趣而已。
出於各種原因,在復旦和交大中我選擇了後者。綜評面試很順利,應該是這一年中最順利的事了。自我介紹主要就是本文第十段的傳奇經歷,故意給自己挖了幾個坑,後來被問到一些。最後面試分137.5,喜提理科試驗班。
↑兩屆校門3D卡
十二
最近在玩Physics Balls,一款彈球遊戲,很解壓。
↑有尺就行
玩法很簡單:選擇射出的角度,然後球就開始彈,反彈有一定隨機性。有重力,球落到底部後返回。每輪上移一行並新增一行,形狀與數量隨機。到頂上還未清除,則遊戲結束。有多少行取決於螢幕寬高比。
站在我的層次上,我認為玩這個遊戲有三個境界:
-
小球運動路徑因重力而彎曲,玩家瞄準了卻打不到,靠運氣打到哪是哪;
-
玩家能瞄準,能計算一次甚至兩次反彈後的路徑,精準消除特定的塊;
-
能從多個塊的形狀與排布中發現模式,從而克服甚至利用隨機性。
為什麼突然講這個呢?因為我覺得這款遊戲和人的奮鬥是同構的。
螢幕寬高比是人的先天條件。我從1920*1080的手機換到2400*1080,分數有顯著提高。
而玩法的三個境界則象徵著人努力的方式。很多人覺得我一直都是靠運氣的——他們以為他們看到了第二層,把我想成了第一層,而實際上我是第五三層。
我承認我不努力,至少在他們的主業中。有人說,我們還沒有到要拼天賦的程度,所以努力就對了。但是努力之外有運氣,還有天賦。努力的確帶來產出,但天賦能從另一維度提供幫助——它提高「性價比」。況且我不覺得利用天賦有什麼可恥的。
與天賦並列的是學習方法,對應前述「模式」。這些學習方法是在學習過程中逐漸獲得的,甚至受益於「元學習」,即如何規劃學習路線之類,都是我自己為自己完成的,我想這是同齡人中少有的。我的學習方法,所謂總結、歸納,聽起來是很虛的;如果我能把這些模式描述得清清楚楚,那麼我應該立即去學人工智慧。
我唯一承認的運氣就是本文的第一張圖。但是,如果沒有那張獎狀,以至於後來繼續競賽或從未學過競賽,考進清華北大或華師大——走了完全不一樣的路,我也會殊途同歸地用不一樣的內容寫一篇「運氣一直好,就不只是運氣了——記中學七年」。