说说我为什么还在用CLI(命令行接口)

不同视角、不同观点、深度探讨,禁止人品和道德攻击
回复
hzjc
帖子: 13
注册时间: 2008-10-25 14:21

说说我为什么还在用CLI(命令行接口)

#1

帖子 hzjc »

先得承认我是标题党,写这个是因为看到下面有朋友在讨论有了ide为什么还用vi/emacs,产生了想说两句的冲动。其实CLI我现在用的也不多,因为这两年不大写程序了,除了隔三差五的用VI、sed和awk将一些个人笔记(都是小文本文件,散落在我所有的计算机里)修改文字、转成标准csv格式、导入到我的个人笔记数据库才使用CLI,其他时候都是GUI了。
尽管如此,我在我所有的计算机上——办公室一台windows、家里一台windows、一台linux、一台mac上——都安装了一套shell工具,办公室用的是cygwin,家里的windows只安了gnuwin32我需要的工具,而linux和mac就更简单了,可以不用自己上网去下载。从个人来说,shell工具还是我离开不了的拐杖。
下面的朋友说,还在用CLI而不用ide的是怀旧,过去写程序多的时候ide还没有现在这么好用,所以后来ide好用了,却懒得学习新东西,有点这个原因。确实,我刚接触计算机的时候连GUI这种东西都见不到呢,当时写程序是在DEC VAX 780的终端前面,对着黑色屏幕上闪烁的绿色字符发呆,而那段岁月是我个人最好的岁月,没错,确实是有些怀旧。还有朋友说,用cli是写东西时候比用键盘+鼠标更方便,双手可以不离开键盘,也有点这个原因。举个例子,用vi编辑东西的时候,用hjkl移动光标比手指离开字母区去按方向键省力很多,没错,对于懒人来说,这确实是个不错的设计呢。但GUI下也有很多便利之处啊,而且单纯的怀旧也不足以让一个实用主义至上的工程师抱残守缺,对新东西的好处视而不见。所以,这些原因都对,但不足以解释为什么很多人和我一样还喜欢使用CLI。
过去我也曾经想过这个问题,我不知道别人怎么样,但对我来说,CLI对我仍有很高价值的根本原因在于CLI更符合人类工作时的习惯。等等,有朋友会说,现实世界是丰富多彩的,而GUI比CLI更接近于真实世界的情况,怎么能说CLI更适合于人呢?这个我不否认,GUI是计算机科学和工程的一个伟大进步,所以我最常用的接口也是GUI。但是。。。(用葛优在某部王朔电影里面的对白:你就别说“但是”前面的东西了,直接说吧),想想看,如果你不是在网上浏览新闻或者是有一搭没一搭的看电影,而是在写一篇文档、写一段代码时,精力高度集中的时候,你的眼睛在“看”什么?发生什么事情的时候你会感觉“分神”了?为了详细的解释这个,可以来看看在写一段代码的时候我们通常的思维活动和行为,假设我们已经想好了这段代码要怎么写,(1)首先把它敲到计算机里去,(2)接下来运行一下编译/或者解释器,(3)如果通过,我们看看结果是不是我们想象的那样,(4)如果没通过或者结果错误,我们会看警告和出错信息,然后回头去看源代码。
仔细观察一下,我们的注意力移动其实是一个线性的过程,首先注意力集中在“看”着敲出的代码是不是自己脑子里所想的。然后我们的注意力移动到运行编译/解释器上的操作。接下来,我们会“看”结果,根据结果不同会返回到源代码或者报错信息。在这个过程里面,我们倾向于按照次序一次只做一件事情,这在人机工程学里面有个专门的名词叫做“心流(flow)”,大意是指我们的注意力流动方向。人类的心流是在长期进化中形成的,符合我们心流的模式的东西会让我们感到舒服自然,不符合的会让我们迷惑或者恼火。
OK,到这里我想你大致明白我的意思了,CLI界面将整个计算机屏幕作为一个工作窗口,强迫我们把注意力集中在当前的东西上,“先把代码写好”“然后不用管代码的事情,去运行编译器”“这个有错误,应该回头重新看源代码文件了”,每次只做/只能做一件事,一方面增加了我们对自己工作流程记忆的负担(但这个属于比较容易记住的东西),另一方面,在流程中的任何一个环节,都不太容易分神去想前面或者后者后面的工作步骤(因为没有能够让你分神的东西)。
除此之外,在使用CLI时,我们的眼睛基本上都在“看”屏幕光标的位置,正常的光标移动是连续的上下左右、一个一个字符位置的移动,这样我们的眼睛只要“跟着”光标,就知道自己在“那里”。另外,虽然光标虽然可以跳行,但跳行的时候,我们通常已经“想好了”让它跳“几行”,也就是我们已经做好了准备“看”那里了。在这方面GUI有时候未见的要优于CLI。比如一个经典的IDE窗口布局是上方是菜单条、窗口左边是代码树结构、中间是代码编辑窗口,下方是编译信息提示窗口。注意我们的视线移动,首先我们在中间左侧“看”代码树,然后移动到中间右边,看代码,然后跳到上面去运行编译工具,接下来跳到下面看出错信息。视线移动的距离比较大而且有跳跃性,这样就会让人感觉容易疲劳,而且更重要的是,因为屏幕上显示了更多的内容,我们的注意力就更容易被分散。
说这些并不意味着我是CLI或者VI的死忠,而是说多种工具都可以解决问题,但一些工具会让你用起来很舒服,另外一些就不是那么舒服。对于某些情况,一些土得掉渣的工具可能会让你更容易得心应手。为了表示我不算是gnu工具链和CLI的死忠,在这里顺便赞扬一下好像是VB最早出现的、现在很多ide都有的功能,就是函数提示,在你引用一个函数的时候,在你编辑的位置为你提供函数的正确写法和参数提示。这是一个特别优秀的设计,只是我不能肯定是不是MS最早发明的 :em06
findmoon
帖子: 221
注册时间: 2008-10-04 22:00

