偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

熱點(diǎn)技術(shù):編輯器背后的程序觀

開發(fā) 開發(fā)工具
最近看到新聞,Eclipse 的市場(chǎng)份額持續(xù)下滑,而 Intellij IDEA 異軍突起終于堅(jiān)持不懈的超越了 Eclipse 成為了 Java 程序員的首選開發(fā)工具。

最近看到新聞,Eclipse 的市場(chǎng)份額持續(xù)下滑,而 Intellij IDEA 異軍突起終于堅(jiān)持不懈的超越了 Eclipse 成為了 Java 程序員的首選開發(fā)工具。

有感于此,回想起這么些年來(lái)寫過(guò)不同的語(yǔ)言,用過(guò)不少的編輯器。以前的程序員和現(xiàn)在的程序員他們都各用什么編輯器編程,不同語(yǔ)言的程序員偏愛什么樣的編輯器來(lái)寫程序呢?

編輯器與語(yǔ)言

先來(lái)看看下面這張圖,來(lái)自 TIBOE 2016 十月最新的編程語(yǔ)言流行度排行。

 

 

Java 以后端和安卓開發(fā)為主,牢牢占據(jù)第一。Java 的歷史不過(guò)短短二十年出頭,開發(fā)工具編輯器的變化從前五年的群雄混戰(zhàn)到后來(lái) JBuilder 一統(tǒng)江湖。再之后 Eclipse 開源橫空出世取 JBuilder 而代之,當(dāng)年 Eclipse 能戰(zhàn)勝 JBuilder 正是因?yàn)槠溟_源免費(fèi)而且社區(qū)極其活躍??紤]開發(fā)工具市場(chǎng)屬于小眾,高技術(shù)門檻而低利潤(rùn)空間,本以為被開源免費(fèi)這么一沖擊,會(huì)再無(wú)商業(yè)公司單獨(dú)以此為核心業(yè)務(wù)了。沒(méi)想到的是打敗 Eclipse 的竟然是來(lái)自商業(yè)軟件開發(fā)工具公司 JetBrains 的 Intellij IDEA,真是二十年來(lái)又一輪回,不禁唏噓。

后端的 C 和 C++ 開發(fā)想必還是用數(shù)十年不變的來(lái)自遠(yuǎn)古時(shí)期的 Vi 或 Emacs,關(guān)于這兩個(gè)神奇的編輯器我們下面再詳述,暫時(shí)按下不表。而 C# 自然是用微軟系無(wú)所不能的編輯器 Visual Studio,對(duì)于我一個(gè)使用 Mac 的程序員確實(shí)沒(méi)怎么用過(guò)微軟的工具,也就不多說(shuō)了。而 JavaScript 作為現(xiàn)在前端的統(tǒng)治語(yǔ)言才是最讓我困惑的,在我還在寫一些 Web 頁(yè)面的時(shí)期(可能三、四年前)就一直沒(méi)找到過(guò)覺得適合 JavaScript 的編輯器。如今前端百花競(jìng)放,好不熱鬧,看到的每一個(gè)前端程序員似乎都在用著不同的編輯器。

編輯器與神

兩個(gè)神奇的編輯器:vi 或 Emacs。它們都是誕生于 1976 年,MIT 的 Richard Stallman 和 Guy Steele 完成了 Emacs 的第一版,同時(shí)期在 Berkeley 的 Bill Joy 寫出了 Vi。

它們各自圍繞著完全不同的設(shè)計(jì)理念,其間差別巨大,各自都有自己的粉絲團(tuán)并相互鄙視。有點(diǎn)像《火影》漫畫里千手和宇智波一族爭(zhēng)戰(zhàn)多年,但目前這兩大編輯器尚未達(dá)成過(guò)一致——也就是從未有過(guò)一個(gè)同時(shí)集兩大編輯器特點(diǎn)于一身的編輯器出現(xiàn)過(guò)。

