GUI编程与CLI编程
作為一名多年的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编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue实现Excel文件的上传与下载
- 下一篇: angular 的配置文件的应用