Emacs的文化衝擊
There's nothing wrong with static type systems. 
 You just have to realize that when you use them, you're  building hardware, not software. 
 -- Steve Yegge
 ESR曾經說, 即使妳不用lisp, 妳也該學習lisp,  因為學習lisp會讓妳成為更好的Progammer.
 這幾天玩弄Emacs下來, 我不得不說, 如果妳是Programmer,  即使妳不用Emacs作為編輯器,
 妳也該瞭解Emacs, 因為瞭解Emacs會讓妳瞭解什麼是好的軟體設計.
 ***
 Emacs是一個環境, 妳不是在"用"一個Emacs, 而是你"進入"了Emacs,  妳活在Emacs的國度裡.
 隨便打開一個*scratch* buffer, 輸入(message "hello") 然後 C-M-x , it's  EVALUATE!!
 如果以其他系統的角度來說. 你已經做好了你的第一個Emacs plugin.
 改好你的.emacs , M-x eval-buffer, 新的設定已經載入了. 
 RESET? 不, 好的"""軟體"""系統不用reset. 
 Ok, I'll say, Hardware plugs, Software's spirit is: Evaluate,  and it's done.
 ***
 我喜歡Python的introspective跟豐富help, 只要能打開python的直譯器,  我幾乎很少需要書籍或線上文件.
 Emacs的系統也是一樣, 我原本不能理解當vim user在強調keystroke時, Emacs  User那種不屑/不在意的態度.
 我現在能理解了, Emacs擁有非常高明的help系統. 忘記了keystroke, 妳還有GUI,  即使妳像我一樣不使用Emacs的GUI,
 Emacs的help系統會讓妳忘了為什麼需要GUI. M-x apropos跟C-h  C-h是好朋友,
 妳忘了keystroke, 妳可以鍵入長指令查keystroke, 妳忘了長的指令,  妳可以用keystroke查詢,
 妳什麼都忘了, 只要妳還記得 M-x apropos或C-h, 還是有辦法記起來.
而一旦defun被eval, 他就能夠立即的被啟動, 回傳的值也立刻能在mini-buffer裡看到,
所有自定義的function妳只要能記得開頭的字母, 也都隨時可以按tab兩次顯現,
喔, docstring, help, 使用etags查詢某個function還能即時探索該function在emacs的elisp code,
所有動作都不必離開Emacs, introspective至如此,夫復何求?
 而一旦defun被eval, 他就能夠立即的被啟動, 回傳的值也立刻能在mini-buffer裡看到,
所有自定義的function妳只要能記得開頭的字母, 也都隨時可以按tab兩次顯現,
喔, docstring, help, 使用etags查詢某個function還能即時探索該function在emacs的elisp code,
所有動作都不必離開Emacs, introspective至如此,夫復何求?
***
 Steve yegge最近才說, (http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html)
 Systems should never reboot.
Great software systems are introspective.
 我現在很清楚的瞭解他指的是什麼了, 如果妳不能理解, 建議你玩玩Emacs.
 Emacs是Dynamic的典範, 是超越了時代的設計, 
 我很難想像這是一個80年代開始發展的系統.
 我以往從來不在意Emacs或者Vim的所謂編輯器聖戰, 
 原本覺得那是意氣之爭, 但即便對某些人是意氣之爭, 
 但認真去瞭解Emacs還是教了我很多,
 僅在數天之內, 我便開始瞭解聖戰為何而戰.
 Vim可能符合了這一代人對軟體,對編輯的期望, 
 但那是現在, 軟體的歷史還年輕的很, 而Emacs的戰場還在未來.  
 是因為有了堅持跟夢想, 才會有了這個不流血的戰場.
 在可見的未來, Emacs的聖戰將會繼續打下去. 
 

 
 




沒有留言:
張貼留言