字體:小 中 大 | |
|
||||||
2019/03/25 07:20:00瀏覽3762|回應4|推薦48 | ||||||
自寶貝女兒上資管系以來,每隔一兩週都有程式作業。因為是做老爸的本行,上學期每逢週末都坐鎮家中備詢,好久沒出門,悶得慌。這學期開學才兩週,作業又來啦!老爸早已安排南下,於是交待寶貝及早進行,免得沒人可問。可是大一學生啊!正是享受人生的年紀,跑社團忙外務,無論如何,作業都是拖到面對死亡線(deadline)才開始。老爸週六清早睡醒準備出門,發現女兒傳來的訊息:「55555555….(嗚嗚嗚嗚嗚),這次作業好難,只有六分(滿分六十)」。 無奈啦,只好帶上筆電,路上慢慢看,下車前給點提示和範例,教她先自己努力,晚上進旅館再說。其實晚上本來準備夜拍,難得南部下大雨,乃是上天安排老父救女來著。剛入住就打給小傢伙,結果:「55555555,還是只有六分,而且程式輸出根本不對,只是剛好矇到而已」。 先說明一下作業型態。程式題有一份很長的文件,說明情境並規定輸入輸出格式、測試資料有多少筆、各佔多少分之類。學生用 C++ 語言寫好程式,上傳到學校網站,通常幾秒鐘內會得到回覆。剛開始多半是「編譯錯誤」或「執行錯誤」,表示語法或邏輯有問題;慢慢變成「答案錯誤」,算是漸入佳境;最後得到「Accepted」,就是通過,得分啦!然而系統只評分數,並不會指出錯誤在那裡。 上學期剛開始,小傢伙都是直接寫好程式,馬上丟進評分系統測試,根據傳回的錯誤型態進行修正。題目簡單,程式短小的時候,這樣做還可以;期中以後,程式愈寫愈長,也愈來愈複雜,我就告訴她不行,連「編譯錯誤」在那裡,都要反覆推敲,太沒有效率啦!建議她找一套開發工具,行話所謂 IDE,至少能快速走過「編譯錯誤」和「執行錯誤」階段,省很多時間。可這小妮子,不知自恃聰明還是懶得嘗新,始終沒放在心上,居然一學期也這麼過了。儘管期末作業真的頗為吃力,被老爸嚴重警告,卻依然不為所動。 下學期一開張,就有一定複雜度。老師給了兩週時間,這傢伙依然拖到截止前三、四天,才心不甘情不願開始動手。結果光是「編譯錯誤」和「執行錯誤」,就搞了兩天,包括老爸南下之前,熬到大半夜。 我說這怎麼成,兩三天工夫只排除語法邏輯錯誤,輸出完全不對,其實是零分,表示有肉眼無法察覺的重大瑕疵。無論如何要教她學會如何操作開發工具,否則別說這次陣亡,以後只會愈來愈慘。老爸比較趁手的是微軟的 Visual Studio,可沒想到官網下載的 VS2017,簡直肥得不可思議,一兩小時居然裝不起來。教小妮子問學長同學,看人家都用什麼,結果下載一套 Dev C++,至少很快可以上手。 不過這玩意兒老爸就不太熟啦。雖然編譯除錯工具大同小異,可慣用的 hot key 之類卻不大一樣,只好一邊解釋用法,一邊教她自己去找出來。接著父女倆南北兩地同步追蹤修正,怪的是,老爸這邊已經可以吐出結果,小傢伙卻連測試資料都讀不到(註)。雖說老爸用的是 VS ,但基本的 C++ 應該沒啥差別才是。在這關節上卡了近一個鐘頭,惱得老爸差點爆粗口。 註:學生程式只須經由 console (cin / cout) 進行輸入輸出,學校評分系統則以 pipeline 接續。在家抓蟲必須自行建立這個 pipeline,通常以 file stream 取代 cin,也就是由文字檔讀取測資的意思。 所謂測資,是由題本抄下的範例,存成文字檔,當作程式的輸入。小傢伙雖然寄了原始碼,卻沒把測資一併寄來。好在沒幾行,老爸自行複製貼上存了檔,結果竟然南轅北轍。搞半天不得要領,忽然靈機一動,把我存檔的測資寄給女兒,讓她試試,不料一試就靈,差點吐血。原來我老人家用骨灰級編輯軟體,存的文字檔是 ANSI 編碼,也就是 ASCII;小傢伙用 Windows 10 內建記事本,預設存檔是 UNICODE 編碼。猜猜 C++ 這種侏儸紀語言,吃的是什麼編碼?倘若用 C# 或 Java 之類,就不會在文字編碼上頭鬼打牆了。 接下來一段段帶小妮子抓蟲,慢慢修正,終於範例測資順利通過。雖然評分系統依然只給六分,至少是實在分數,而非湊巧矇對。此刻已然午夜,透早出門南下的老爸漸漸不支,吩咐小妮子接下來要注意什麼,有那些手段可用,然後要靠自己了。次日也是行程滿檔,估計要到傍晚搭車北上,才有時間回頭看。 清晨早起,發現一條小傢伙的訊息,凌晨兩點發的。儘管開頭依然「55555555」,不過進步到 15 分。回訊誇獎幾句,跟她說不妨和同學討論;人人都有盲點,一起分享交流,說不定有所突破。中午再收到簡訊,有 33 分了!合作果然帶來進步。不過這階段又卡了很久,傍晚才再傳捷報, 57 分!只差三分。原來下午助教發通告提示,有個直覺不太可能的狀況,居然是佔分極重的邊界條件。把這狀況考慮進來,就幾乎過關了。晚上小妮子有個聚會,要快樂一整夜,看樣子沒時間搶滿分。老爸答應在車上看看,後來應該也看出端倪,然而死亡線已到,Game Over 啦。 跟小妮子說,雖然沒拿滿分,但重要的一是學會使用開發除錯工具,日後應付複雜題目,會更加游刃有餘;二是懂得團隊合作,互通有無,將來真正在這行吃飯,可能比個人能力更有助益。而且,雖然文字編碼很鳥很無聊,至少瞭解數位世界詭譎,歷史包袱無所不在,一不小心就成為絆腳石。上課時老師講古,就不要嫌人家老骨董啦。 |
||||||
( 心情隨筆|家庭親子 ) |