編寫Linux實用程式的藝術(轉)

worldblog發表於2007-08-10
編寫Linux實用程式的藝術(轉)[@more@]

  Linux 和其他類 UNIX 系統總是附帶了大量的工具,它們執行從顯而易見的到不可思議的廣泛功能。類 UNIX 程式設計環境的成功很大程度上歸功於工具的高品質和選擇,以及這些工具之間相互銜接的簡易性。

  作為開發人員,您可能會發現現有實用程式並不總是能夠解決問題。雖然能夠透過結合使用現有實用程式來容易地解決許多問題,然而解決其他問題卻至少需要一些實際的程式設計工作。這些後面的任務通常是建立新實用程式的候選任務,結合現有實用程式來建立新實用程式可以透過做最少的工作來解決問題。本文考察優秀實用程式所具有的品質,以及設計這種實用程式所經歷的過程。

  優秀的實用程式具有哪些品質?

  Kernighan & Pike 所著的 The UNIX Programming Environment 一書中包含了對此問題的精彩討論。優秀的實用程式是把自己的工作做得儘可能好的實用程式。它必須與其他實用程式配合融洽;必須能夠容易地與其他實用程式結合使用。無法與其他實用程式結合使用的程式不是實用程式,而是應用程式。

  實用程式應該允許您根據手邊的材料廉價而容易地構建一次性的應用程式。許多人認為實用程式就像是工具箱中的工具。設計實用程式的目標不是為了讓單個工具來做所有事情,而是為了擁有一組工具,其中每個工具都儘可能好地做一件事情。

  有些實用程式自身就是相當有用的,而其他實用程式則必須與一系列實用程式配合使用。前者的例子包括 sort 和 grep。另一方面,xargs 除了與其他實用程式(最常見的是 find)配合使用外,很少單獨使用。

  使用什麼語言來編寫實用程式?

  大多數 UNIX 系統實用程式都是用 C 語言來編寫的。本文中的例子使用 Perl 和 sh。應該使用恰當的工具來做恰當的事情。如果您對某個實用程式使用得足夠頻繁,那麼用編譯型語言來編寫它的成本也許能透過效能提升來獲得回報。另一方面,對於程式的工作負荷很輕這種相當普遍的情況,使用指令碼語言也許會提供更快的開發速度。

  如果無法肯定,您應該使用自己最瞭解的語言。至少當您在對某個實用程式進行原型化,或在弄清它是如何有用時,程式設計師效率將優先於效能調整。大多數 UNIX 系統實用程式都是用 C 編寫的,這只是因為這些實用程式使用得足夠頻繁,以致考慮效率比考慮開發成本更加重要。Perl 和 sh(或 ksh)可能是用於快速原型化的很好語言。對於與其他程式配合實用的實用程式,使用 shell 來編寫它們或許要比使用更傳統的程式語言來編寫它們要容易一些。另一方面,當您希望與原始的位元組互動時,C 或許就是最好的選擇。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-940248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章