追求神乎其技的程式設計之道(三)

勁敵

熱血的少年漫畫都有一種標準公式,熱血但什麼都不懂的主角,加上一個天才勁敵的刺激,讓主角能在不斷遭遇的困難和挫折中不斷爬起來進步。就像火影忍者中的鳴人和左助,或是棋靈王中的進藤光與塔矢亮,要進步最快...閱讀全文

TopCoder

剛看到Mr./Ms. Day那的一篇文章TopCoder,才發現原來TopCoder提供的比賽項目已經變得如此豐富了。我以前還有在玩ACM ICPC之類的比賽時,就有用過TopCoder提供的比賽介面。當時只能比algorithm類的程式,就跟另一個著名的ACM Online Judge是大同小異。大三後我就不參加這種比賽,也就忘記TopCoder的存在。沒想到它現在還能玩Software design, Software development, Software assembly等較大型的軟體專案設計/開發,內容比以前豐富了許多。話說有競爭才會有進步,如果想要精進自己程式或軟體設計開發能力的,我想透過TopCoder練習會是一個不錯的方式。另外,TopCoder常常辦有獎金的比賽,所以想藉此賺賺外快的或許也是個不錯的管道 XD閱讀全文

Drag&Drop Programming

第一次看到TextMate的snippet時(可參考TextMate, snippetsEmu for Vim這篇文章),就覺得這東西一定會徹底改變人們寫程式的習慣。但光只這樣好像還是有點不夠。snippet能讓programmer不用死記每種語言的不同語法,只要記得關鍵字,然後打出來按tab,接下來需要的東西全部自動生出來,programmer只要接著把空格填一填就好。這讓我想到CMU HCII所做的baristaWhyline的操作介面: code block可以直接被拖拉出來,放到想要的地方,接著再把空格填一填,聽起來跟snippet很像不是嗎?:p我想未來的programming環境都會往這個方向發展,到時要學新的程式語言也變得更簡單(反正這些年來的新語言都是換湯不換藥),只要打開editor,把需要的語法拉出來,再做一下填充題就完成了。所以,這就叫做拖曳編程(Drag&Drop Programming)嗎?閱讀全文

Debugging Backwards in Time

剛發現這篇文章Debugging Backwards in Time。簡單的說,這篇文章的作者實做出一個稱為ODB(Omniscient Debugger)的除錯器,它可以讓debug變得像操作錄影機一樣,把整個程式執行過程的變化全部錄下來,於是你就能輕易地在執行時的時間點跳來跳去。以往只能從頭慢慢開始下一步,頂多設些中斷點。有了ODB後,debug完全不同了...。要是不小心跑過頭,可以來個"上一步",甚至可以直接從 exception發生的地方倒帶,看看到底哪裡發生了不該發生的事。這種debugger是每個程式設計師的夢想,但現在竟然成真了!相關的link:
  1. Bil Lewis, "Debugging Backwards in Time", 2003.
  2. Presentation video
閱讀全文