Re: 说说我为什么还在用CLI(命令行接口)

#2

帖子 findmoon »

可以装B呀,平时都在图形界面下的,键盘要用机械的,敲起来辟哩叭啦响的那种,有菜鸟呀MM呀靠近时立刻转到命令行,乱敲一通命令进去,唬死他们,让他们把自己当神拜 :em05
头像
pengpeng1987
帖子: 73
注册时间: 2008-05-06 11:02
来自: 野猪帝国

Re: 说说我为什么还在用CLI(命令行接口)

#3

帖子 pengpeng1987 »

额,标题党吓人,LS说的更吓人 :em06
CLI对比GUI还是有不少的优点的,两者结合能够完成所有工作,跟LZ一样的想法,不偏颇任何一方 :em09
fleeking
帖子: 230
注册时间: 2008-04-30 12:34

Re: 说说我为什么还在用CLI(命令行接口)

#4

帖子 fleeking »

lz 说的 分神的 问题很好
我在 windows下经常分神
hzjc
帖子: 13
注册时间: 2008-10-25 14:21

Re: 说说我为什么还在用CLI(命令行接口)

#5

帖子 hzjc »

findmoon 写了:可以装B呀,平时都在图形界面下的,键盘要用机械的,敲起来辟哩叭啦响的那种,有菜鸟呀MM呀靠近时立刻转到命令行,乱敲一通命令进去,唬死他们,让他们把自己当神拜 :em05
这个把戏N年前就过时了吧? :em04
头像
runpin
帖子: 647
注册时间: 2005-09-29 11:13
来自: Boston, MA

Re: 说说我为什么还在用CLI(命令行接口)

#6

帖子 runpin »

hzjc 写了:
findmoon 写了:可以装B呀,平时都在图形界面下的,键盘要用机械的,敲起来辟哩叭啦响的那种,有菜鸟呀MM呀靠近时立刻转到命令行,乱敲一通命令进去,唬死他们,让他们把自己当神拜 :em05
这个把戏N年前就过时了吧? :em04
这是青春期荷尔蒙过剩的表现,这都能吸引MM?典型的起点文学类噱头 :em04
hzjc
帖子: 13
注册时间: 2008-10-25 14:21

Re: 说说我为什么还在用CLI(命令行接口)

#7

帖子 hzjc »

哦?被搬到这里了。
版主:抱歉,只是随口发两句感慨,没注意所贴出的版面。
runpin 写了:这是青春期荷尔蒙过剩的表现,这都能吸引MM?典型的起点文学类噱头 :em04
也不全是啊,90年代这套把戏还是管用的,在GUI还不能做到所有日常操作的时候,把CLI搞得很熟确实还是能吸引MM的,我记得大概在93年的时候我认得的一个家伙就这么搞过,还挺成功 :em04 。结果是,我常去调程序的机房突然多了很多人来学习编程。在那之前我去调程序从来不担心没有机器用,零零星星就那么几个熟面孔(因为大多数人除了必须上的计算机课,其他时候都不会去)。这事我是过了一年之后知道了更多的细节才搞清楚的,就后悔啊,应该趁着当时所有班级都在上计算机课的时候,经常到机房去转悠,寻找机会搞定girl friend才对 :em05
头像
nouse
帖子: 133
注册时间: 2007-11-10 1:09
来自: 上海

Re: 说说我为什么还在用CLI(命令行接口)

#8

帖子 nouse »

应该让Canonical拍个广告,马克西姆改用计算机键盘,当然不是弹奏群蜂飞舞,是做命令行高手。
屏幕上是命令行收信,命令行聊天,命令行开网页。轻松自信完成工作的同时还顺带帮美女同事解决问题,当然也是敲两下命令行搞定。
作为对比则是其他同事手忙脚乱,头晕目眩,忙了一天还没有完成交给的工作。

这个广告如果拍出来,大家绝对认为命令行太酷了。 :em50
头像
盖茨他爹
帖子: 264
注册时间: 2007-12-02 1:23

Re: 说说我为什么还在用CLI(命令行接口)

#9

帖子 盖茨他爹 »

IDE很大程度上也可以实现CLI,各种操作基本上都有快捷键,只是管不住自己老想去摸鼠标 :em09

另外比较佩服楼主,自己专门弄个数据库放文档,俺都是写在QQ邮箱的记事本里 :em06
头像
盖茨他爹
帖子: 264
注册时间: 2007-12-02 1:23

Re: 说说我为什么还在用CLI(命令行接口)

#10

帖子 盖茨他爹 »

用IDE确实容易分心,特别是那些重量级的IDE,等它启动》》》》》》》》加载》》》》》》》完全打开以后,我刚刚想出来的灵感都跑的一干二净了

但不得不承认,IDE让工作效率提高了不止N倍。如果是个自由程序员,不为工资写程序完全为爱好,想用什么用什么,在公司上班身不由己
头像
yiding_he
帖子: 2677
注册时间: 2006-10-25 18:10
来自: 长沙
联系:

Re: 说说我为什么还在用CLI(命令行接口)

#11

帖子 yiding_he »

好的 GUI 能够让用户专注于工作内容而不是工具,这话不错,但界面设计的好坏不由它是 GUI 还是 CLI 来决定。
你是自由的。别人也是。
回复