Emacs 圍繞的核心理念是快捷鍵和自定義的配置擴(kuò)展,編輯器提供了一組命令并綁定在一系列的快捷鍵上。如果你發(fā)現(xiàn)有什么想要的功能默認(rèn)快捷鍵沒(méi)有提供,你可以自己去編程擴(kuò)展它。所以,這個(gè)編輯器內(nèi)置了 Lisp 語(yǔ)言解釋器,所有的配置都是通過(guò)這種語(yǔ)言來(lái)完成的。因此,要用好 Emacs,你得先學(xué)會(huì)一門語(yǔ)言,而 Lisp 則是計(jì)算機(jī)歷史上第二個(gè)高級(jí)語(yǔ)言。為了用個(gè)編輯器還得先學(xué)門語(yǔ)言,如此折騰,怪不得有「神」之編輯器一說(shuō)。

因?yàn)?Emacs 對(duì)于高級(jí)功能的滿足就是提供一門可編程語(yǔ)言自己去編程完成,所以有句夸張的說(shuō)法是:“Emacs 是偽裝成編輯器的操作系統(tǒng)。”

而 Vi 則完全是另一種風(fēng)格,它是基于命令的組合理念。在說(shuō)組合之前,先需要了解 Vi 的幾種基本模式。Vi 有三種模式:

  • 命令模式(Command mode)
  • 插入模式(Insert mode)
  • 底線命令模式(Last line mode)

其中插入模式就是普通的編輯打字用,而命令模式才是用來(lái)組合的。怎么理解命令組合?這里舉個(gè)簡(jiǎn)單的例子,以 Vi 中的刪除命令是d,那么它刪除什么?這看你怎么去組合它,比如另外一個(gè)命令 w 表示前移一個(gè)字,$ 表示移動(dòng)到一行末尾,所以一組合 dw 這個(gè)命令表示刪除一個(gè)字,d$ 則表示刪除整行。之后你再學(xué)會(huì)一個(gè)新命令 y 表示復(fù)制文本,所以你應(yīng)該知道怎么組合命令來(lái)復(fù)制當(dāng)前所在行的文本了吧。

Vi 相比 Emacs 顯然沒(méi)那么折騰。當(dāng)你熟練了 Vi 后就會(huì)在編輯文本時(shí)有一種運(yùn)指如飛的感覺,所以 Vi 在江湖上又稱編輯器之「神」。

只是唯一的問(wèn)題是 Vi 的命令實(shí)在太多,你想要達(dá)到運(yùn)指如飛的感覺,可能先要把電腦桌面換成下面這個(gè)。 

 

 

然后日復(fù)一日,天天使用,想必終有大成之日(反正我是沒(méi)能大成,一直磕磕碰碰,一陣不用就忘了)。而對(duì)于一個(gè)初學(xué) Vi (之前只用過(guò)類似 Notepad 這類編輯器的用戶)剛上手的用戶來(lái)說(shuō),他的內(nèi)心會(huì)有兩個(gè)疑問(wèn):怎么輸入?怎么關(guān)掉?而相比而言一個(gè)剛上手的 Emacs 用戶心中的疑問(wèn)會(huì)少一個(gè):好了,我試著敲了一些字母了,現(xiàn)在,怎么關(guān)掉?

 

 

 

 上面是網(wǎng)上一張經(jīng)典編輯器學(xué)習(xí)曲線圖,有些年頭了,圖中有些編輯器已經(jīng)消失在歷史長(zhǎng)河中。我們只需要看看 Vi 和 Emacs 的曲線就好了。如果你真得嘗試過(guò)這兩個(gè)神奇的編輯器,就會(huì)對(duì)這個(gè)學(xué)習(xí)曲線有心有戚戚焉的感覺。

