追求神乎其技的程式設計之道系列:一二
三四五六
七八最近被很多人提醒這個神乎其技系列停在第八集很久了…(汗)。
其實這集草稿已經存很久了,今天總算決定要把它告一段落後貼出來。
先來個題外話,台灣最近遭受莫拉克颱風帶來的巨大災難之苦,雖然我人不在台灣能幫上的忙很小,但還是希望災區的所有人都能平安度過這次災難。
春天的國際科展結束後,我的高中生活也即將劃下句點。
回顧高中三年,從校內的資訊比賽一路走到奧林匹亞的國際舞台,在保送大學資格的保護下,到高三又誤打誤撞變成國際科展的代表。
雖然從結果看來一切都是如此美好,但在我剛公升上高中時,沒有人知道未來會發生什麼事。
我爸媽只想要我好好念書,考上好大學;而我對學校教的科目早已失去興趣,每天都只想泡在電腦前探索這個神秘盒子的內部。
於是每次考試結束,家裡就會因為我的爛成績而引發一次大戰,我爸媽也會一再的限制我坐在電腦前的時間。
就像七龍珠裡的標準情節一樣,悟空總是可以和敵人奮戰到垂死邊緣才爆發出最後一擊取得勝利,我總覺得在逆境時才能看出乙個人真正的意志力和求生能力。
雖然我爸媽能不斷縮減我能用電腦的時間,但他們可沒辦法限制我在學校做什麼或是面對課本時心裡到底在想些什麼。
我還記得高一時,我天天都帶著introduction to algorithms(當時還是第一版,很多人叫它***)到學校,不管上課時老師講得多麼口沫橫飛或是下課同學們玩得多開心,我都是看我自己的書。
有時碰上管得嚴的老師,我就不看書開始想acm的題目,用筆在白紙上寫code。
我還記得當時為了手邊要隨時有充裕的題目可以想,我把acm online judge上所有的題目全都印了出來放在乙個資料夾裡隨時帶在身邊。
現在想想我那時瘋狂的程度真是難以想像,我當時心思幾乎完全沒放在學校課業上,就連體育課我都躲在樹蔭下想題目的解法。
於是到了要公升高二選類組時,家裡又爆發了第n次的世界大戰。
還記得公升高二前有個考資優班的機會,我爸媽非常想要我去考考看,但我死都不答應。
我很堅持的原因是,中一中的數理資優班非常奇怪,進去後就自動變成第三類組,也就是要多念一科生物,但我已經很確定未來我只想念資訊相關的科系,所以我只想選二類,不想浪費時間多念一科生物。
就為了這件事,爭執的戰火延伸到我花太多時間在電腦上未來會考不上好學校之類的陳腔濫調上。
台灣父母似乎都想要孩子選擇他們覺得的安全、穩定的路,但我大概天生叛逆了點,說什麼都只想堅持自己的路。
不管成功的可能性有多小,或是風險有多大,我覺得我就是應該照著心中的聲音去走。
跟他們吵了一陣子後,我決定跟他們立下乙個約定:讓我完全自由到高二,如果我沒辦法在資訊比賽拿到夠好的成績足以保送大學,那我到聯考前就都不碰電腦,即使我考不上大學也是我自己的決定所造成的。
從此以後,我就更認真的拼命研究演演算法,研究歷年來所有大大小小資訊比賽的題目,只要我醒著的時間,腦袋就全速運轉放在這些東西上。
雖然理論上我應該是背水一戰,但那時心裡其實沒有太大壓力,反而覺得可以每天都在玩自己有興趣的東西很幸福很開心,如果比賽結果不好,那可能只是說明我沒有這個天份和這個命而已。
現在回想起來,我覺得當時的我真是不怕死到了極點。
要靠資訊比賽保送,至少也要進入奧林匹亞的培訓營,並成為留到第二階段的最後十人之一才有機會(有機會的意思是大學有可能會拒收…)。
簡單的說就是實力大概要在全國高中生的前十名就是了。
我想我當時一定沒有想這麼多,只傻傻的做自己想做的事,所以才會這麼有勇氣立下聯考前都不碰電腦的可怕約定。
還好我運氣很好,上了高二後從第一場校內賽就把我累積一年的力量爆發出來,就這樣一路打進培訓營甚至還選上國手。
順利拿到保送資格後,父母松了一口氣,於是就完全放任我花更多時間泡在電腦裡了。
到高三時,我誤打誤撞說要參加國際科展,於是就有了正當理由請公假,各科老師對我的缺席也見怪不怪。
高三我幾乎每天都待在教官室裡玩linux、架各種系統和server來玩,雖說要做科展,但其實也是對什麼有興趣就玩什麼。
(可能很多人覺得奇怪,為什麼會待在教官室… 因為教官室是少數有電腦有網路,我又能自由進出的地方。再加上當時有教官找我幫忙做**,所以….)
到了要畢業的時候,我才發現我高三幾乎都沒踏進教室過,班上的同學我也幾乎都不認識。
雖然在自己的世界裡過得很開心,但要畢業時才發現我的高中生活和其他人都不一樣。
班上老師們對我也頗有微詞,所以畢業前我還碰到了乙個可怕的畢業危機:我高三的學科被當了九科……。
(現在想起來還真難想像,到底有哪九科啊orz…)
這件事大概是我一帆風順的高中生活中最驚悚的一件事了。
雖然台大已經張開手等我進去,但要是高中不能畢業,那我不就變成比櫻木花道還悲慘的笑話了嗎…。
(注:櫻木花道在全國大賽前發現被當太多科無法參賽,所以只好閉關念書準備補考,當然最後還是順利過關去參賽,不然灌籃高手就畫不下去了。)漫畫中的主角當然不會被要補考這種小事打倒,但現實生活中誰知道呢… orz
在畢業前遭受到如此巨大的危機,實在完全出乎我的意料之外。
還好當時帶我們參加比賽的指導老師非常挺我,幫我跟各科老師要乙個補考的機會。
學校也很好心不打算找我麻煩,就讓我把考卷帶回家寫一天。
隔天交出去後我就沒再得知過關於成績的事,我什至不知道我畢業時每一科的成績,但總之我還是拿到畢業證書了(汗)。
回想起年輕時的瘋狂,真是覺得很不可思議。
如果我當時沒有堅持自己的想法,而依照爸媽的意思「好好念書」,我想現在的我一定過著完全不同的人生,至少不太可能憑聯考進入台大資訊系,而現在也不會在mit了..。
(待續)
追求神乎其技的程式設計之道 四)
2000年ioi在北京舉辦,這年台灣的代表隊成績還算不錯,拿到三銀一銅,比較可惜的是我第一天表現不理想而落到了銅牌,雖然不至於兩手空空無顏面對江東父老,但也知道自己的實力大概就在銀牌和銅牌的邊緣處吧。ioi結束後,我又回到了學校,但因為已經取得大學保送資格,在學校其實也是輕鬆寫意,成天就看自己的書或...
C指標程式設計之道 第九次筆記
這裡說的是指標在演算法中的應用 直接選擇排序 每個排序的演算法都是指標的方便性的特點來指向每個元素進行交換等 這裡的基本思想是對待排序的記錄進行n 1次選擇。第i次操作選擇i大 小 的記錄放在第i個 或者n i 1 個 位置上。即每次都將乙個記錄放在它最終的位置上,這就是所謂的 各回各家 inclu...
程式設計之道,程式是這樣寫的
當你開始開啟事件寫 的時候,你是在過程階段。你學會把業務邏輯通過過程的一一對應關係,存續漸進地描述乙個事物。接下來你開始使用執行緒,它往往不是應用於乙個過程流,它是復合運作的,你必須很好的去控制它。於是你學會封裝,把一些常用的方法函式通過面向對像,把它例項化,抽像化,模組化,並通過記憶體共享,或者w...