作为一名多年的iOS开发人员,多次触发我思酌“GUI编程与CLI编程”各自的优劣,尤其是在当我为界面交互花费大占比时间时,时常怀疑自己的工作性质,我终究还是为互联网工作的码农,而不是让互联网为我所用的明智人士。(容我把偏GUI编程看成是取悦他人,把偏CLI编程看成是取悦自己。)

-----前言

  • GUI = 功能逻辑 + 用户交互逻辑
  • CLI = 功能逻辑

支持CLI的意见:(摘抄)

1. 写GUI程序,不光要编写功能逻辑代码,还要用某个UI引擎编写一个和谐美化的界面展示给用户,如果还有很多的用户交互,功能逻辑和交互逻辑代码耦合在一起,那么代码量和代码复杂程度也会成倍增加。因为任何一个UI引擎的代码量都远远超出你要写的软件的功能逻辑代码的几十倍了,外加熟悉掌握UI引擎的用法,然后再去写界面的交互逻辑代码,这工作量也是翻几倍的。

举个简单的例子,让你做一个电子表格,比如类似于Excel的完成特定格式的数据的录入和保存,写个CLI的程序,才能有多少代码量,然而如果你要做成GUI形式的程序,代码量起码是CLI的几千倍了。

2. GUI的好处是“所见即所得”,缺点是“所见即全部所得”。

3. GUI环境通常受限于它们的设计者想要提供的能力。如果你需要超越设计者提供的模型,你大概不会那么走运,而且很多时候你确实需要超越这些模型。

4. 首先是编程方便,很复杂的功能对于GUI来说,在处理交互上可能要花费一个月时间,编写相同功能CLI的话可能只会用几天。

其次,也是最重要的是可组合:可以简单地将小程序组合起来实现各自所需要的复杂大功能。而且也方面GUI等程序在别处调用。

再次,就是跨平台。CLI不需要考虑太多平台相关的东西。而且还可以在它之上包装GUI。

还有一点就是,CLI方便远程执行,一行ssh命令就能做到。

5. CLI可以说是人机界面的远祖,哪怕是远古时期的纸带式计算机,也同样需要使用“命令行”方式工作。可以说命令行是最符合计算机工作方式的操作方式。

由于主要使用文本作为界面,CLI软件对计算机的要求也低得多,在同等配置的机器上也要比GUI软件的性能好得多。也正因此,CLI软件得以在广大的服务器系统上大行其道,在这些系统上,性能是最重要的。同时,由于具备了比GUI软件好得多的可伸缩性,CLI的使用范围也远比GUI广泛,在很多嵌入式平台上,我们甚至只能看到CLI的身影。

6. CLI的身上,带有编程的“影子”。

7.  尽管GUI提供了良好的易用性,极大地填补了人机对话的鸿沟,但在另一方面看来,实际上增加了软件开发的成本,缩小了软件的适用范围,同时降低了软件的工作性能。

支持GUI的意见:(摘抄)

1. 说句实话,如果用户都接受CLI程序的话,都会用CLI程序的话,还会有哪个Windows程序员吃饱了撑着,花百倍的工作量去做UI呢?

如果把Word或者Excel都做成命令行形式,那世界上得多增加多少Word或Excel的培训机构了?

如果把各种游戏比如《王者荣耀》做成命令行形式,那还能赚钱吗?

2. 说CLI用起来不舒服,至少对记忆力差又粗心大意的家伙是这样的。

3. GUI能呈现各种多媒体数据,而CLI基本只能呈现文本。

4. GUI由于采用了大量的图形元素,界面会更显得具有艺术性,富有人性化。相对于枯燥的文本来说,精致且合理的图形大大增加了界面的易用性。简洁明了的图形控件使得软件操作起来更为直观。

相较于GUI而言,CLI通常就不具备什么美观程度了。为了提高性能,CLI通常采用纯文本方式工作。

5. 快捷键取材于CLI,实质上是一种直接向系统发送指令的操作方式,但由于依赖于GUI,我把它归为GUI的工作元素,并视为提高工作效率而向CLI所作的折中。

6. 但毕竟人不是计算机,符合计算机的工作方式的同时也就意味着不那么人性化。

7. 另外,对于CLI软件来说,执行结果往往并不是那么清晰的。用户常常不得不面对满屏滚动的反馈信息,体验黑客帝国一般的快感,或者是仿效真正的黑客一般从浩瀚的log海洋中寻觅那条丝毫不起眼的提示信息。

8. 有人把CLI软件的工作方式称为“所想即所得”。这种方式的特点在于,虽然没有直观地反应出执行结果,但却能保证执行结果可以和你的意图一样。从某种程度上来说,这种说法是正确的,因为用户的意图总是以“命令 + 参数”的方式精确地传递给系统,最后虽然不能直观地看到执行结果,却总能发现系统已经出色并严格地完成了工作。但从某种意义上来说,这种说法是不准确的,因为当面对着长长的参数手册时,用户往往已经搞不清自己的意图到底是什么了。

9. GUI软件可以通过使用大量的图形元素和图形特效,从根本上改变软件的表现形式,“美观”和“人性化”渐渐成为软件界面设计的讨论主题。随着计算机处理能力的发展,我们甚至能够以3D的形式来呈现和操作软件。大量GUI软件的出现大大降低了学习和使用计算机的门槛,赏心悦目的操作界面吸引了各行各业的人投入其中。如果说CLI适应了各种各样的计算机,GUI则适应了各种各样的人。