事實(shí)上現(xiàn)在直接用這兩個(gè)神奇編輯器的人不多了,從 Vi 發(fā)展下來(lái)只有一個(gè) Vim 對(duì)其進(jìn)行了增強(qiáng),聽說(shuō)最近還發(fā)布了新版本。而從 Emacs 的核心理念發(fā)展繼承下來(lái)編輯器想必很多人都用過(guò)這兩個(gè):Sublime Text 和 Atom。

Sublime Text 使用 Python 代替了 Emacs 中的 Lisp。Lisp 實(shí)在太古老了,Python 好歹還是前面編程語(yǔ)言排行榜第五嘛,大家的學(xué)習(xí)興趣和群眾基礎(chǔ)都會(huì)好很多。而 Atom 是 Github 近年新出的編輯器,它使用 CoffeeScript 取代 Lisp。這是什么語(yǔ)言?好像排行榜里沒(méi)有。它不過(guò)是 JavaScript 的馬甲,簡(jiǎn)單說(shuō)就是 CoffeeScript 會(huì)被編譯成 JavaScript。

編輯器與程序員

世界上有三種程序員,一種用 Emacs,一種用 Vi,剩下的是用其它編輯器的。對(duì),剩下的那部分多半都是在用各類 IDE 的程序員,而事實(shí)上現(xiàn)在用 IDE 的程序員可能占據(jù)了多數(shù)。

而編程語(yǔ)言排行榜第一的 Java,我想很多 Java 的初學(xué)者都是從 IDE 開始的。因?yàn)橄啾韧ㄓ玫木庉嬈?,Java 的 IDE 確實(shí)提供了更高的效率。十多前我開始的 IDE 是 JBuilder,而在 Java 剛誕生的年代,它的第一個(gè) IDE 是 Symantec 開發(fā)的 Visual Café,它幾乎是以席卷市場(chǎng)的姿勢(shì)迅速占據(jù)了 Java 開發(fā)工具第一名的地位。后來(lái)同時(shí)期的競(jìng)爭(zhēng)者還有 IBM 的 Visual Age For Java,至于 Borland 的 JBuilder 幾乎是最后起跑的參賽者。但 Java 的開發(fā)工具之戰(zhàn)似乎是一場(chǎng)漫長(zhǎng)的馬拉松比賽,除了一開始的表現(xiàn)之外,更重要的是比誰(shuí)能夠撐得比較久。JBuilder 以決絕的姿態(tài)后來(lái)居上,以每年一個(gè)大版本的速度持續(xù)迭代,在第四年也就是 JBuilder 4.0 時(shí)完成了反超,占據(jù)了超過(guò) 50% 的市場(chǎng)份額。

而 2001 年 12 月左右,IBM 終于宣布把 Visual Age For Java 開放給 Eclipse 計(jì)劃,正式結(jié)束了 Visual Age For Java 五年來(lái)在 Java 開發(fā)工具市場(chǎng)的競(jìng)爭(zhēng),而這正是對(duì) Eclipse 誕生影響最重大的事件。之后 Eclipse 以開源免費(fèi)開放的架構(gòu)推出后,雖然 Borland 也算是一家傳奇公司(曾有另一成功產(chǎn)品 Delphi)其態(tài)度充滿了商業(yè)的嚴(yán)謹(jǐn),而 JBuilder 也堪稱經(jīng)典,但 Eclipse 的那種瀟灑和自由,用戶的那種強(qiáng)烈歸屬感,溢于言表,而我使用的最后一版停留在了 JBuilder X。

作為一名十來(lái)年的 Java 程序員,我在近兩年又逐步從 Eclipse 切換到了 Intellij IDEA。曾經(jīng)瀟灑自由的 Eclipse 似乎變得越來(lái)越笨拙與卡頓了,所以程序員又找到了新歡拋棄了舊愛。

不過(guò)無(wú)論是編輯器也好,IDE 也罷,都是工具。而工具是用來(lái)放大你的才干,提升你的效率的。所以我并不支持那種一輩子只需要用好一種編輯器的程序觀。事實(shí)上在我眼中,我把工具分成兩派:

  • Default
  • Preference

