首页 > 命令行还是GUI

命令行还是GUI

工具一直在往两个方向发展
一行命令解决一切问题 | 够大,够扁平,够傻瓜的GUI
那么,最后哪个才会赢得最后的胜利?

我一直认为,一行指令之所以还能存在,完全是因为GUI发展的还不够强大,还不够方便
能通过点击n个(只要n不至于太多)解决的问题,为什么要去抠那一行行夹杂着各种奇怪语法,晦涩表达式的命令行?
人类发明工具,就是为了让自己更好用,而不是给自己增加学习成本,给教材供应商创造商机的。

进一步说,
现在我们所见到的种种基于文本字符的编程语言工具,
在不久的将来,估计都要被图形化的编程工具所代替
这里的图形化不是指充斥按钮的IDE,而是真正意义上,由流程、对象等图形化元素构成的编程(如果那时还叫编程的话)语言。


GUI: 优势是学习成本低;不足是在熟练的情况下操作速度不如 CLI
CLI: 优势是定制更灵活,熟练情况下操作速度快;不足就是学习成本巨高无比

因此适用场景是这样的:

对于业余的用户,使用一些不常用的软件,GUI 能够降低学习成本。
对于深度的用户,使用一些频繁使用的软件,用 CLI 可以提高操作效率。

如此算来,程序员还是适合用 CLI.


健叔曾经曰过:

凡是脱离实际情况讨论哪个更好的都是耍流氓。


具体情况具体分析。我不会去刻意追求用命令行处理所有的事情,也不会把所有的事情交给GUI。在适当的情景下使用适当的方法,此所谓"术业有专攻"。

就好比女人,都是韩国造你能忍?这个世界,还是多元一点好。


不考虑应用情景的设计就是胡扯。

对于业余用户,GUI显然对他们来说更友好,图形界面显然比控制台命令更直观,也比黑乎乎的控制台更具有美感。GUI可以做出来很绚丽的效果吸引用户。
但是对于专业用户而言,他们习惯于在键盘上面打字,而我们都知道键盘输入效率比鼠标更快,采用控制台模式能够提高效率。而且专业用户可能会写一些shell,控制台应用可以读取参数,方便用shell操作。

这就是为什么我们程序员平时不爱用GUI,但不得不学习如何开发GUI。


命令行主要是是给机器用的,GUI 主要是给人用的


说这么多都是废话,建议CLI。哪怕同样的水准,一个人在你面前CLI敲的飞起的时候,你心里也会默默的感叹一下,这么牛逼。换个思路,如果一个人GUI点个飞起,想必你不会有这么牛逼的感慨吧。


命令行的优势:

  1. 很多工具没有GUI,只有命令行
  2. 命令行程序的开发比GUI要容易一万倍
  3. GUI未必真的比命令行好用,你觉得命令行语法奇怪,我觉得有些GUI的交互更奇怪,起码命令行一打命令就能用,可是有一些GUI你一眼看上去根本不知道要点哪里,而更多GUI程序连全键盘操作都不支持我也觉得很奇怪,完全看不出来好用体现在哪里。在出错的时候更明显,命令行一般会告诉你错在哪里,可以针对性地做排查诊断,但大部分GUI只会告诉你出错了,甚至有些写得不好的GUI根本无法判断到底有没有出错
  4. 命令学习成本:是否命令行更高,还很难说,比如你可以用各种写好的shell,可以用alias来简化常用操作
  5. 习惯学习成本:这个明显是GUI比命令行高,比如所有的命令行都有标准输入输出,非正常退出都返回1,而GUI,一千个就有一千种用法
  6. 批处理和操作集成:即使在Mac这样一个强调软件要提供可用命令行操作的系统中,也有大把大把的GUI做得非常不到位,但命令行,你永远可以随意互相调用、互相输入输出(管道)、将输入输出重定向等等,你甚至可以将一堆命令集中起来变成一个自己的命令行“软件”。GUI?呵呵。
  7. 兼容性和适应性,无界面的linux怎么玩GUI,有界面的linux怎么兼容GUI,单片机怎么GUI,路由器怎么GUI……

一些后话:

首先,我不是命令行控,我非常喜欢GUI软件,但上面列的确实是命令行相对GUI的优势,命令行的存在是有其道理的。而你之所以会觉得难用,是因为你还没有习惯命令行的思维方式(或者还没有学会怎么使用命令行)。命令行一般喜欢把事情拆开来做,组合的过程由管道来完成,稍微组合一下就能完成非常强大的功能。这有点像我拿着PS却找不到怎么调“日系风格”就说PS很难用。只要你熟悉了PS的基本概念,你会发现PS虽然要花好几步才能调出来,但它其实不仅能调“日系”还能调“月系”、“年系”风格。

其次,你所谓的图形化编程在可预知的未来是无法实现的,因为编程的本质不在编码,而在问题描述,当你把一个问题用机器思维描述出来之后,你就发现其实写代码只是个打字的过程而已。换句话说,即使用图形,你也只能把最后的描述到实现的过程简化一丢丢(是否真的是简化还有待商榷)。当然还是上例,你可以用美图秀秀来一键完成“日系风格”,那也就存在你用一个图形完成一个程序的可能性,但你会发现,你对这个程序根本是无法掌握的,即使你觉得只有一点点不满意,你也没有办法修改它。这个时候其实已经不叫编程了,而叫调用,因为内部的过程已经全部是别人写好的了(也就是问题描述已经是别人做的,你只说了一句“帮我做这件事”)。


各有千秋,无所谓最后胜利。如果真有,我宁愿相信最后胜利是智能语音,我说什么,机器就干什么(还不用担心普通话口音不好)

回归正题,离开需求和应用场景的设计都欠妥。

举个小例子,如果机器需要执行一些具有先后顺序的任务。比如先下载一个东西,再解压,再安装,然后再去干点别的,然后再。。。命令行很容易办到。而你的 GUI 程序总不能先点击确定,然后等待下载完成,再点击下一步,再等待,再点击下一步吧。
人家敲完命令就去睡觉了,估计自己还在阻塞的等待。


简单来说看需求。

精细ps你没办法cli,但是批量改图,可以一个convert搞定一切;所以不存在gui胜利了,cli要完蛋,或者cli是落伍者这样的言论。

至于说楼主的假设,这个东西短时间内很难实现,而且效率真的会高吗?不如让人工智能自动编程更简单吧。图形化只是对于人更容易理解,不过gui是对于效率的妥协。


没有最好,只有最适合。并非所有工作都是使用GUI更合适。

比如需要自动化执行的任务,CLI程序配合bat/sh脚本非常方便,而GUI程序的解决方案显然要复杂太多。
还有需要在远程服务器上操作的程序,虽然也有远程桌面或VNC这样的东西存在,不过显然还是CLI更方便吧。


GUI 肯定是未来发展的大方向,毕竟科技就是为了让人更容易上手,用着更方便,那样用的人会越来越多,人一多相对的资源包括钱,开发的团队等就更多,也就是马太效应,从windows的发家史就能看到。
当然命令行也不会消失或者退化,肯定有一批人,也就所谓的牛人,会继续开发命令行。
这其实有点像文言文和白话文,白话文的人是大多数,但是偶尔有个人来淫几句文言文,那会显得相当有water平啊。


怎么用爽就怎么用呗,还纠结这个?

【热门文章】
【热门文章】