跳到主要內容

不拘泥於招式

前幾天管電腦軟硬體的同事(以下簡稱管理員)和我說:
管理員:你上次買的server沒有電腦編號耶
鳥毅:為什麼
管理員:你用簽呈買,沒有填電腦申請單
鳥毅:你不能直接新增一台設備嗎
管理員:可以呀,只是在申請單那欄會變成空白
鳥毅: ...
對於硬體管理的重點,應該在於數量清點確實,而不是每樣東西都有申請單。事實上,申請單的意義並不大,只是一筆記錄。由於管理程式的缺失及歷史的遺毒,這個no key系統資料亂七八糟,若真的要求那麼多,為何不花時間整理一下DB呢?
在1990年,那時鳥毅用的FORTRAN 77不支援recursive,FORTRAN 90才支援。某日在寫河內塔時
FORTRAN 77的寫法

INTEGER N
WRITE (*,*) 'How many towers do you have ? '
READ *, N
CALL HANOI(N)
END

SUBROUTINE HANOI(N)
INTEGER N
CALL MOVE(N,'peg1','peg2','peg3')
RETURN
END

SUBROUTINE MOVE(N,FROM, AUX, TO)
INTEGER N
CHARACTER*4 FROM, AUX, TO

IF(N .EQ. 1) THEN
PRINT *,'Move disk 1 from ',FROM,' to ',TO
ELSE
CALL MOVE2(N-1,FROM, TO, AUX)
PRINT 10, 'Move disk ',N,' from ',FROM,' to ',TO
CALL MOVE2(N-1, AUX, FROM, TO)
END IF
10 FORMAT (1X,A10,I2,A6,3A4)
RETURN
END

SUBROUTINE MOVE2(N,FROM, AUX, TO)
INTEGER N
CHARACTER*4 FROM, AUX, TO
IF(N .EQ. 1) THEN
PRINT *,'Move disk 1 from ',FROM,' to ',TO
ELSE
CALL MOVE(N-1,FROM, TO, AUX)
PRINT 10, 'Move disk ',N,' from ',FROM,' to ',TO
CALL MOVE(N-1, AUX, FROM, TO)
END IF
10 FORMAT (1X,A10,I2,A6,3A4)
RETURN
END

FORTRAN 90的寫法(遞迴)

INTEGER N
WRITE (*,*) 'How many towers do you have ? '
READ *, N
CALL HANOI(N)
END

SUBROUTINE HANOI(N)
INTEGER N
CALL MOVE(N,'peg1','peg2','peg3')
RETURN
END

RECURSIVE SUBROUTINE MOVE(N,FROM, AUX, TO)
INTEGER N
CHARACTER*4 FROM, AUX, TO

IF(N .EQ. 1) THEN
PRINT *,'Move disk 1 from ',FROM,' to ',TO
ELSE
CALL MOVE(N-1,FROM, TO, AUX)
PRINT 10, 'Move disk ',N,' from ',FROM,' to ',TO
CALL MOVE(N-1, AUX, FROM, TO)
END IF
10 FORMAT (1X,A10,I2,A6,3A4)
RETURN
END

雖然程式碼重覆是bad pattern,But,so what?解決問題才是第一要務呀!

獨孤九劍最強之處就是遇強則強,無招勝有招才是最高境界,不要拘泥於招式。鳥毅之所以非常佩服同事VB超人的原因,不僅僅是他VB超強,而是他能夠將簡單的VB能夠呼叫系統API、與.Net結合,成為強大的武器。寫程式和做事都一樣,墨守成規者無法成為高手呀!

留言

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?