成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

王垠:編輯器與IDE

開發(fā) 后端 前端
寫程序的時(shí)候,我通常根據(jù)語(yǔ)言來(lái)選擇最能“理解”那種語(yǔ)言的“IDE”(比如 Visual Studio, Eclipse, IntelliJ IDEA 等),而不是一種通用的“文本編輯器”(比如 Emacs, vi, jEdit, ...)。

無(wú)謂的編輯器戰(zhàn)爭(zhēng)

很多人都喜歡爭(zhēng)論哪個(gè)編輯器是最好的。其中最大的爭(zhēng)論莫過(guò)于 Emacs 與 vi 之爭(zhēng)。vi 的支持者喜歡說(shuō):“看 vi 打起字來(lái)多快,手指完全不離鍵盤,連方向鍵都可以不用。”Emacs 的支持者往往對(duì)此不屑一顧,說(shuō):“打字再快又有什么用。我在 Emacs 里面按一個(gè)鍵,等于你在 vi 里面按幾十個(gè)鍵。”

其實(shí)還有另外一幫人,這些人喜歡說(shuō):“對(duì)于 Emacs 與 vi 之爭(zhēng),我的答案是 {jEdit, Geany, TextMate, Sublime...}”這些人厭倦了 Emacs 的無(wú)休止的配置和 bug,也厭倦了 vi 的盲目求快和麻煩的模式切換,所以他們選擇了另外的更加簡(jiǎn)單的解決方案。

臨時(shí)解決方案 - IDE

那么我對(duì)此的答案是什么呢?在目前的情況下,我對(duì)程序編輯的臨時(shí)答案是:IDE。

寫程序的時(shí)候,我通常根據(jù)語(yǔ)言來(lái)選擇最能“理解”那種語(yǔ)言的“IDE”(比如 Visual Studio, Eclipse, IntelliJ IDEA 等),而不是一種通用的“文本編輯器”(比如 Emacs, vi, jEdit, ...)。這是因?yàn)?ldquo;文本編輯器”這種東西一般都不真正的理解程序語(yǔ)言。很多 Emacs 和 vi 的用戶以為用 etags 和 ctags 這樣的工具就能讓他們“跳轉(zhuǎn)到定義”,然而這些 tags 工具其實(shí)只是對(duì)程序的“文本”做一些愚蠢的正則表達(dá)式匹配。它們根本沒(méi)有對(duì)程序進(jìn)行 parse,所以其實(shí)只是在進(jìn)行一些“瞎猜”。簡(jiǎn)單的函數(shù)定義它們也許能猜對(duì)位置,但是對(duì)于有重名的定義,或者局部變量的時(shí)候,它們就力不從心了。

很多人對(duì) IDE 有偏見(jiàn),因?yàn)樗麄冋J(rèn)為這些工具讓編程變得“傻瓜化”了,他們覺(jué)得寫程序就是應(yīng)該“困難”,所以他們眼看著免費(fèi)的 IDE 也不試一下。有些人寫 Java 都用 Emacs 或者 vi,而不是 Eclipse 或者 IntelliJ。可是這些人錯(cuò)了。他們沒(méi)有意識(shí)到 IDE 里面其實(shí)蘊(yùn)含了比普通文本編輯器高級(jí)很多的技術(shù)。這些 IDE 會(huì)對(duì)程序文本進(jìn)行真正的 parse,之后才開始分析里面的結(jié)構(gòu)。它們的“跳轉(zhuǎn)到定義”一般都是很精確的跳轉(zhuǎn),而不是像文本編輯器那樣瞎猜。

