天天看點

30 年,IDE 進化了多少?

作者:CSDN
30 年,IDE 進化了多少?

【CSDN 編者按】IDE 經過 30 年的發展,種類越來越繁多。放眼國際,主流的 IDE 有 Intellij IDEA、Eclipse、PyCharm、Visual Studio Code 等等;近幾年國産 IDE 也相繼崛起,如 deepin-IDE、CodeArts IDE 等。

面對不斷湧現的 IDE,有軟體開發者 Julio Merino 指出,30 年前我們所擁有的 IDE 雖然沒有圖形界面,但是卻帶來了許多令人印象非常深刻的功能,如今 随着時光的流逝,很多功能失去了,而且如今的 IDE 并沒有太大的進步,唯一的差別可能隻是添加了 AI 輔助代碼功能。

此觀點一出,也引發了巨大的讨論。接下來,我們将走入 Julio Merino 這篇文章,深入探讨我們過去擁有的文本編輯器以及與當今主流編輯器的最新比較,也旨在推動 IDE 更好的未來。

原文位址:https://blogsystem5.substack.com/p/the-ides-we-had-30-years-ago-and

本文為 CSDN 翻譯,未經允許禁止轉載。

編譯 | 蘇宓

出品 | CSDN(ID:CSDNnews)

以下為譯文:

我是在 20 世紀 80 年代末 90 年代初學習程式設計長大的。那時,我并沒有完全了解我在做什麼,以及為什麼我使用的工具在當時硬體存在限制的條件下,表現得令人印象深刻。随着年齡的增長,現在通過使用 DOSBox 重新體驗那些程式并将它們與我們目前的狀态進行比較真的很有趣。

這一次,我想看看在 Windows 主導個人電腦行業之前那個時代我們所擁有的純文字 IDE。我想這樣做是因為那些 IDE 幾乎毫不遜色于今天的 IDE。然而,感覺好像我們經曆了一個黑暗時代,在那段時間内我們失去了大部分功能,而時代似乎是個輪回,這些功能現在才重新浮出水面。

接下來,我們将領略一次懷舊之旅,同時對“臃腫的 IDE”發表一點看法。但更重要的是,繼續了解以前存在的東西,才能更好地評估未來功能的推出。

30 年,IDE 進化了多少?

第一款編輯器和 TUI 界面

在 20 世紀 90 年代,幾乎每個運作的 DOS 程式都有一個全屏的文本使用者界面(TUI),它具有基于文本的視窗、下拉陰影、顔色和滑鼠支援。以下是一個示例:

30 年,IDE 進化了多少?

MS-DOS 編輯器(也稱為 EDIT.COM)展示了其中一個設定對話框。請注意菜單欄、帶有清單選擇器和按鈕的豐富對話框,以及記錄了導航快捷方式的狀态欄。

每個程式都是獨立的,因為它們的界面是獨特的。然而,它們在外觀上如此相似(80x25 個字元沒有太多的差異),以及它們的工作方式如此相似,以至于這些差異實際上并不妨礙可用性和可發現性。一旦你學會了 Alt 鍵打開菜單,Tab 鍵在輸入字段和按鈕之間切換,你幾乎可以輕松地浏覽任何程式。

但是我們來談談編輯器。MS-DOS 從第 5 版(1991年)開始附帶了一個 TUI 文本編輯器,如上圖所示。這個編輯器“能用”,但對于編碼來說确實很不友善:你需要退出編輯器來編譯和運作你的代碼,當你重新運作編輯器時,你需要導航回到之前的位置。

在“我家”中,我們使用了一個叫做 SideKick Plus(1984年)的東西,它不是一個真正的代碼編輯器:它更像是一個帶有内置記事本的個人資訊管理(PIM)系統。然而,它的酷炫之處在于它是一個常駐程式(TSR),這意味着它在背景加載,并且你可以随時通過按下 Ctrl+Alt 鍵來調出它。

30 年,IDE 進化了多少?

