耀賢's profile●PhotosBlogListsMore ![]() | Help |
|
July 31 Summer school 的成績七月初我參加中研院與台大資管主辦的FLOLAC (邏輯, 語言, 與計算) 暑期課程, 後來都沒聽到什麼消息, 打電話去問問學分證明的事情, 順道知道了我的成績.
分數我不要講. 等級應該算是 B 吧! 蠻差的, 不過有 80 以上.
後來, 發現我的戶頭有三千多元. 想起當時中研院的教師說, 這個課程成績在前面一半的可得到全額退費. 該不會是我這樣子也拿到退費了吧.
那陣子每天長程地來回, 且熬夜唸書, 寫作業, 總算沒有白苦一場.
但那個課程真的太累了. 現在想起來還覺得怕.
Dev-C++的程式專案安排Visual Studio.Net 安排專案的規矩: 針對一件案子, 可用一套方案來解決它; 一套方案由許多專案構成, 一套專案則由許多程式與資源檔構成. 這種安排方式大概是很自然又極正確吧!
我現在使用Dev-C++的方式, 是先將整套要做的東西建立一個資料夾做底, 裏頭劃分為 bin, rc, include, lib, src 等等子目錄. 基本上, 原程式碼都擺在 src 目錄, 但一些標頭檔都擺在 include 目錄. 有標頭檔就會有對應的程式庫. 程式庫是一些預先編譯的二進位檔案, 要擺在 lib 目錄. 我要編譯每一件程式庫或執行檔時, 都在 src 目錄中建立獨立的專案, 原程式碼目錄設定為同一個目錄, 標頭檔目錄設定為 ..\include, 程式庫目錄設定為 ..\lib, 資源檔目錄設定為 ..\rc. 編譯出來的目的檔擺在 ..\rc 中. 編譯且連結所產生的二進位檔案, 若是執行檔, 則擺在 ..\bin 目錄; 程式庫則擺在 ..\lib. 每個獨立專案的編譯與連結選項都要作這些細部設定, 做出來的東西很整齊.
以前當大學生都太隨便了, 用Visual C++開了程式檔就直接編譯, 每次都是用預先建立的專案與工作環境; 編譯完之後什麼都不要了, 直接拎著原程式檔與執行檔就走. 程式實習課應該多教教學生如何正確使用這些好工具.
今天在學校電腦教室把昨天做一半的程式寫完, 編譯通過了, 執行起來卻一直提出 0xC0000005 錯誤. 這個錯誤的意思是程式啟動失敗. 不過, 執行起來出錯, 我實在不知道它錯在我程式的什麼位置. 用Dev-C++的 debug 功能作半天, 都沒辦法找錯誤. 把整套專案資料夾帶回家, 編譯時就提出了編譯錯誤, 它說我用到了 new (int*)[10] 這樣的程式碼, 它沒辦法判斷我這個陣列要多大, 因為在資料型態 int* 左右有括弧. 它還建議我試試把括弧刪掉. 果然刪掉之後就通過編譯了. 不過, 之前我加上括弧只是擔心 * 與 [ ] 的結合優先權混亂而已. 解決的編譯或執行錯誤的問題之後, 我的程式跑起來沒什麼問題. 看起來, 許多時候除了程式碼要會寫之外, 搞定系統環境是很花心力的事情.
Windows程式命令列參數parsing的問題今日碰到的Windows程式命令列參數parsing的問題. 以前都沒想過這問題, 直到現在要用了, 才發現如果要寫還真耗時間.
程式命令列參數, 是指在Windows命令列中, 我們可以打dir /w /s這樣的命令, 其中第一個是某支程式執行檔名稱, 後面空格分開的符號則是命令列參數.
在C++裏頭, 由主函數 int main(int argc, char** argv) 二個參數, 可以取得這些命令列參數. 其中, argv是字串陣列, 而argc記錄argv陣列長度, 也就是記錄其有幾個字串. 存在於argv[0]的字串是程式名稱.
所以, 基本上, 懂得寫 if 或 switch, 要處理命令列參數不難.
不過, 命令列參數難的地方在於它的規則:
1. argv陣列包含這些型式的資料: 程式本身檔名, 程式所操作的目標檔案檔名, 尾接參數的選項, 無尾接參數的選項. 而且這些項目可以自由調換位置, 除了程式本身檔名必須在第一位置外. 例如 dir /s "C:\Program Files" /w
2. 尾接參數選項的選項與參數分別佔用argv陣列的二格, 但無尾接參數選項只佔用一格.
3. 命令列參數的識別符號與格式不同. Windows系統是以斜線(/)開頭作參數項目, Linus系統是以短橫線(-)或雙橫線(--)開頭作參數項目. 尾接參數選項的格式可能是 /label:value 或 /label value
初步想想, 要做個全盤皆包的命令列參數解析程式, 也許要使用到編器器設計的前幾個步驟, 包括字彙分析與切段, 說不定還要用到context-free grammar處理各種可能的參數格式.
前前後後看了一些資料, 聽說在Linux的C/C++程式設計可以使用getopt函數, 這是列在POSIX規格中的. 在Windows則罕見這類程式庫. 在CodeProject有人寫了XGetopt, 是在Visual C++ 6.0寫的. 還有別人寫了SimpleOpt, 做法大致類似, 而且讀取的命令列參數都走Linux風格.
我拿XGetopt來用用看, 不能編譯, 因為它是VC寫的, 使用到一個precompiled header稱為 stdafx.h. 我的工具是Dev-C++, 裏頭的編譯器是GCC, 開發執行環境是MinGW runtime. 因此把程式改了一些, 編譯成靜態函式庫, 丟到我的lib目錄. (順道一提, 以前當大學生寫程式的時候, 只知道把一堆檔案收集在一個資料夾裏頭, 資料夾一打開就看見一大批檔案, 都沒分類. 有經驗之後, 就知道大概按檔案的類型分為bin執行檔, include標頭檔, lib程式庫, rc資源檔, src原程式檔等各類子目錄. 在VC與Dev-C++等工具都有這些功能, 可以編輯專案的設定值, 把各類檔案的子目錄記錄下來, 當程式編譯好的時候, 直接把執行檔擺在bin目錄中. 整齊大方, 多好!)
但是本來以為這樣就可以編譯, 沒想到主程式先包含 XGetopt.h 再做一些 getopt 動作, 編譯結果是連結失敗, 訊息是undefinded reference 無法讀到哪個可對應到getopt的function signature的程式庫. 再仔細看一看Dev-C++專案選項的每一個項目, 發現原來編譯參數還要額外設定一個連結器參數, 我把lib目錄的XGetopt.a(Linux風格的程式庫大都是*.a, Windows風格是*.lib.) 加進連結器參數, 就通過編譯.
後來還發現一件小事, 雖然C++的各種詞彙大小寫有區別, 但是因為在Windows檔名大小寫沒有差別, 所以寫標頭檔的時候, 字母大小寫寫錯了沒關係. 我先把XGetopt編譯為程式庫的時候, 不小心把專案名稱設定為XGetOpt, 編譯出的程式庫檔名就叫做XGetOpt.a. 幸好是在Windows寫程式, 檔名大小寫還能被原諒.
July 29 PS "Wild ARMS" 2拜電腦規格持絮進步之賜, 最近在PC上復習七、八年前的PS遊戲, 發現有個蠻特別的RPG, 叫做 Wild ARMS (第二集). 玩起來就像是Square公司的 Final Fantasy 一樣. 不過, 我覺得它特別的地方不在於玩的形式, 而在於劇情.
故事大概是說, 主角阿修雷是特種部隊的一員, 有一次出任務要救一名被綁架的小孩, 辛苦找到綁匪聚集地時, 綁匪正好在閒聊. 阿修雷偷偷跟被綁架的小孩子打暗號, 要他引開歹徒的注意力. 結果這小孩子很會亂跑, 不小心觸動古代機器怪獸的機關, 本來要對付綁匪, 現在變成要對付怪獸. 阿修雷為了救人並顧全部隊的安全, 自己去宰了怪獸. 但他的決定違抗了部隊長的撤退命令, 因為部隊長本來想要撤退, 埋個炸彈把怪獸解決掉. 事件過去之後, 部隊長沒有怪罪的意思, 但為了對上司交待, 他安排阿修雷留守作反省.
等到阿修雷反省期滿, 他被改編入一支特殊編制的部隊, 該部隊稱為ARMS, 意思是 "臨時反應特殊打擊武力". ARMS建制時, 在郊區的 "劍之大聖堂" 舉行典禮, 並按傳統軍事典禮舉行拔劍儀式. 這把劍是古代女英雄 "劍之聖女" 所留下, 傳說若有人能拔起這把劍, 就會成為英雄. 有個聲音在阿修雷內裏叫他拔起這把劍, 但他拒絕了, 因為若拔起劍成為英雄, 代表這世界是混亂的. 在典禮之後有個餐會, 眾人正在輕鬆慶祝的時候, 突然從聖堂外有一股奇怪的力量迫近, 這支新成立的部隊, 每個人都變成了怪物. 變成怪物的阿修雷一路掙扎 (殺掉他許多變成怪物的同伴), 拔出了聖劍, 並在一片光中恢復原狀, 成為ARMS這支新部隊的惟一倖存者.
劍之大聖堂的事件, 是世界恐佈組織所進行的一項祕密實驗, 稱為降魔儀式. 事件過後, 貴族亞文救出了阿修雷, 並把他與另外二名成員編制為新的ARMS, 稱為Wild ARMS. 當阿修雷醒來時, 遇到Wild ARMS其中一名成員, 是個魔術技能很兩光的女孩莉琉香. 但亞文知道這女孩是魔女的女兒, 有足夠的素質. 召集了二人之後, 亞文宣布Wild ARMS的第一件任務是: 與第三名成員會合. 然後, 亞文覺得阿修雷的槍劍很特別, 向他借來看一看. 沒想到亞文一舉起槍劍端詳, 突然對天花板開了一槍, 把槍丟回給阿修雷. 亞文對聽到槍傷趕來的守衛說阿修雷等人意圖行刺, 把二人押送到監獄島.
監獄島是由世界各國共享共管的收監地點. 阿修雷被監禁, 並扣押武器. 隨行而來的莉琉香利用她可以自由行動的優勢, 把阿修雷的裝備偷回來, 並開始越獄. 在越獄途中, 他們找到了監禁在此處的第三名成員, 死囚犯布雷克. 布雷克是多年前被他國收押的死囚犯, 礙於政治, 亞文不能夠自己將布雷克調出監獄島. 由布雷克的口中, 他們才瞭解亞文用計送他們到監獄島劫出第三名成員. 但生氣的阿修雷見到亞文, 仍卯起來揍他一拳.
玩到這裏, 我覺得劇情真不可思議, 當主角變成怪物, 並一路上殺掉他的怪物同伴時, 在我這玩家心裏, 覺得主角應該是正在哭著殺掉同伴吧! 還有被誣陷入獄的時候, 真令人嚇一跳. 石中劍的橋段也留下伏筆.
後來劇情走到他們到了另一個國家支援, 對付恐怖組織. 恐怖組織的其中一名成員, 用 "對人戰鬥怪獸" 攻擊一個村莊, 並俘虜了阿修雷的二名同伴. 阿修雷受人質要脅下, 被 "對人戰鬥怪獸" 瘋狂地甌打. 在這劣勢下, 受到內裏劍之聖女的聲音鼓舞, 阿修雷身體又爆發出強大的能量, 發出強烈的光芒, 變身為黑騎士. 這又是嚇人一跳的劇情安排. 劇情一層層展開, 有層出不窮之感, 令人好奇這遊戲有什麼祕密, 有想繼續玩下去的動力.
July 27 學人讀書很快今天在中研院資科所meeting, 發現他們讀的東西又更多了, 讀得好快. 又知道了一項沒聽過的東西, dependent type. Meeting中, 最主要仍是一邊聽內容, 一邊聽學人們討論的方式. 我發現到一個特點, 在學校一般的討論, 大概都是知道什麼就胡吹胡湊地講. 但他們的討論, 一方面當對於所做的東西有深入的瞭解時, 他們會思考一些系統的性質. 另一方面, 他們也可以解釋有些東西雖然看起來比較好, 卻為什麼不拿來做的原因. 後者, 即使閱讀他人的研究成果, 也能做這番解釋. 另外, 則是當覺得資料不適合在當天場合簡報時, (因學門分野或層次的差異,) 寧可不說. 這令我感到驚訝. 他們的工作是學術, 對於學術他們也如此誠實. 回想到學校的遇到的人, 有時只是趕鴨子上架, 能投就投, 為了投稿而勉強做一些事情, 層次自然低了. 這使我想到了我們練體育技能, 譬如打排球, 程度不夠的人只能胡亂地嘗試各種技巧與勁道, 不懂得收勁. 程度夠的就曉得什麼時候能放, 什麼時候該收.
July 25 Abstract and rigorousI'm reading Greg Restall's book "Logic: an introduction." It looks like a storybook with a light-painting cover. The author gives a word to students: "So, the techniques of logic are abstract and rigorous. They're abstract, since we concentrate on particular properties of reasoning that are relevant to our goals. They're rigorous, since we try to define all the terms we use, and we take our definitions seriously." (pp.1-2) When I was an undergraduate, I was not always take things seriously. Yes, I may read it loudly and seriously, but I didn't take serious thinking. Actually I always think slowly. And when I tried to write some things like the structures on graphs or finite automata, I could not take all the terms well. [Take a look on that Dr. Wang and I encounter in meetings. A term may be written and its interpreting is gave. But she ignored it and change it as another meaning, and it is not the case that I want. I am confused. Is it so called "research"? Why can she do it non-seriously? I tried telling her the meanings of the terms, but she didn't accept them! Then I'm not sure if I can take them seriously, and even I'm not sure if I can write right things. Why can she reject all my research only by treating the logic symbols as false? What IMPORTANT is those I want to solve but the dead symbols.] July 24 淺談研究對於研究的看法, 我一直抱持著與工作不同的態度. 我並不希望研究內容與未來的工作著實相關, 也不期待研究是個像普通工作一樣的東西 - 工作中的專案, 當你定下計劃時, 幾乎知道它是個什麼玩意兒; 但研究不是, 如果你可以預期研究範圍如何, 或許這只是個 "me too" 研究, 或是研究範圍小到不算是一份研究.
這大概是因為我在大學時期早就將我未來的工作能力準備好了. 我一點也不擔心我的工作能力, 而且我知道工作是什麼, 因此當我決定要唸研究所, 所想的就是去認識研究本身.
然而, 到現在我還摸不著研究是個什麼玩意兒. 為什麼老師要我寫個文件投稿, 我隨便寫出的東西幾乎就被認可. 但同樣的東西, 給另一位老師看卻得到再三挑剔的結果, 一件顯然未完成的事物, 被批得的建議是: 此項事物未完成. 我不知道這何以稱為研究? 就連多討論一些與研究內容相關的東西, 似乎都不可以. 因為當我提出與我研究內容有關的東西的時候, 老師卻將它定義為岔題, 與主題無關的事物.
以上抱怨完畢. 接下來講講我碩士研究的內容.
我想處理眾所周知的最短路徑問題. Dijkstra跟這個問題有關係, 甚至演算法以他的名字命名, 但是, 因為這個問題眾所周知, 且Dijkstra的學術貢獻並不以此為主, 我盡量不要將Dijkstra與最短路徑問題作強烈連結.
最短路徑問題的解決, 是在靜態有向圖中, 決定最短路線該是哪一條的方法. 這個方法有個問題, 就是實用路網都是自主動態的, 當你決定某一點S與另一點D之間的路線之後, 按照計劃走了一個路段, 假設走到A點, 此時已定案最短路徑的A點到D點之間, 可能不是目前最短路徑了. 因此就重算囉. 這樣造成的計算重覆量, 若路網是由A-B-C-D四點構成一條直線, 令spq/2函數為接受二個節點, 傳回二節點最短路線的計算量, 則由A點到D點的最短路徑計算量為: spq(A,D) + sqq(B,D) + spq(C,D) + spq(D,D), 其中spq(D,D)是1, 而往前項逐項增加. 這個路網很簡單, 看起來是前項與後項的計算量比呈現級數式的等比例, 但是路網分岔多一點, 計算量的差異不容忽視.
我想要做的是, 將最短路線問題的解決重構, 看看能不能在時間考量上做動態的演算, 且如果有前述的重複計算, 則想辦法化簡計算量.
我的構想劃分為二個方面, 一方面是邏輯驗證, 另一方面是實作. 整個系統概分為二部份: 自主性的交通路網, 與選路計算單元. 交通路網可視為一個傳遞系統, 最近正在讀Gordon D. Plotkin的Structual Operational Sementics, 第一章提到架構傳遞系統(Transition System), 可用來描述路網結構. 選路計算單元是在交通路網中運作的實體, 擁有獨立的記憶體, 處理器, 以及決策空間. 選路計算單元負責操作選路演算法, 而交通路網的傳遞系統構成計算環境. 選路計算單元的運作, 則由操作式語義(Operational Semantics)描述. 這二個部份各自運作且彼此配合, 都是動態的, 因此必須用模擬方式或Model Checking方法來檢驗正確性.
著名的Model Checking軟體有SPIN與NuSVM, 前陣子在FLOLAC聽王柏堯老師提起, 就不贅述了.
決定使用模擬方法, 是因為真實路網中有許多變化的東西: 路網環境是隨機但又有規律變化的, 且選路者的決策方法是模糊的. 這些變化又與時間動態有關. 因此我需要有個跑起來的系統, 會列出許多數值, 提供模型檢查.
目前是這樣子. 這個方法會不會做對? 我不知道.
July 22 自印週六下午我打算印一份文件, 印完之後作膠裝. 結果沒注意到排版, 把書印錯了. 現在我那本文件超奇特, 頁碼都靠內側夾縫.
那份文件排得比較簡單, 第一頁是封面, 二, 三頁是目錄, 第四頁開始是本文. 正確的印法應該是封面單印, 目錄合印一張, 本文從第一頁開始兩兩合印一張. 但我直接設定雙面列印, 印出來的是封面與目錄合印一張, 目錄第二頁與本文第一頁合印一張. 其實, 若顧慮到列印的方便, PDF檔案應該把封面之後多插一張空白頁.
我印資料的地方是在台大醫學院宿舍對面的四海影印店 (台北市林森南路41號1樓). 暑假到了, 店裏有位好可愛的小女孩 (3-5歲), 是店主的女兒. 我盯著她瞧她也會盯著我瞧, 馬上躲起來. 以後要常去逗她玩.
July 20 病痛後記今天還是覺得病況很糟, 主要的問題是後期症狀. 我感到喉嚨好癢, 一直咳, 咳了很久才咳動一點痰. 結痰應該是病要好了. 不過我這痰可結得濃呢! 咳不動.
再來, 雖然一直喝水, 卻覺得好像喝得不夠. 因為我平常身體有一個症狀, 稍微累或稍微乾的時候, 耳咽道會被一股氣 (或是液體? 我不知道) 哽著, 無法控制地拼命打呵欠, 但呵欠卻沒辦法把那股滯塞物 (氣或是液體) 排除. 這個症狀對我造成直接的影響, 是如果充塞感太強, 我耳朵裏頭會痛, 聽到聲音就覺得痛.
不要叫我多休息. 因為這種症狀, 我不知道該怎麼休息. 通常那些開口慰問我, 叫我好好休息的人, 他們都不知道他們的聲音正在造成我的疼痛. 這症狀發作時, 對我最好的處置其實是不要打擾我, 因為我會想辦法讓自己能睡一睡或躺一躺. 有些人很雞婆說要幫我安排休息處, 或是開口勸我好好顧身體, 其實那些言語應對的打擾, 會對我造成非常大的壓力.
另外是回想到我碩士研究的討論時間, 總是讓我感到衝突, 似乎只要犯了一點點錯就要被全盤否決. 難怪我做不完嘛! 每次我明白地跟老師說, 我所列的這一些式子並不完整, 隱含的意思就已經是 "它是錯的". 結果我得到的建議卻是: "它是錯的, 一眼就看出它錯." 廢話, 我早就指出它是錯的, 因為我想要聽到的建議是: 如何讓我那些式子能夠寫對. 我所受的邏輯訓練並不完整, 在學校根本沒上過這些邏輯課程, 但在研究中卻被要求我寫出的一點點雛型 "都要是對的"!? 這根本不切實際! 我如果全都寫對了, 那才有鬼呢!
到底有沒有人懂得我的需要啊? 我需要的不是天生能取得100分的素質, 而是幫助我, 給我能夠從90分進步到100分的能力. 但別人總是說: "你的素質不到100分喔", 這算是哪門子的建議? 講了跟沒講一樣.
July 19 Windows系統程式設計正在看一本 "Windows 95系統程式設計大奧祕" 這書, 是完整電子版(正式公開授權喔, 不是盜版的). 記得是在大一的時候, 程式設計助教轉這個檔給我. 那時候我不知道珍惜這種資源. 我現在有個工作, 必須在Windows底下讀取系統資源, 並測試一般程式執行速度. 看起來, 讀Windows 95的書是太過時了, 但就作業系統架構來說, 或許差不了多少. 我的老師Lee, TY甚至借我一本1990年版的 "PC System Programming", 裏面講的是DOS呢! 但實際上, 根據許多的程式設計與軟體應用經驗, 寫Windows XP程式, 與寫Windows 95程式或DOS程式相較之下, 差別很大. 而從系統程式設計方面來看, 我們看的不是哪個Windows版本的差別, 而是哪一套Windows程式庫的差別. 看起來較晚近的Windows各版本似乎都使用了Win32程式庫了, 這個程式庫就是我的重點. (嗯...大概吧; 我不確定透過API呼叫作業系統一些服務, 是不是稱為system clall.) 很急, 動作再慢一點, 恐怕老師要罵人了. July 18 養病結束度過了一天持續控制代謝與休息的日子, 今天病快好了, 但咳嗽時頭頸側有點痛.
下午去新店附近找指導老師討論, 將FLOLAC的內容交待過去, 不少處陷入各自表述的情況. 語言與對話基礎是多麼麻煩的東西, 在認知與解釋不同的情況下, 說要交流其實不容易. 不過, 可聽得老師在古典邏輯與第一階邏輯的基礎相當實在.
接下來是一連串爭戰了, 繼一密集課程與一病之後, 積欠的功課相當多. 今天看一看程式設計, 明天要看一看邏輯語意. 櫃頭有二十幾本厚書, 但暑假算已經過了六分之一了. 真惶恐.
July 17 病痛記又感冒了. 噴涕稍微打不出來時, 身體就晃來晃去, 藉著微弱的氣流讓自己感到有點涼意, 把噴涕逼出來.
夏天著涼是很麻煩的, 記得去年六月, 在處理期末報告的那一週, 我也感冒了, 而且很嚴重. 那時候是在六月的某一天突然變得寒冷, 當天我感到雙腿無力, 就知道已經著涼了. 高中時曾經中過A, B, C混合型的感冒, 特徵也是全身無力.
僅管每天都覺得很熱, 一旦著涼, 身體就呈現戰備狀態, 再怎麼悶熱都甘願, 甚至痛恨此時在身旁開冷氣或風扇的人. 去年那時我為了把身體逼汗逼好, 穿上長袖衣物, 造成脖子上起疹子或汗癬, 長了一年多. 最近有空, 我才開始好好擦藥; 藥力真有效. 平常太忙了, 擦了又熬夜搞到滿身汗, 就會覺得癢. 治病的時候, 還是得讓生活步調清閒較好.
上次那一病, 一週之內該準備好的二篇報告實在無力準備好. 老師蠻事不關己地笑說讀paper讀一半, 但生病確實讓我領悟力下降很多, 讀了也不懂, 那是關鍵因素.
這次也不很輕鬆. 放掉所有的事情且努力參加FLOLAC之後, 其實那些事情都該再拿起來. 但目前病中又失去了許多領悟力. 該怎麼辦呢? 老師可能會責備我動作太慢, 同樣的東西現在也許別人已經做出來了. 但問題是, 第一, 在生病的情況中很難勝任這些工作, 第二, 僅管老師有這樣的要求, 但事實上我沒有實驗室的環境, 沒有足夠的資源, 寫程式的經驗又找不到人可以交流. 我不曉得我該怎麼做. 感覺每次都被要求要短期內產生足夠品質的成果. 但過去幾個月我每週都只有一天可以處理這些事, 該怎麼進展?
無法處理了. 今天覺得眼窩好痛, 鼻咽也一直有奇怪的感覺. 一直努力喝水促進代謝, 把充滿病菌的噴涕逼出來, 我只能做到這樣.
下午化了一點痰, 似乎好了一半了. 明天與指導老師的會面不曉得能不能完成.
July 16 規劃這個暑假, 是我大學與研究所生活加起來的, 第一個完全沒有事情的暑假. 嚴格來說, 也不算是個暑假, 因為此時我的學業課程都已經完畢了.
當時大一度過了一個稍微空閒的寒假... (其實也不空閒, 因為那時候有一個打雜性的工作, 在學校的印表室) 之後投入了資訊中心的工讀生工作, 就這樣度過了每一個長假. 那時我覺得工作就是我生活的一部份, 別人都去玩了, 我可以一直保持著上線的狀態.
後來發現, 很失望, 僅管從大一就有獨立工作的能力, 卻始終被當成工讀生. 工作的內容不被重視, 工作的辛勞不被重視, 工作所需的周邊環境不被重視. 帶著被否定的感受, 從碩二開始決心要離開這間學校. 雖然我是這學校的學生, 但我不認為我是這學校的奴才. 學校的工讀體系眼界太過狹礙, 覺得你這人好用, 就只想把你綁下來. 所以, 碩二下我到了中央研究院, 甘願以大學畢業的資歷作工讀生, 因為這是憑我自己的能力在闖蕩江湖.
覺得日子好清閒, 好久好久, 才能夠在暑假的下午在自己的床上睡午覺. 早就覺得事情被安排得太多了, 甚至在一份時間裏被要求要有二份工作產量. 這樣是不正常的, 但再怎麼自認為開明的雇主, 當你對他抱怨這問題, 他仍希望儘量不要撤減你身上的工作. 當你對他說: "工作太多, 時間不夠", 他只會回答你說: "那你要管理你的時間", 卻絲毫不瞭解, 你早就充份地管理好你的時間, 且因為確實沒有足夠時間才對雇主反應. (意思是雇主是白痴嗎? 在我所遇見的情況, 我可以回答: "是, 沒錯". 因為他白痴到連自己做了錯誤的工作配置都感受不到, 而因為他感受不到, 所以通常他自以為精明.)
然後就是規劃時間的問題了. 接下來有許多的事情要做, 但其實許多事情所須知識是要看過很多書, 經過一段時間的消化之後, 才徹底了解解決方案. (你總不能一邊抄書一邊寫程式吧?) 但我唸書的速度的確慢呢! 不曉得還有多少精力.
結束FLOLAC課程之後, 一清閒下來, 我不小心讓自己吹風吹到流鼻水了. 哎, 感到好累, 沒有體力. 接下來的首要事是調養身體.
July 13 FLOLAC '07結業這次感到很開心, 能夠參加 "邏輯, 語言, 與計算" 的密集課程. 在其中, 得到一項重要的知識體系的開啟. 而且驚然發現, 邏輯學與數學是不同學科. 在邏輯學的領域有太多漂亮的證明, 各種公設系統有很好的性質, 並且藉由一板一眼的推導或論證, 可加以擴充. 在程式領域有一套書叫 "The Art of Computer Programming". 在邏輯與數學領域也有一套書 "Principia Methematica". 此外, 講義還有許多值得閱讀的書籍與論文, 目前開始想要閱讀. 雖然被操得很慘, 但是學得很快樂. 謝謝你們. July 12 FLOLAC '07的結束今天下午是FLOLAC summer school課程部份的結束, 基本上覺得非常有幸參與這項課程. 我相信這課程內容勝過許多大學的正式課程, 而且大家總是拼命每天準時交作業. (但還是為了把我們搞到每天熬夜抱冤屈.) 除了聽課之外, 重要的是觀察到這些學人的專注, 熱忱, 以及有效, 有耐心, 並詳實的溝通方式. (另一面我也覺得這些人像是妖怪, 可以從早到晚持續討論學問.) 缺點可能是, 這短期的疲勞轟炸, 可能來得快, 去得也快. 許多課堂上講解感到精采的地方, 其實回家了或到了隔天, 會忘了原講者是如何說明這項東西, 而留下的只有對於 "精采" 的推崇感, 或是一些愉悅的印象. 因此, 雖然明天要期末考, 現在才是開始好好唸書的時候了. 應該要把講義整理一下, 參考書目翻出來, 花一, 二個月讀那些邏輯, 型態系統, 程式推導, 證明理論, 以及模式檢查等方面, 較詳細的書籍. 我打算跟我的指導老師Wang, MT報告這些講義, 她會很喜歡這些玩意兒. 不過, 麻煩的是, 她可是看到一點陌生的符號就會大肆質疑的人, 對話也常常太急燥, 讓我連第一句解釋的話都講不完. 我希望這些講義在我們將來的研究中有用, 祝我自己好運. July 10 努力不等於不眠不休Summer school已經進入 "第二學期", 也接近尾聲. 到此的感想是: 1. 像這麼短的課程, 如果真沒有時間消化, 各種作業與考試其實是在考臨場反應 - 你剛聽完一些東西, 立刻被要求要給出一個正確的回應. 2. 就時間來說, 實在太短, 短到可能我們上午一堂課沒多少休息時間, 中午可能吃了飯還在想該怎麼寫作業, 下午卻在沒有足夠休息的情況下繼續接受新內容. 耗盡心力! 這樣子, 我們難以決定晚上回家之後, 是要花很多時間睡覺補充體力呢, 或者是勉強唸點東西. 並不是勉強展現出一時的拼勁才是努力. 對唸書來說, 睡覺也是一件重要的過程, 因為睡眠中知識才可內化. 今天課後的心情很不好, 早上的課間不該花時間跟他人討論的, 搞得聽課聽到快撐不下去, 身體疲乏, 真沒意義. July 09 作業上週一summer school開學就讓我熬整夜寫了作業, 今天週一凌晨也讓我熬了夜趕作業. 不過, 並不是作業累積著不做, 而是反覆做了好幾天都沒做完, 最後仍是辛苦熬夜收場. 在休息的時候, 無主動意識的思考中, 想起了當初報名參加summer school的心, 是想得到真實的知識, 而不是為了學分. 但現在卻變成盡力寫完作業似乎比上課重要, 而一旦作業寫完, 休息的時間到了, 而不是唸書的時間到了. 再加上這個課程有一項鼓勵學習的誘因, 就是成績排名在前一半的都全額退費. 其實這誘因早變相了, 許多同學都一邊在咒罵中與作業周旋, 且一邊想著要收回來的幾千元學分費用. 我實在不想這樣. 我想要好好地沉浸在, 並體認著邏輯學的美感. 也許翹個幾節課好好找資料, 好好讀書, 才是應該做的事. July 08 Summer school第一週這週與下週參與一門暑期課程FLOLAC(Formosan summer school on LOgic, LAnguage, and Computing, "邏輯, 語言, 與計算"), 是由中央研究院資訊科學研究所與台灣大學資訊管理學系合辦, 掛在台大推廣部作為碩士學分班. 在中研院資科所上課. 第一週科目依序是邏輯, 函數式語言, 程式推導, 型態系統. 週五下午由董世平老師演講戈德爾不完全定理. 其中函數式語言與程式推導是我已經熟悉的, 算是佔了優勢. 在這些課程中, 我覺得最感興趣的是邏輯. 這位邏輯課老師名叫Max, 是奧地利來的, 目前在中研院資科所作助理研究員, 中文與英文都很好. 他講邏輯使我感到非常有系統性, 一下子就能夠深入掌握邏輯學的幾個大部份. 他能夠清楚地將每個邏輯系統的符號, 論證, 以及推導過程相當清楚地提出來. 而且表達上是適當的. 而其他課程在每日的操勞上課之後, 較難很快地消化. 沒有教科書可能是個問題. 而且車程消耗的身心力並不小. 也許這樣的課程應該拉長期限, 多一些課間復習的時間. 週六這個好週末, 週六一天我去學校, 發現圖書館休息. 哎呀, 暑假是週一到週四上班, 但我summer school週一上課到週五. 然候待在學校推導程式. 嗯, 不是推導公式, 因為我們學的課程是 "程式推導", 真的是用推導的方式就可以寫出程式. 推了一個下午沒解出一題證明, 哎, 思路哪裏塞住了. 也許要多看看數學或邏輯證明的書籍. 然後趕到天瓏書局下手買一本Logic in Computer Science, 標價新台幣1850元, 比以前買過台灣代理的英文書都貴. 以前能接受的價格以1200元為上限. 買過那麼多英文書, 發現電腦科學書的通則是, 教科書都比1000元多一些而已, 有些小本一點會900元多一些. 但是一般研究需要的與先進研究方面的書會是1500~2100元之間, 例如CNN(CA(細胞自動機) + Neural Network(人工神經網路)), 以及我剛買的這本Logic in Computer Science. 稍冷門會在2500~3500元之間. July 06 Summer school的週末第一次覺得週末如此可貴, 這週真是被操怕了. 但下週更操, 因為是 "期末考週", 前四天照樣上課, 寫作業, 唸書, 第五天考試. 今晚(週五): 寫 "程式推導" 作業. 週六上午: 唸 "型態系統". 週六下午: 寫 "型態系統" 作業. 週六晚上: 作自己的研究. 週日: 唸 "邏輯". 我怕自己考不好, 因為邏輯唸得不好. |
|
|