码迷,mamicode.com
首页 > 其他好文 > 详细

完全不用命令行

时间:2018-01-09 16:43:48      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:平面   不用   shadow   制表符   color   干什么   级别   但我   ges   

《C Primer Plus》讲到 Mac 有个图形界面编译器,想笑,于是写文章。

  据说命令行就是以前电脑的样子,而想想我刚接触电脑就用图形界面,不禁感慨。用惯了图形界面的人想必是看不惯命令行的吧?我也是见到那个黑框很久很久之后才知道“那不是个bug”——毕竟我对电脑的第一印象就是图形界面。如果早有人告诉我那是多年前电脑唯一的样子,或许我很快就能接受……图形界面给人的感觉是,电脑“进化了”,但是图形界面编译器让人哭笑不得——那原本只要输入一行命令的——孰好孰坏?从机器的角度看,图形界面复杂些,核心区别(信息流动方式)未必大,但图形界面和命令行好比图像和语言的区别,我就想谈谈这个区别。

  操作速度还在其次,我想说的是操作的简明程度。比如一个文件夹系统,在命令行打开一个子文件夹用命令,而图形界面是用鼠标双击——可以说,图形界面符合我们大脑运作的方式,我们可以想象那里真的有一个文件夹,而双击就是打开——单击对应的选中也很符合我们的思维(还是我的思维被图形界面影响了?)“对象”这一概念似乎是和视觉紧紧关联的——【命令行操作其实也是图形化的】,无论谁都不会希望命令行只靠线性输出,而是把目录排成整齐的一列(大约是大脑并列关系的体现);关系网中,我们也更希望看到图表示。命令行中,我们像在说话,——区别何在呢?命令行既然也有图形界面的性质,那全无图形界面的东西是怎样的呢?——似乎不大现实,那命令行和(传统意义上的)图形界面区别何在呢?

  我觉得可能在于【即时操作】。设想这样的文件夹系统A:可以通过上下键使某个选项高亮——你们能想象我在说什么;再设想一个文件夹系统B,在每个文件前对应一个数字,输入数字则为打开指定文件;再设想系统C,输入文件名打开;最后D,即我们常见的,不给你看文件,想知道身边有什么得用dir或者ls命令——比较差异看看?不妨再比较下一种表述:

  • A:可以通过上下键使某个选项高亮
  • B:在每个文件前对应一个数字,输入数字回车则为打开指定文件
  • C:入文件名打开
  • D::不给你看文件,想知道身边有什么得用dir或者ls命令(这不是文件夹为主体,而是命令为主体)

  所以命令行其实是个混搭的东西,它更像——谈话录。我现在提出一个改造方案(仿MC):命令始终在最底端输入(许多行的命令不常见吧),默认即时清屏——只显示当前命令的结果,状态栏单独作一行(而不是作为输入提示符)。其实这是个挺好的问题:如果你在若干年前设计界面,你怎么设计?

技术分享图片

  谈话录式的设计无疑是简洁的,但命令行当然不止可以谈话,MySQL就用命令行制表。那我自然可以另外写一个shell,让操作更人性化些——但是能怎么人性化法?!图形界面还不够人性?——这就是我正在讨论的:图形界面好用在哪里?我要用gcc的时候,为什么说一行指令更好些?

  我们回顾一下图形界面的流程:1.打开编译器窗口,2.在“文件”菜单中选择“打开”,然后从目录浏览器中选择文件,3.然后在“编译”菜单选择“编译”。这一串操作完全等价于1.命令行进入目标菜单,2.命令“gcc xxx.c”——我们分析一下:在命令行里,有“当前位置”这一概念,并且为唯一状态,但是图形界面中的软件是独立打开的;在命令行里,一般不“打开”程序,而是带参数运行,将处理信息一次性输入。另外比较mysql和gcc(前者是命令行下运行),前者主要为文件内操作(因而自由度高),后者为文件级别操作(自由度低),因而后者更理想。(其实低自由度的图形界面程序也有,参考回收站的功能)图形化反而使得低自由度操作困难了。图形界面仍然以文件夹系统为主(其实大可以宛如游戏),故而图形操作限于文件、文件夹的拖动——我好像跑题了,因为图形界面和鼠标是两回事,而鼠标先于图形界面,也就没有【不用鼠标的图形界面】这么一个尴尬的情况,但我有必要讨论这个情况。我小时候用过没有鼠标的电脑(因为被收缴了),但是仅有键盘也能做很多事(不考虑鼠标键),虽然那时候有些游戏不能玩是个挺大的问题。文件点不到,只能一个一个跳,网页也一样。鼠标的工作在于“所见即所得”,和“即时性”有点像,但比之前的例子更近一步。鼠标使得二维平面内不用加以空间标识(试想一维鼠标,也是如此,虽说有些滑稽),可以无条件高精度选中一定点,代价是一部分速度。命令行在此的缺点有二:1.命令行以文字为主,所以只能针对文字/数字标识,且选择方式是输入;2.命令行极少以二维方式展开文件。(但是其实我就没见过利用好二维展开的)命令行还有一个我不知道是不是缺点的缺点——只能同时打开一个程序或窗口,或者说切换不方便——我其实说不好,但我可以看着图片把图片中的代码输到编辑器里。所见即所得使得运行的程序能在状态栏被看见,并且看见就可以操作。

  其实图形界面也可以优化,只需加一条命令输入行,并且支持鼠标操作就行——比如按住Ctrl点一下gcc,把这个程序加入命令行,再点一下.c文件,成为第二个词,然后按回车运行,此前可以再输入参数,比如在gcc图标上做点手脚,加几个可选项……就避开了打开界面。不过这可能依然会颠覆惯用图形界面者的软件观——软件怎么能不打开呢?

  图形界面除了玩游戏看电视究竟还能干什么?其实对于文件系统(图形界面“少数”正当的用处之一),有个很好的对照:git 。我一直希望 git 能有个图形界面——不是现在的这样。用第二个维度表示时间展开再自然不过了,我觉得界面就该是这样的:(小图)

技术分享图片

  但是 git 淡定地把横向维度用详细信息填满了。事实上这是命令行加制表符就能做的事。拖动提交,多美妙的操作……

(2018-1-9于地球)(完)

完全不用命令行

标签:平面   不用   shadow   制表符   color   干什么   级别   但我   ges   

原文地址:http://blog.51cto.com/13535617/2059084

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!