Default 指工具背后的程序觀是提供足夠好的默認(rèn)功能,絕大部分時(shí)候(99%)你只需要使用工具提供的默認(rèn)功能,而默認(rèn)的功能包括一些品味性的選取(比如:顏色、背景、字體)都是開發(fā)工具的人眼中最合適的選擇。

Preference 則是隨意的提供一些默認(rèn)功能,然后提供極強(qiáng)的可定制化和可擴(kuò)展性,讓用戶按照自己的偏好去定制使用。

我感覺,Apple 大部分的軟硬件產(chǎn)品反映的都是 Default 背后的程序觀。而 Linux/Unix 世界大部分的軟件都反映了 Preference 的程序觀。而應(yīng)用到編輯器,我自己則一直選擇符合 Default 程序觀的產(chǎn)品,因?yàn)槲覍?duì)用好工具去解決面臨的問(wèn)題的興趣超過(guò)去折騰工具本身啊。

有完全不用 IDE 的 Java 程序員么?據(jù)我所知沒(méi)有,但我知道一個(gè)不太用 IDE 的 Java 程序員——Joshua Bloch。他是一個(gè)著名的 Java 程序員了,JDK 集合框架和多個(gè)其他庫(kù)的編寫者,以及 Effective Java 一書的作者。他對(duì)編輯器或工具的看法是:“因?yàn)槲沂莻€(gè)老家伙了,Emacs 的快捷鍵已經(jīng)長(zhǎng)在我的腦袋里了。”,所以他習(xí)慣用 Emacs 來(lái)自己寫一些小程序或庫(kù),但對(duì)一些需要多人合作的大東西,還得求助于現(xiàn)代 IDE 的幫助,比如:Intellij IDEA。

從某種意義上,我是支持這種極簡(jiǎn)主義的編程觀點(diǎn)的?,F(xiàn)代 IDE 嘗試集成太多功能,把編譯、調(diào)試、打包、運(yùn)行集于一身,在方便的同時(shí),也無(wú)怪乎 IDE 變得越來(lái)越笨重。用好工具的訣竅就是搞清楚工具背后的核心理念以及搞清楚我到底為什么必須用這個(gè)工具,而不是工具提供了什么我就需要去用。

...

這篇文章是在 Atom 編輯器上完成的,它的 Default 模式幾乎滿足了我的全部需求。在滿足 Preference 的前提下兼具靈活和強(qiáng)大,除了讓用戶學(xué)一門編程語(yǔ)言還有別的辦法么?是的,我還不會(huì) CoffeeScript。

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2021-09-23 19:31:00

AI

2024-08-14 08:33:46

前端編輯器

2011-01-10 16:17:49

2010-03-24 09:20:07

CentOS vi編輯

2013-06-18 01:22:46

CocoStudio工Cocos2d-x

2011-03-22 13:54:57

UbuntuPHP編輯器

2017-03-09 11:45:16

LinuxVim編輯器

2025-02-05 12:01:35

屬性編輯器Web

2009-09-22 11:55:53

ibmdwDojo

2015-07-02 10:33:00

Java程序員免費(fèi)IDE編輯器

2018-09-25 09:25:11

Vim編輯器命令

2022-05-31 14:46:02

Ruby編碼線上編輯器

2009-12-04 17:07:49

SlickEdit

2020-10-14 14:00:39

VIM編輯器

2023-04-07 08:02:30

圖形編輯器對(duì)齊功能

2023-09-10 23:22:33

Zettlr筆記編輯器

2023-01-18 08:30:40

圖形編輯器元素

2023-02-01 09:21:59

圖形編輯器標(biāo)尺

2020-09-18 06:00:51

開源Markdown編輯器

2020-11-02 11:21:35

Python編輯器代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)