modified: _posts/2015-07-29-ios-concurrency-programming-operation-queues.md
[GalaxyBlog.git] / _posts / 2014-01-18-GUI-VS-CLI.md
blob22060c147d63edf32ad6c73db18a36b99b81f711
1 ---
2 layout: post
3 title: "GUI和CLI的使用比较"
4 date: 2014-01-18 23:06
5 comments: true
6 tags: [notes, ZT]
7 ---
9 GUI和CLI也算是使用软件的两大流派吧,Win下几乎都是GUI程序,Linux下几乎都是CLI程序.因为两者面向的用户不同,
10 初衷也不同.今天看了<程序员修炼之道>这本书,可谓是有了更深入的了解.GUI侧重于易用,CLI则侧重于效率.
12 对于使用Linux的程序员,工作台就是命令shell.在shell提示下,你可以调用你的全套工具,并使用管道,以这些开发者从未想过的方式
13 把他们组合在一起.在shell下,你可以启动应用、调试器、浏览器、编辑器以及各种实用程序.你可以搜索文件、查询系统状态、过滤输出.
14 通过对shell进行编程,你可以构建复杂的宏命令,用来完成你经常进行的各种活动.在shell下面,可以高效率的处理事务,并且shell可以完成
15 在GUI下几乎所有的任务.GUI和IDE会让程序员变得更懒,更无知,各种辅助工具,例如自动补全可能让某些程序员
16 连asynchronous这个单词都无法完整的拼写出来.
18 对于在GUI界面和集成开发环境(IDE)上成长起来的程序员,这似乎显得很极端.毕竟,用鼠标指指点点,你不是也同样能把这些事情做好吗?
20 简单的回答:"不能".GUI界面很奇妙,对于某些简单操作,它们可能更快、更方便.移动文件、阅读MIME编码的电子邮件以及写信,这些都是你可能想要
21 在图形环境中完成的事情.但如果你使用GUI完成所有的工作,你就会错过你的环境的某些能力.你将无法使常见任务自动化,或是利用各种可用工具的全部
22 力量.同时,你也将无法组合你的各种工具,创建定制的宏工具.GUI的好处是WYSIWYG--所见即所得(what you see is what you get).缺点是WYSIAYG--
23 所见即全部所得(what you see is all you get).
25 GUI环境通常受限于它们的设计者想要提供的能力.如果你需要超越设计者提供的模型,你大概不会那么走运--而且很多时候,你确实需要超越这些模型.**注重实效的程序员**
26 并非只是剪切代码、或是开发对象模型、或是撰写文档、或是构建过程自动化--所有这些事情我们全都要做.通常,任何一样工具的适用范围都局限于该工具预期要完成的任务.
27 例如,假定你需要把代码预处理器集成进你的IDE中(为了实现按合约设计、多处理编译指示,等等).除非IDE的设计者明确地为这种能力提供了挂钩,否则,你无法做到这一点.
29 你也许已经习惯于在命令提示下工作,这种情况下,本文就可以忽略啦~ 否则,你也许还需要我们向你证明,shell是你的朋友.
31 作为**注重实效的程序员**,你不断的想要执行特别的操作--GUI可能不支持的操作.当你想要快速地组合一些命令,以完成一次查询或某种其他的任务时,命令行要更为适宜.
32 例如:  
34 在上周哪些Java 文件没有改动过?  
36       Shell  find . -name '*.java' -mtime +7 -print  
37       GUI    点击并转到"查找文件",点击"文件名"字段,敲入"*.java",选择"修改日期"选项卡
38                .然后选择"介于".点击"开始日期",敲入项目开始的日期.点击"结束日期",敲入1周以前
39                的日期(确保手边有日历).点击"开始查找".
41 这样的例子很多.shell命令可能很晦涩,或是太简略,但却很强大,也很简练.同时,因为shell命令可被组合进脚本文件中,你可以构建命令序列,是你常做的事情自动化.
42 希望你看完这篇文章能逐渐接受CLI并熟悉shell.多用你的命令shell,你会惊讶他能使你的生产率得到怎样的提高.