這種針對(duì)程序語(yǔ)言的操作可以大大提高人們的思維效率,它讓程序員的頭腦從瑣碎的細(xì)節(jié)里面解脫出來(lái),所以他們能夠更加專注于程序本身的語(yǔ)義和算法,這樣他們能寫出更加優(yōu)美和可靠的程序。這就是我用 Eclipse 寫 Java 程序的時(shí)候相對(duì)于 Emacs 的感覺(jué)。我感覺(jué)到自己的“心靈之眼”能夠“看見(jiàn)”程序背后所表現(xiàn)的“模型”,而不只是看到程序的文本和細(xì)節(jié)。所以,我經(jīng)常發(fā)現(xiàn)自己的頭腦里面能夠同時(shí)看到整個(gè)程序,而不只是它的一部分。我的代碼比很多人的都要短很多也很有很大部分是這個(gè)原因,因?yàn)槲沂褂玫墓ぞ呖梢宰屛以谙嗤臅r(shí)間之內(nèi),對(duì)代碼進(jìn)行比別人多很多次的結(jié)構(gòu)轉(zhuǎn)換,所以我往往能夠把程序變成其他人想象不到的樣子。

對(duì)于 Lisp 和 Scheme,Emacs 可以算是一個(gè) IDE。Emacs 對(duì)于 elisp 當(dāng)然是最友好的了,它的 Slime 模式用來(lái)編輯 Common Lisp 也相當(dāng)不錯(cuò)。然而對(duì)于任何其它語(yǔ)言,Emacs 基本上都是門外漢。我大部分時(shí)間在 Emacs 里面是在寫一些超級(jí)短小的 Scheme 代碼,我有自己的一個(gè)簡(jiǎn)單的配置方案。雖然談不上是 IDE,Emacs 編輯 Scheme 確實(shí)比其它編輯器方便。R. Kent Dybvig 寫 Chez Scheme 居然用的是 vi,但是我并不覺(jué)得他的編程效率比我高。我的代碼很多時(shí)候比他的還要干凈利落,一部分原因就是因?yàn)槲沂褂玫?ParEdit mode 能讓我非常高效的轉(zhuǎn)換代碼的“形狀”。

當(dāng)要寫 Java 的時(shí)候,我一般都用 Eclipse。最近寫 C++ 比較多,C++ 的最好的 IDE 當(dāng)然是 Visual Studio。可惜的是 VS 沒(méi)有 Linux 的版本,所以就拿 Eclipse 湊合用著,感覺(jué)還比較順手。個(gè)別情況 Eclipse “跳轉(zhuǎn)定義”到一些完全不相關(guān)的地方,對(duì)于 C++ 的 refactor 實(shí)現(xiàn)也很差,除了最簡(jiǎn)單的一些情況(比如局部變量重命名),其它時(shí)候幾乎完全不可用。當(dāng)然 Eclipse 遇到的這些困難,其實(shí)都來(lái)自于 C++ 語(yǔ)言本身的糟糕設(shè)計(jì)。

終極解決方案 - 結(jié)構(gòu)化編輯器

想要設(shè)計(jì)一個(gè) IDE,可以支持所有的程序語(yǔ)言,這貌似一個(gè)不大可能的事情,但是其實(shí)沒(méi)有那么難。有一種叫做“結(jié)構(gòu)化編輯器”的東西,我覺(jué)得它可能就是未來(lái)編程的終極解決方案。

跟普通的 IDE 不同,這種編輯器可以讓你直接編輯程序的 AST 結(jié)構(gòu),而不是停留于文本。每一個(gè)界面上的“操作”,對(duì)應(yīng)的是一個(gè)對(duì) AST 結(jié)構(gòu)的轉(zhuǎn)換,而不是對(duì)文本字符的“編輯”。這種 AST 的變化,隨之引起屏幕上顯示的變化,就像是變化后的 AST 被“pretty print”出來(lái)一樣。這些編輯器能夠直接把程序語(yǔ)言保存為結(jié)構(gòu)化的數(shù)據(jù)(比如 S表達(dá)式,XML 或者 JSON),到時(shí)候直接通過(guò)對(duì) S表達(dá)式,XML 或者 JSON 的簡(jiǎn)單的“解碼”,而不需要針對(duì)不同的程序語(yǔ)言進(jìn)行不同的 parse。這樣的編輯器,可以很容易的擴(kuò)展到任何語(yǔ)言,并且提供很多人都想象不到的強(qiáng)大功能。這對(duì)于編程工具來(lái)說(shuō)將是一個(gè)革命性的變化。

