5.10 后记
当需要编写一个新程序时,自然立刻会想到如何用你最喜欢的语言来编写这个程序。对我们来说,最常用的语言是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程序。