GUI編程與CLI編程

做爲一名多年的iOS開發人員,屢次觸發我思酌「GUI編程與CLI編程」各自的優劣,尤爲是在當我爲界面交互花費大佔比時間時,時常懷疑本身的工做性質,我終究仍是爲互聯網工做的碼農,而不是讓互聯網爲我所用的明智人士。(容我把偏GUI編程當作是取悅他人,把偏CLI編程當作是取悅本身。)程序員

-----前言編程

  • GUI = 功能邏輯 + 用戶交互邏輯
  • CLI = 功能邏輯

支持CLI的意見:(摘抄)小程序

1. 寫GUI程序,不光要編寫功能邏輯代碼,還要用某個UI引擎編寫一個和諧美化的界面展現給用戶,若是還有不少的用戶交互,功能邏輯和交互邏輯代碼耦合在一塊兒,那麼代碼量和代碼複雜程度也會成倍增長。由於任何一個UI引擎的代碼量都遠遠超出你要寫的軟件的功能邏輯代碼的幾十倍了,外加熟悉掌握UI引擎的用法,而後再去寫界面的交互邏輯代碼,這工做量也是翻幾倍的。服務器

舉個簡單的例子,讓你作一個電子表格,好比相似於Excel的完成特定格式的數據的錄入和保存,寫個CLI的程序,纔能有多少代碼量,然而若是你要作成GUI形式的程序,代碼量起碼是CLI的幾千倍了。ssh

 

2. GUI的好處是「所見即所得」,缺點是「所見即所有所得」。性能

 

3. GUI環境一般受限於它們的設計者想要提供的能力。若是你須要超越設計者提供的模型,你大概不會那麼走運,並且不少時候你確實須要超越這些模型。學習

 

4. 首先是編程方便,很複雜的功能對於GUI來講,在處理交互上可能要花費一個月時間,編寫相同功能CLI的話可能只會用幾天。spa

其次,也是最重要的是可組合:能夠簡單地將小程序組合起來實現各自所須要的複雜大功能。並且也方面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。 

相關文章
相關標籤/搜索