GUI和CLI的使用比较

Posted on

GUI和CLI也算是使用软件的两大流派吧,Win下几乎都是GUI程序,Linux下几乎都是CLI程序.因为两者面向的用户不同, 初衷也不同.今天看了<程序员修炼之道>这本书,可谓是有了更深入的了解.GUI侧重于易用,CLI则侧重于效率.

对于使用Linux的程序员,工作台就是命令shell.在shell提示下,你可以调用你的全套工具,并使用管道,以这些开发者从未想过的方式 把他们组合在一起.在shell下,你可以启动应用、调试器、浏览器、编辑器以及各种实用程序.你可以搜索文件、查询系统状态、过滤输出. 通过对shell进行编程,你可以构建复杂的宏命令,用来完成你经常进行的各种活动.在shell下面,可以高效率的处理事务,并且shell可以完成 在GUI下几乎所有的任务.GUI和IDE会让程序员变得更懒,更无知,各种辅助工具,例如自动补全可能让某些程序员 连asynchronous这个单词都无法完整的拼写出来.

对于在GUI界面和集成开发环境(IDE)上成长起来的程序员,这似乎显得很极端.毕竟,用鼠标指指点点,你不是也同样能把这些事情做好吗?

简单的回答:"不能".GUI界面很奇妙,对于某些简单操作,它们可能更快、更方便.移动文件、阅读MIME编码的电子邮件以及写信,这些都是你可能想要 在图形环境中完成的事情.但如果你使用GUI完成所有的工作,你就会错过你的环境的某些能力.你将无法使常见任务自动化,或是利用各种可用工具的全部 力量.同时,你也将无法组合你的各种工具,创建定制的宏工具.GUI的好处是WYSIWYG--所见即所得(what you see is what you get).缺点是WYSIAYG-- 所见即全部所得(what you see is all you get).

GUI环境通常受限于它们的设计者想要提供的能力.如果你需要超越设计者提供的模型,你大概不会那么走运--而且很多时候,你确实需要超越这些模型.注重实效的程序员 并非只是剪切代码、或是开发对象模型、或是撰写文档、或是构建过程自动化--所有这些事情我们全都要做.通常,任何一样工具的适用范围都局限于该工具预期要完成的任务. 例如,假定你需要把代码预处理器集成进你的IDE中(为了实现按合约设计、多处理编译指示,等等).除非IDE的设计者明确地为这种能力提供了挂钩,否则,你无法做到这一点.

你也许已经习惯于在命令提示下工作,这种情况下,本文就可以忽略啦~ 否则,你也许还需要我们向你证明,shell是你的朋友.

作为注重实效的程序员,你不断的想要执行特别的操作--GUI可能不支持的操作.当你想要快速地组合一些命令,以完成一次查询或某种其他的任务时,命令行要更为适宜. 例如:

在上周哪些Java 文件没有改动过?

  Shell  find . -name '*.java' -mtime +7 -print  
  GUI    点击并转到"查找文件",点击"文件名"字段,敲入"*.java",选择"修改日期"选项卡
           .然后选择"介于".点击"开始日期",敲入项目开始的日期.点击"结束日期",敲入1周以前
           的日期(确保手边有日历).点击"开始查找".

这样的例子很多.shell命令可能很晦涩,或是太简略,但却很强大,也很简练.同时,因为shell命令可被组合进脚本文件中,你可以构建命令序列,是你常做的事情自动化. 希望你看完这篇文章能逐渐接受CLI并熟悉shell.多用你的命令shell,你会惊讶他能使你的生产率得到怎样的提高.

tagged: notes
comments powered by Disqus