怎麼回事呢?原來,他幫項老師做計畫(寫程式),詩沛請他幫忙處理一些古籍 metadata 與文件之間的對應。然後... 他也碰上一大堆「不該有」的問題,隨便列舉幾個:
- 原先以為文件都是 Unicode Little Endian 編碼,處理後才發現有的文件依然是 Big5 編碼。
- Metadata 是用 Excel 編寫的。如果從外部呼叫 Excel 的Automation 元件,每個欄位的長度不能超過某個值(他有說一個數字,但我忘了是多少),但剪貼並不會有這樣的問題。於是,他只好先將 Excel 檔的內容匯出,然後再自己剖析 (parse) 輸出的文件。
類似這樣的 Excel I/O 問題,屹靈(實驗室碩二的學弟)和我都曾經碰到過。只是,解法雖類似(都先從 Excel 匯出檔案),但因為目的不盡相同、使用的程式語言也不太一樣,寫出來的程式(或格式轉換工具)彼此是不能互通的。(永倫也曾碰到反向的問題:產生一份 Excel 可讀的檔案。) - 要寫剖析的程式,當然得先知道輸入字串的格式(或語法,syntax)。問題是,有些地方會出現莫名其妙的分斷字元或符號,而這些字元該如何被處理,往往需要重新檢視 Excel 檔的內容,然後以「經驗」再加上一些「Common Sense」來決定該怎麼做(直接捨棄這個字元、還是這個字元前後代表不同的欄位... 等等)。
這表示,程式得因為這類「不在預期中的小問題」一改再改,程式碼最後可能會變得雜亂或醜陋,而增加日後維護的困難。
厲害些的人,遇到這樣的問題,會知道如何去處理(但通常還是會抱怨、嘆氣、或苦笑一番)。實務經驗比較缺乏的學弟妹們,遇到這類「煩人的瑣事」,往往就會被卡住幾個星期、甚至數個月。
所以,會不會覺得很奇怪:處理 THDL 的資料,怎麼會遇到如許多的問題?
我認為,一個複雜系統之所以困難,有很大部分是來自於合作的挑戰,以及對「未來之不可預期與不確定性」的一致期許與規劃。這應該也是軟體工程所看見的問題與挑戰吧(當然,還有「降低成本」的挑戰。「工程」就是要在現實的環境下儘可能地滿足需求)。
4 則留言:
我還是老話一句, 先有架構是很重要的.
不過事已至今, 你們可能先要有一個論壇, 然後留下一些討論過的足跡, 讓後人遇到問題時先看看前人怎麼辦
哈哈,我猜短期內應該不會有太大的變化。
既然是學校(實驗室),就算很多人都「重覆遇到類似的問題」,也可以看成是「學習」的過程 :)
然而進步乃是因為我們遇到和先人一樣的問題時, 不必再跌一次而可以踩著先人的血汗跨過去啊.
學習整理出問題的重心和思考的過程,也是一種「學習」的過程 XD
有趣的地方,也就在此啊。
基本上都是「學習」。所以,或許該問的是:怎樣的學習會比較好、比較合適?
因此,只要不牽涉到「效率」的考量,我又有什麼好抱怨的呢? :)
張貼留言