按下Ctrl+Alt鍵後,SideKick Plus的主螢幕出現。請注意DOS仍然在背景運作。

将這個 TSR 功能視為一種基本的多任務處理方式,适用于沒有多任務處理的作業系統。這非常有效,因為在高效的内部開發循環中,快速切換代碼編輯和建構是至關重要的。

然而,到這個時候,真正的 IDE 已經存在了幾年。Turbo Pascal 1.0(1983年)展示了一種內建體驗的開始,盡管它還沒有其标志性的 TUI 界面。QuickBASIC 2.0(1986年)展示了更多“傳統”的TUI界面(與EDIT.COM相同,因為它們是同一個編輯器),而 MS-DOS 5 附帶了 QBasic,這是QuickBASIC 的簡化版本,它不允許編譯為本機代碼,但外觀相同。

30 年,IDE 進化了多少?

Borland 公司開發的 Turbo 系列

在我看來,IDE 的巅峰之作是後來的 Borland Turbo 系列,其中包括 Turbo C++(1990年)、Turbo Assembler 和 Turbo Pascal。這些 IDE 是特定于語言的,但它們擁有全屏的 TUI 界面,并且功能非常強大。

讓我們來看看當時擁有的功能。文法高亮:

30 年,IDE 進化了多少?

Borland Turbo C++ 顯示一個用于示範文法高亮的“Hello World”程式。

編譯器內建和診斷:

30 年,IDE 進化了多少?

Borland Turbo C++編譯一個程式後顯示一個警告,因為我沒有從main()函數傳回值。

內建的項目和建構系統管理:

30 年,IDE 進化了多少?

Borland Turbo C++顯示其項目管理和多視窗功能。在圖檔中,你可以看到兩個C++源檔案,其中一個依賴于另一個,并且項目視窗列出了所有需要一起編譯的檔案。

帶有斷點、堆棧跟蹤等功能的調試器:

30 年,IDE 進化了多少?

Borland Turbo C++ 顯示一個包含多個函數、斷點和目前調用堆棧的調試會話。

甚至還有完整的參考手冊:

30 年,IDE 進化了多少?

Borland Turbo C++顯示其內建的幫助系統,背景中是“Hello World”程式,而幫助中是printf函數的說明。

請記住:這些都是在 20 世紀 90 年代早期,距今已經過去了 30 多年。

我是 Turbo C++ 的忠實使用者,通過它我學到了很多東西。我記得使用它們的 conio.h 庫來實作自己的 TUI,并使用它們内置的 graphics.h 庫來嘗試實作 GUI。請注意:這是在沒有網際網路的情況下完成的。對于很多人來說,沒有“查找事物如何工作”的選項,也不能在 Stack Overflow 上找到答案:IDE 必須是即時可發現的(而且它确實是這樣的),并且是自包含的,為你提供完整的開發體驗。

30 年,IDE 進化了多少?

那時候的 Linux 怎麼樣?

那麼回顧一下 20 世紀 90 年代初的 Linux 情景。

在 Linux 中,幾乎每個程式都是基于文本的,但這些程式并沒有提供全屏的 TUI(文本使用者界面)。這不符合“Unix的方式”。我記得當時看到 X11 配置工具(XF86Setup)或 OpenBSD 安裝程式時,對它們的簡單性感到震驚:連我這個幾乎沒有什麼“真實”程式設計經驗的年輕少年都已經寫出了好看的程式。

無論如何,這并沒有阻止我追求不使用 Windows 的目标。我繼續學習 Linux 的知識,并很快經曆了每本書和線上社群都在推薦的“最佳”編輯器:Vim 和 Emacs。但我無法了解它們為什麼受到如此高的歡迎。使用它們就像回到了過去。它們确實是全屏程式,但看起來相當晦澀。Vim 确實支援文法高亮,但遠遠稱不上是一個 IDE。Emacs 可以配置與一些代碼輔助功能等內建,但也遠遠稱不上是類似“開箱即用”的 Turbo 系列 IDE。

