由SICP中的高阶过程和第一级过程所想到的

命令界面和gui界面最大的不同在于,前者能方便的将不同的命令(相当于过程)存放在一个文件中,这就相当于把这些操作做了一个抽象,并赋予了一个名字(即文件名),然后我们就能像操作普通的命令一样去操作这个抽象,或者也可以在这个抽象的基础上,去形成更高阶的抽象(相当于高阶过程)。

而gui界面操作的抽象难度就比命令行界面大多了,虽然鼠标操作也可以录制下来,但这种操作就像语法糖衣一样,不过是对命令的一种包装,其中有很多和本身目的无关的东西,例如鼠标的移动轨迹,这种操作,抽象难度远大于命令式的操作,即使抽象出来了,也很难再次用这个抽象和其它的抽象组合起来形成更高阶的抽象。这种笨重的抽象就像大象在跳舞,而命令界面的抽象就像蚂蚁之间的紧密合作。

unix下的程序设计思想强调软件之间的配合,每个软件干好自身的事情,并对外给出良好的调用接口。这样软件之间的配合就变得非常容易,这样,在开发新软件时,程序员首先想到的是去寻找已经造好的轮子,然后在自己的程序中调用它们,然后再添加上自己想要的新功能。最后,再留出调用这个新功能的接口,从而方便以后的程序员去把这个新功能当成一个已有的轮子来使用。

unix之所以能实现这样的程序设计思想,关键还是在于它的命令式操作方式,这种方式导致了程序之间的合作非常容易,使得程序员乐于这样去合作。

再看看windows下的程序员,因为windows使用gui界面,所以程序员设计程序时往往不会预留功能的命令式调用接口,这样,一个程序的功能往往只能供它自己使用,如果另一个程序员开发的程序中需要用到某个功能,即使这个功能是其它程序中已经存在的,他也会因为无法调用那个功能而不得不重新写一个。

总结一下,这种差异导致的结果就是,unix的程序短小精悍,互相配合,windows的程序巨大臃肿,各自为战。具体的说,为了实现一个新功能,unix下会采取几个老程序外加开发一个小的新程序来配合实现,而windows下会写一个超大的单一程序来实现。

此条目发表在 ., 思考与领悟 分类目录。将固定链接加入收藏夹。

由SICP中的高阶过程和第一级过程所想到的》有 1 条评论

  1. sichuan520 说:

    喜欢命令,喜欢unix、linux。无所不能的命令行。

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>