.已經(jīng)有人設(shè)計(jì)了這樣一種編輯器的模型,并且設(shè)計(jì)的相當(dāng)不錯(cuò)。你可以參考一下這個(gè)結(jié)構(gòu)化編輯器,它包含一些 Visual Studio 和 Eclipse 都沒(méi)有的強(qiáng)大功能,卻比它們兩者都要更加容易實(shí)現(xiàn)。你可以在這個(gè)網(wǎng)頁(yè)上下載這個(gè)編輯器模型來(lái)試用一下。

.我之前推薦過(guò)的 TeXmacs 其實(shí)在本質(zhì)上就是一個(gè)“超豪華”的結(jié)構(gòu)化編輯器。你可能不知道,TeXmacs 不但能排版出 TeX 的效果,而且能夠運(yùn)行 Scheme 代碼。

.IntelliJ IDEA 的制造者 JetBrains 做了一個(gè)結(jié)構(gòu)化編輯系統(tǒng),叫做 MPS。它是開源軟件,并且可以免費(fèi)下載。

.另外,Microsoft Word 的創(chuàng)造者 Charles Simonyi 開了一家叫做 Intentional Software 的公司,也做類似的軟件。

原文鏈接:http://www.yinwang.org/blog-cn/2013/04/20/editor-ide/

責(zé)任編輯:林師授 來(lái)源: 王垠的博客
相關(guān)推薦

2013-03-29 10:02:37

編譯器語(yǔ)言編譯開發(fā)

2024-09-03 09:55:30

2017-03-03 08:38:25

2013-03-20 09:54:07

2013-03-08 10:00:01

2012-10-30 15:31:17

2021-02-24 11:13:48

IDE工具代碼編輯器

2012-08-14 10:44:52

解釋器編程

2012-08-13 09:40:12

語(yǔ)言編程語(yǔ)言程序語(yǔ)言

2013-06-19 09:42:27

工作經(jīng)歷程序員開發(fā)經(jīng)驗(yàn)

2025-02-05 12:01:35

屬性編輯器Web

2023-06-07 15:23:07

開發(fā)IDE編輯器

2015-07-02 10:33:00

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

2022-11-25 12:25:27

Python代碼編輯器

2013-04-18 09:29:02

編程語(yǔ)言編程

2010-03-24 09:20:07

CentOS vi編輯

2011-03-22 13:54:57

UbuntuPHP編輯器

2022-03-22 09:14:11

PythonIDE編輯器

2013-06-18 01:22:46

CocoStudio工Cocos2d-x

2011-01-10 16:17:49

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩午夜在线观看 | 亚洲成人av | 91极品视频 | 91精品国产综合久久婷婷香蕉 | 日日夜夜精品视频 | 中文字幕视频在线观看 | 亚洲在线免费观看 | 婷婷色婷婷 | 一级做a | 久久四虎 | www.yw193.com| 北条麻妃99精品青青久久 | 国产日韩久久久久69影院 | 天堂久久天堂综合色 | 精品久久久久久久 | 我要看黄色录像一级片 | 2021狠狠干 | 国产福利91精品 | 天天拍天天操 | 亚洲国产精品va在线看黑人 | 国产精品一区二区三级 | 日本偷偷操| 日韩一级免费观看 | 中文字幕在线观看成人 | 国产韩国精品一区二区三区 | 久久成人一区 | 老司机狠狠爱 | 亚洲精品久久久久中文字幕欢迎你 | 欧美高清一区 | 一区不卡在线观看 | 91在线免费视频 | 国产精品久久久久无码av | 天天干天天玩天天操 | 成人深夜福利 | 精品国产成人 | 精品一区二区三区免费视频 | 黄色毛片网站在线观看 | 国产高清免费视频 | 国产在线精品一区 | 黄色一级大片在线观看 | 午夜欧美一区二区三区在线播放 |