天天看點

《UNIX程式設計環境》——5.10 後記

本節書摘來自異步社群《unix程式設計環境》一書中的第5章,第5.10節,作者:【美】brian w. kernighan , rob pike著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

當需要編寫一個新程式時,自然立刻會想到如何用你最喜歡的語言來編寫這個程式。對我們來說,最常用的語言是shell。

shell是一種很好的程式設計語言,雖然它的文法有些特殊。shell屬于進階語言,它的操作對象為整個程式。由于shell是互動式語言,是以shell程式能夠互動式地開發,可以逐級求精直至它能夠令人滿意地工作。如果是一個面向更多的使用者,可以對shell程式進一步改造,使之更精巧和更實用,以滿足廣泛使用的需要。不能用shell程式高效地解決問題的情況微乎其微。如果遇到這種例外情況,在手中擁有可靠的設計和和工作實作的情況下可以用c語言編寫全部或部分程式。(我們在下一章将遵循這種方法。)

unix環境下程式設計有其特有原則—将工作建築在已有成果之上,而不是白手起家;從小做起,逐漸發展;使用各種工具驗證新的想法。

我們在本章列舉了很多例子,用現有的程式和shell很容易實作它們。有時,隻需要重新設定參數就可以工作,如cal程式。有時,shell在一組檔案名或一個指令執行序列上執行循環,如watchfor程式和checkmail程式。對于比較複雜的例子,用shell程式設計比用c語言程式設計要簡潔得多,例如,我們完全可以用20行的shell程式news版本代替350行的c語言程式[sic]版本。

有了一個可程式設計式的指令語言和許多實用的程式還不夠。重要的是所有這些元件能夠協同工作!它們采用相同的資訊表示和通信格式。每一個元件都出色地完成自己的份内工作,shell則根據你的意願将它們簡單高效地連接配接起來。這種合作能力正是unix程式設計環境如此富有成效的關鍵所在。

相關曆史和文獻

get和put來源于source code control system(sccs),這最早是由marc rochkind提出來的(“the source code control system”,ieee trans. on software engineering,1975)。sccs是一個比我們上面這些簡單的程式更強大和靈活得多的系統,它的目标是在工業環境中維護大型程式。然而,sccs的基礎是同一個diff程式。

繼續閱讀