看看今天的預設 Emacs 配置,它自那時以來幾乎沒有改變。它确實有視窗,但它們沒有裝飾。它沒有顔色(現在依然幾乎沒有);過去不支援滑鼠。雖然它确實有一個菜單欄,但這隻是一個噱頭?如果按照說明按下 M-` 鍵,你會面對一個真正奇怪的界面來導航菜單,這讓人懷疑為什麼他們甚至要浪費一整行螢幕空間來顯示一個毫無作用的菜單欄。

30 年,IDE 進化了多少?

現在試着把這些交給一個沒有程式設計經驗的人,讓他們來建立、編譯和調試一個程式。他們在浏覽編輯器時會遇到麻煩,也找不到任何能夠進行項目管理或編譯器內建的功能。

相比之下,在撰寫這篇文章時,我在 DOSBox 中啟動了 Turbo C++,隻需要幾分鐘就能夠建立一個“Hello World”的項目并且在環境中進行導航,而且一切都是直覺的。作為一個 IDE,它提供了全面的內建。

30 年,IDE 進化了多少?

當代 TUI IDE

無論如何。讓我們忘掉過去,看看 TUI 領域的今天。我不想看 GUI,因為......Visual Basic 曾是圖形程式設計的巅峰之作,而我們現在也沒有了,這也是後話了。

與 Borland Turbo C++ 環境最接近的現代版本是 RHIDE(https://directory.fsf.org/wiki/RHIDE)。如下圖所示,它看起來非常相似——如果你以為這是 Turbo C++,那就大錯特錯了。遺憾的是,它隻能在 DOS 環境下運作,而且現在似乎已基本廢棄,其最新版本釋出于 7 年前。

30 年,IDE 進化了多少?

RHIDE IDE 顯示的 "hello world "程式與之前的一樣,編譯後既無錯誤也無警告。

然後就有了 Free Pascal。這是最接近舊版本的體驗,但采用了現代代碼庫,可在 Unix 系統上本地運作,并可利用任何大小的終端。

30 年,IDE 進化了多少?

Free Pascal IDE 包含一個簡單的“hello world”程式,以及用于内置 ASCII 表格和電腦的重疊視窗

最後是 QB64。它與 Microsoft QuickBasic 非常相似,但......别被它騙了:盡管它看起來像一個 TUI,但它實際上是一個模拟 TUI 的 GUI 應用程式。你不能在終端運作 QB64。

30 年,IDE 進化了多少?

QB64 IDE 看起來像文本,但實際上是圖形程式。

Free Pascal 和 QB64 都在維護和相對活躍的開發中,它們的最新版本釋出于 2021 年......但它們大多被忽視了,因為它們使用的是現在大多數人都不感興趣的晦澀語言。

30 年,IDE 進化了多少?

“真正的”現代控制台 IDE

那麼對于現代程式設計語言而言,我們還剩下什麼選擇呢?

目前最先進的選擇似乎是 Neovim(https://neovim.io/)、Doom Emacs(https://github.com/doomemacs/doomemacs),甚至是 Helix(https://helix-editor.com/)。這些編輯器非常強大,并且通過各種插件提供了類似于 IDE 的體驗。

不過,如果你問我,我覺得這些編輯器都沒有像之前的 Borland 産品那樣提供相同的體驗:它們的界面很複雜,并且由于支援多種語言,對于幾乎所有語言都能工作得不錯,但是對于特定語言來說并不出色。可以說是“萬能但不精”。

無論如何,根據我在 microsoft/terminal#16440(https://github.com/microsoft/terminal/discussions/16440)讨論中觀察到的情況來看,首選的“簡單”TUI(文本使用者界面)編輯器似乎是 GNU Nano......但其實首先它不是 IDE;其次對我來說,它看起來像 WordStar。Nano 的外觀讓我想起了我在 CP/M 時代使用文字處理器的第一次經曆。看看這個:

30 年,IDE 進化了多少?

GNU Nano 編輯器的預設設定,打開一個空檔案。

是以,盡管現在我們有很多功能強大的控制台編輯器,但它們并沒有提供與 30 年前完全相同的可用體驗。事實上,感覺在這 30 年間,我們在很多方面出現了倒退,直到現在才達到了一些曾經擁有的功能水準。

當圖形化作業系統開始流行起來時,TUI(文本使用者界面)自然而然地變得不那麼受歡迎,而它們最近才重新流行起來确實有些有趣。至于為什麼會有這種趨勢,我認為我們應該歸功于 LSP(Language Server Protocol)的發明對這個領域的最新進展。

多年來,TUI 編輯器一直“擱置”不前,因為為它們建構 IDE 功能需要很大的努力,而且它們的小型維護人員團隊無法承擔實作這些功能的成本。LSP 為現有的語言特定內建提供了接入方式,并重新激發了對古老而可靠的 Vim 和 Emacs 的興趣。希望即将釋出的 BSP(Build Server Protocol)能夠更進一步,使這些 TUI 編輯器更像 IDE。

30 年,IDE 進化了多少?

為什麼要使用 TUI IDE(基于文本使用者界面)?

有人會問:“誰在乎呢?現在每台桌上型電腦和筆記本電腦都運作圖形作業系統了!”

這個問題問得好。

一般來說,你可能不需要 TUI IDE。如果 VSCode 是你的首選,那麼它的遠端處理能力是一流的,而且 VSCode 擁有一個相當不錯的圖形界面,而不是一個完整的內建開發環境。但是,VSCode 也有一些不足之處。

首先,TUI IDE 非常适合在遠端計算機上工作,甚至比 VSCode 更好。你可以通過 SSH 輕松進入任何機器并啟動 IDE。将其與 tmux(終端複用器類自由軟體,功能類似 GNU Screen)相結合,就能獲得“完整”的多任務處理。當然,你也可以使用遠端桌面用戶端來代替 SSH,但我總覺得遠端桌面用戶端很笨拙,因為會出現延遲,而且與本地桌面快捷方式的整合也不恰當。

其次,VSCode 的遠端擴充不是開源的,這并不是什麼大問題......隻是它們無法在 FreeBSD 等作業系統上運作,而且也無法修複。是以,我無法使用 VSCode 遠端登入我的主開發伺服器。

第三個問題是......減少資源消耗。

30 年,IDE 進化了多少?

無處不臃腫的 IDE

最後,我還想吐槽一下“IDE 的臃腫”問題。Borland 公司在 1990 年釋出的 Turbo C++ 編譯器,配備了所有應有的功能(UI、C++ 工具鍊、內建手冊...),安裝後大小不到 9 MB,在 640KB 的 RAM 内運作。

相比之下,Helix 文本編輯器在磁盤占用的空間也隻有 16 MB,但 Doom Emacs 占用大約 500 MB,并消耗 RAM 的許多空間。然而,請注意,過往這些工具都不包含語言工具鍊或幫助系統,而現代工具鍊在磁盤空間都是以 GB 為機關。

要獲得“真正的”IDE,我們必須轉向使用 IntelliJ、VSCode 這類的圖形程式。不過,VSCode 占用磁盤空間約為 350 MB(令人驚訝地比 Doom Emacs 少),但它可能會吃掉你的電腦(占用記憶體):畢竟它是基于 Electron 開發的。我注意到通過放棄 VSCode 并轉向 Doom Emacs,可以顯著節省筆記本電腦的電池壽命。

是以,我想要留下的問題是:在 30 年内,IDE 進步了多少?現代 IDE 擁有一些更好的重構工具、更好的功能并支援更多的語言,但從根本上來說...它們并沒有太大變化。

對比 30 年前和 30 年後的 IDE,唯一主要差別可能是 AI 輔助編碼,但這是一項主要由遠端服務提供的功能,甚至不是由安裝的代碼提供的!

30 年,IDE 進化了多少?