Best Text Editor ? VS code vs Vim vs Sublime vs Atom vs EMACS
Prime21的2020軟工軟件案例分析
看到老師的關於VS和VSC的一個選題,我自主主張進行了一些調整,想把VSC這一出色產品和主流的editor作為一個對比,關於VS和VSC的部分在文章的后半段,想先睹為快也可以直接移步。
項目 | 內容 |
---|---|
班級:北航2020春軟件工程 006班(羅傑、任健 周五) | 博客園班級博客 |
作業:分析軟件產品,提出建議和規划 | 個人博客作業-軟件案例分析 |
個人課程目標 | 系統學習軟件工程技術,訓練軟件能力 |
這個作業在哪個具體方面幫助我實現目標 | 學習軟件產品實例,從思考中總結、體會 |
目錄
目錄
- 調研
- 軟件bug
- 功能bug
- 黑箱測試
- 用戶調研
- 用戶體驗
- 軟件分析
- 功能搭建耗時分析
- 軟件排名預估
- 軟件工程提高建議
- bug修復思考
- 軟件如何脫穎而出
- 市場需求分析
- 競爭關系分析
- 用戶人群畫像
- 功能性設計與NABCD分析
- 開發團隊設計
Best Text Editor ? VS code vs Vim vs Sublime vs Atom vs EMACS
調研
調研速覽
主流編譯器部署與應用,初步測試與解析我們有了一個初步印象,我們按照產品的年代,第一次打開需要的時間,軟件的穩定性測試,軟件的UI界面,軟件的可定制化性,給軟件做了一個初步的影響評分。
- Vim
- 29年老程序了,現在
vi/vim
都還是眾多linux發行版的默認編輯器,同樣眾多服務器端的程序也有用vim編輯的慣例 - Vim最早畢竟是個TUI/CLI的應用,打開的第一眼,你可能只能看到一片空白,和經典的幫助烏干達的可憐兒童
- vim作為一個自帶一門語言的高級editor,可以說
vimscript
和正則表達式的強大功能,也是vim
獨領風騷這么多年的一個重要原因,是眾多開發者心目中的白月光。 - vim 有很多兒子,比如gvim, neovim
- 29年老程序了,現在
- Atom
- Electron 親兒子,畢竟Electrom最早也叫
Atom Shell
,可以說是Web新時代最先進,最優秀的跨平台開發技術之一。 - 打開官網可以看到那句Atom聖經
A hackable text editor for the 21st Century
,有一種感覺自己走入了hacker的世界,走入屬於21世紀划時代意義的編輯器之作
- Electron 親兒子,畢竟Electrom最早也叫
- Emacs
-
這是一個OS淪為一個editor的悲傷故事,一個有完整的Lisp解釋器,C語言底層,文能寫代碼做工程,武能網上沖浪解放思想。
-
當然Emacs是自由軟件運動領袖Richard Stallman的代表作,打開Emacs的那一刻,我都感覺自己在致敬作者了
-
當然,作為Editor界的兩大門派,Vim和Emacs在這些小弟還沒有出現之前就打的不可開交,至今你還能找到類似知乎這樣的論壇,天天黨爭
-
當然Emacs的開箱體驗可能和Vim一樣,你甚至不知道該如何開始寫代碼
-
- VS code
- 自從vscode remote 和 vscode online上線之后,可以說,vscode真正走在了一條無人走過的editor新道路。
- 遠程環境部署
- 配置部署與開發分離,測試瀏覽和開發耦合
- 和atom一樣,VS code也是基於Web技術棧工具Electron開發的
- 本人經歷而言,在一個任何場合都想試試
edit with vim
的男人,VS code有效的改變了我用Vim打開任何文件先瞧瞧的方式 - 有一說一,用快捷方式輸入
vs
,提示的第一個並非是Visual Studio
而是Visual Studio Code
^_^
可能vs才是這場戰斗的最大輸家吧。
- 自從vscode remote 和 vscode online上線之后,可以說,vscode真正走在了一條無人走過的editor新道路。
- Sublime Text 3
- 一個非常有逼格、看起來非常壕的editor
- 當然也非常非常好用,很長一段時間,sublime在周圍朋友的電腦里的保有率超過了50%
- sublime用他的優秀的UI征服了太多人~
Editor | Age | Speed | Stability | Price | UI/UX | Customisability |
---|---|---|---|---|---|---|
Vim | 29 | High | High | Free | Low | Very High |
Atom | 6 | Medium | Medium | Free | Very High | High |
Emacs | 35 | Low | High | Free | Medium | Very High |
VS code | Medium | High | Free | High | Medium | |
Sublime Text 3 | 12 | High | High | $80 | Medium | High |
用戶體驗
當然在editor里面,最重要的用戶體驗就是學習曲線相關的用戶體驗,我們來看一下學習上手這些軟件遇到的困難和問題。
bug
當然這些軟件也並非都是完美的,以下是一些測試中出現的bug
- VS code: remote功能頻繁鏈接失敗,有的時候需要刪除服務器端的
.vscode
文件 - Vim : GUI模式的色彩配置和TUI模式的常常不兼容,需要自己定制化寫代碼
- Atom : 插件並非全部都能支持
- VS code: 頁面的渲染和刷新不及時,有內存泄漏的可能
軟件分析
評估開發時間
如果要一個6人本科生團隊而言,做出以上大部分產品的復現還是特別難的
editor | 預估我們的團隊開發時間 |
---|---|
VS code | 6個月~8個月 |
Vim | 3個月~5個月 |
Emacs | 1年以上 |
Sublime Text | 8個月~10個月 |
Atom | 4個月~7個月 |
可以說開發一個優秀的編輯器是非常難的,因為編輯器產生的是開發者習慣的變革,開發者論壇環境的突破,這有很大的用戶粘性。
量化這些editor的排名
根據我們之前的若干表格,我們可以對這些editor進行10級制度評分
Editor | Learning cure | Stability | Customisablitiy | UI/UX | Speed | Score for newbie | Score for master |
---|---|---|---|---|---|---|---|
VS code | 9 | 8 | 7 | 8 | 7 | 8 | 9 |
Sublime Text | 8 | 10 | 5 | 8 | 8 | 9 | 7 |
Atom | 7 | 6 | 7 | 10 | 7 | 8 | 8 |
Vim | 3 | 7 | 10 | 6 | 10 | 6 | 10 |
Emacs | 2 | 9 | 10 | 4 | 6 | 6 | 10 |
總評分如下
Editor | Total Score (Max Score : 70) |
---|---|
VS code | 56 |
Sublime | 55 |
Atom | 53 |
Vim | 52 |
Emacs | 47 |
總分來看,我們首推VS code
和 PYPL的top IDE index 榜單相比,我們的排名具有一致性,也體現了我們測試人員的專業性和行內眼光。
Rank | Change | IDE | Share | Trend |
---|---|---|---|---|
1 | Visual Studio | 24.08 % | +1.2 % | |
2 | Eclipse | 17.26 % | -4.1 % | |
3 | Android Studio | 16.7 % | -0.6 % | |
4 | ![]() ![]() |
Visual Studio Code | 6.49 % | +2.0 % |
5 | ![]() ![]() |
pyCharm | 6.0 % | +1.8 % |
6 | ![]() ![]() |
NetBeans | 5.84 % | -0.9 % |
7 | ![]() ![]() |
IntelliJ | 5.38 % | +0.6 % |
8 | ![]() ![]() |
Xcode | 4.55 % | +1.1 % |
9 | ![]() |
Sublime Text | 3.91 % | -0.1 % |
10 | ![]() |
Atom | 3.34 % | -0.4 % |
11 | Code::Blocks | 1.95 % | -0.0 % | |
12 | Vim | 0.92 % | -0.1 % | |
13 | ![]() |
PhpStorm | 0.67 % | -0.1 % |
14 | ![]() |
Xamarin | 0.65 % | -0.2 % |
15 | Komodo | 0.37 % | -0.2 % | |
16 | Qt Creator | 0.32 % | -0.0 % | |
17 | ![]() |
geany | 0.27 % | -0.0 % |
18 | ![]() |
Emacs | 0.24 % | -0.1 % |
從專業表格來看VS code在同類排名中占據了第4的高位,其之上的三位巨頭,分別是Windows編程工具鏈: Visual Studio Code,java編程工具鏈Eclipse, Android編程工具鏈 Android Studio,可以說,從universal
的角度來看,VS code 已經是第一。
bug的可修補性分析
關於之前提到的一些bug,我想說一些現有editor bug的一些分析
- VS code
- github上共有4517個issue open, 80918 closed作為一個年輕的editor,VS code還在不斷的開發、更新、迭代、消除版本和版本之間存在的一些兼容性bug和插件的相容性bug
- 有不少bug其實也是開發過程中難免會遇到的一些與終端和各種OS兼容性的bug,我覺得是可以接受的
- Vim
- 神仙本人還在一直堅守維護vim和vim8,當然vim由於一些傳統的兼容性原因,和歷史包袱,導致很多bug其實是從config階段就要更新的問題,不是那么容易解決
- https://github.com/vim/vim/issues
- Atom
- Electron時代的標志者,Atom的很多bug其實是伴隨着Electron的使用普及開始的,有的一些bug可以看到的是多次commit里面反復修改又出現的
- Sublime
- 不說了,充值使我變強
- Emacs
- 操作系統沒bug還能叫操作系統么
如果我是項目經理
眾多editor用戶畫像
在此,對這些Editor的實用對象和推薦用戶做一個分析
editor | 適用人群 | 推薦理由 |
---|---|---|
VS code | 小白必備,常用GUI編輯器 | 上手簡單,很多功能有插件實現 |
Vim | 服務器端, Linux 終端開發人群 | 原生自帶,很多功能在TUI這種劣質環境下,Vim會是一把利器 |
Emacs | Emacs狂熱粉絲 | 太狂熱了 |
Sublime | 有錢的Mac用戶 | Mac和Sublime的相容性實在是比另外幾個好太多了 |
Atom | 前端工作者 | Atom是Web開發的集大成者,Web開發真的必須一個這么美觀的,hackable的工具 |
editor未來需求分析
editor | 實用性需求 | 擴展性需求 | 用戶群體變化 |
---|---|---|---|
VS code | 現有插件的架構還是不靈活,插件多了很慢需要解決,插件管理工作和插件版本管理工作還不夠強大 | vscode-remote和vscode-online可能是未來最大的亮點,也會解決很多現在遠程開發和快速部署環境的一個巨大痛點 | 很多PM和很多服務器端開發人員可能會越來越習慣vscode remote和 vscdoe online,面向未來用戶需求可能會有更多的智能化配置 |
Atom | 前端開發中存在的很多兼容性問題和調試問題還有插件的擴展相容性問題急需解決 | 前端開發和多種設備的支持,還有很多特性功能的提升,解決不少崩潰問題 | 前端用戶將持續保留,如何留住后端用戶是一個好的考慮 |
Vim | vim8還是有很多老的架構和很多人使用的插件可以搭載的 | 論壇可以更加有活力一些,論壇的技術棧太深,如何做一些普及性的工作 | 可能會稱為vscode-vim,atom-vim,jetbrain-vim,vim會稱為一個插件式的存在,牢牢印在幾代人心中 |
Emacs | 坐等轉操作系統 | 坐等轉操作系統 | 和Vim類似,稱為一代情懷產品 |
Sublime | 會不會出Sublime 4呢? |
VS 和 VSC的對比
首先一點是,VS和VSC的開發目的本就不同,雖然他們界面有相似性,我們可以從下表來對比一下
Visual Studio | Visual Studio Code | |
---|---|---|
產品定位 | IDE | editor (universal IDE ) |
產品易用性 | 有上手時間,需要熟悉掌握所有功能時間較久 | 開箱即用,特別方便,學習成本低 |
產品地位 | 行業老大,功能全而pro | 開發者眾多,使用熱情火熱 |
產品目標 | 開發高級工具鏈 | unix精髓思想editor |
軟件量級 | 重量級 | 輕量級 |
產品生態 | Microsoft,Visual Studio Family的老大 | Visual Studio Family,和很多開源產品合作 |
IntelliSense | Advanced IntelliSense | Has IntelliSense(limited) |
Usage | Mostly used for C/C++ (Windows), .NET and C# projects along with SQL Server, database, etc. | Mostly used for web development (this applies to all free text editors). |
Build a Project | It features built-in debuggers, easy-to-configure project settings | Build tasks are project specific. |
所以可以看到,兩者的用戶人群,和使用場景有所不同,各有各的好處,各有各的特點。