10. 以操作系统开发商为例,可以说,如今做能坚守一易用性阵地的当属苹果公司。尽管其产品同样存在一些瑕疵,但直到今天,苹果公司仍然坚持发展人机界面设计学,其创造的GUI软件大都是艺术性和易用性结合的典范。

中立态度:(摘抄)

1. 因为两者面向的用户不同,初中也不同。今天看了《程序员修炼之道》这本书,可谓是有了更深入的了解。GUI侧重于易用,CLI则侧重于效率。

2. 现在几乎所有人都没办法离开GUI,对于程序员等专业用户来说不可能离开CLI。

转载于:https://www.cnblogs.com/cchHers/p/11087787.html

GUI编程与CLI编程相关推荐

  1. 新书《Python Qt GUI与数据可视化编程》

    经过一年多写作和出版社的编辑加工,我的第二本书<Python Qt GUI与数据可视化编程>马上就正式上架了,敬请关注. 本书介绍在Python中使用PyQt5和其他模块进行GUI和数据可 ...

  2. Python用opencv实现动态识别二维码,以及加强版Python GUI(图像用户界面编程)

    前言 关于动态识别二维码信息,利用电脑摄像头动态扫描二维码,扫描视频中的二维码. 简易程序 import cv2 pip install opencv-pythondef start():captur ...

  3. pythongui可视化编程_Python Qt GUI与数据可视化编程

    商品参数 Python Qt GUI与数据可视化编程 定价 99.00 出版社 人民邮电出版社 版次 dy 版 出版时间 2019年09月 开本 16 作者 王维波 等 装帧 平装 页数 488 字数 ...

  4. python qt5 gui快速编程_现货正版 Python Qt GUI与数据可视化编程 pyqt5教程书籍 pyqt5快速开发与实战Qt5 GUI快速编程 计算机网络程序设计人民邮电出版社...

    热销单品 查看更多 > RMB:85.00 立即购买 RMB:63.50 立即购买 RMB:73.50 立即购买 RMB:49.50 立即购买 RMB:127.80 立即购买 RMB:66.00 ...

  5. 基于MATLAB软件GUI界面的可编程电音合成器软件

    基于MATLAB软件GUI界面的可编程电音合成器软件 1 总体设计 1.1 设计思路 1.2 软件运行 2 软件功能说明 2.1 软件界面 2.1.1 菜单栏 2.1.2 工具栏 2.1.3 MySy ...

  6. 软件开发书籍-Python Qt GUI与数据可视化编程

    Python Qt GUI与数据可视化编程 王维波,栗宝鹃,张晓东 著 ISBN:9787115514165 包装:平装 开本:16开 正文语种:中文 出版社:人民邮电出版社 出版时间:2019-09 ...

  7. python GUI图形界面化编程——Tkinter

    一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读 GUI图形界面化编程 一.前言 一.GUI图形界面化编程 二.常用的GUI库 三.GUI 编程的核心步骤和第一个 GUI 程序 设置窗口的 ...

  8. python编辑器_没有人比它更懂少儿编程,慧编程Python'吮指编辑器'

    咳咳! 大家好,我是偶尔写文章的康康老师. 今天跟大家介绍的是慧编程家的,睡在Scratch上铺的兄弟--慧编程Python编辑器. 这是一款集才华和颜值为一体的'吮指'编辑器! 忘记肯德基,你的手指 ...

  9. python编程规则_python编程规则

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 只有写一个完整的不依赖系统命令(如,复杂的程序)的情况下才有必要用到python ...

最新文章

  1. NYOJ 366 D的小L
  2. windows server 2008 R2 初试Hyper-V(一)
  3. 迷宫收集星星 并查集解答
  4. 请按正确方法给UPS电源充电
  5. easypoi needmerge失效_EasyPOI简单用例,简单有效
  6. c++ 不插入重复元素但也不排序_面试官爱问的 10 大经典排序算法,20+ 张图来搞定...
  7. HTML嵌入php已经过时,**PHP, 这段嵌入html的php代码为何第15、16、17行报错?**
  8. Java跳转语句break与continue
  9. 我只是bug的搬运工之jsp 编辑预览时样式可以显示出来,而在浏览器浏览时无法显示出来!
  10. oracle18c升级19,Upgrading Oracle 18c To 19c
  11. javah生成的头文件在方法名前加1
  12. 电子设计教程41:软启动电路-电阻+并联开关
  13. Rational Rose使用说明
  14. math_常用放缩不等式及其变形@指数@对数@三角函数@一次函数
  15. 银行资产业务和负债业务
  16. 贪心背后的故事Codeforces 995B(Suit and Tie)
  17. 2020年下半年系统集成项目管理工程师上午试题解析(一)
  18. Transformer中引用iqd作为数据源导入报错TR1907与TR3312
  19. 在VMware10下安装VxWorks6.6虚拟机教程(上篇——准备环节)
  20. java简单代码逻辑实现数学黑洞6174

热门文章

  1. parted如何将磁盘所有空间格式化_linux下大于2T的硬盘格式化问题
  2. oracle 慕课课程_“慕课”在Oracle数据库课程中的应用探讨
  3. uefi启动 多硬盘gtp_传统引导更改为UEFI+GTP
  4. asp.net编程网页弹窗显示变量_CODESYS Engineering:面向工程应用编程的工具软件
  5. python编写查询_如何用python脚本编写查询
  6. 在java中使用关键字导入包_java中import关键字的使用方法
  7. linux安装软件测试报告,软件测试实习报告
  8. 天津大学仁爱学院c语言期末考试题,天津大学《C语言程序设计》2016年7月考试期末大作业...
  9. IDEA使用指南常用快捷键
  10. Maven项目,项目上出现红叉,项目内没有报错,可以运行