產品解析:Github Atom

jopen 9年前發布 | 25K 次閱讀 Github Atom

先說兩句題外話。以后周末的文章圍繞著我創業的回憶和反思,做成一個連載,放在我的新專欄『途客們的旅行夢』中,希望大家多多關注和支持!

言歸正傳。昨天github通知我可以開始試用atom了。驚喜之余,立刻開始體驗。

Atom是什么

Atom是github內部的編輯軟件,據說已經使用了6年之久。按照atom的博客:

Our goal is a zero-compromise combination of hackability and usability: an editor that will be welcoming to an elementary school student on their first day learning to code, but also a tool they won't outgrow as they develop into seasoned hackers.

</blockquote>

按照atom作者的意 思:textmate/sublime text提供了受限的擴展性;而vim/emacs擴展性很好,但編寫擴展需要特定的scripting language。所以atom想做成一款初學者和Hacker都會喜歡,隨著他們能力增長而增長的編輯器。

Atom基本功能

編輯器環境:

產品解析:Github Atom

可以看到,atom和sublime text長得非常相似,幾乎是一個模子里出來的。

產品解析:Github Atom

在atom里,command+shift+Pcommand+t就是你初期所需掌握的一切。通過第一個快捷鍵,你可以調出一個命令行窗口,運行各種和菜單對應的功能;通過第二個快捷鍵,你可以方便地調出某個文件。

和sublime text一樣,atom也提供了package和plugin。atom提供了隨處可查的幫助方便程序員對其擴展,比如說,要寫theme,你可以先看看atom的style guide:

產品解析:Github Atom

只要你用過任何一款文本編輯環境,如sublime text, ultra edit等,那么上手atom很快,幾乎不用任何學習。不過你也許會有疑惑:atom有什么好處?

Atom插件系統

github在github.com/atom下開源了很多atom的package。我們隨便看一個和排序相關的package —— 它能夠排序選擇的文本。使用起來是這個樣子:

產品解析:Github Atom

這個功能極其簡單,對于一個程序員來說,只要告訴他用戶選擇的是什么,最遲不超過半小時就能編碼完成排序。我們看看 atom sort 的主代碼:

產品解析:Github Atom

非常簡單直觀的coffeescript代碼。相信做過前端開發的工程師,atom選擇試用coffeescript是個福音(atom的配置文件也是cson格式的)。

不 要小看插件語言選擇的重要性。sublime text為何有那么多第三方的package?我覺得和它的API,以及使用Python來開發插件很有關系。Python寫出來的代碼可讀性不 錯,sublime text的API也比較清晰,這樣有了一些package樣板后,很容易激發后來者寫出更多優秀的插件。這是vim/emacs所無法比擬的 —— python程序員要比vim script或者emacslisp程序員多多了!

atom選擇coffeescript有幾個很重要的考量(我猜的):

  • coffeescript(javascript)的擁躉很多
  • 語言強大,代碼簡單
  • 是主流能夠運行在瀏覽器中的語言(coffeescript需要先翻譯成javascript)
  • </ul>

    拿到atom后,我一直在懷疑它是個運行在瀏覽器中的web app。看看這個界面,是不是很有chrome的趕腳??

    產品解析:Github Atom

    這 就是Atom最大的亮點!web native。在此之下,less style,coffeescript plugin,nodejs integration都水到渠成。看上去atom的源代碼來自chrome —— 我覺得atom很可能是一款以某種方式運行本地web app的瀏覽器。chrome的源代碼base在webkit上(貌似是bsd),所以atom可以任意修改。很可能chrome上面的沙箱環境(不允許 web app訪問本地資源,如文件系統)被移除,然后nodejs以某種方式被集成進來(這樣javascript可以訪問文件系統等本地資源)。

    對Atom的思考

    web正在迅速吞噬一切。PhoneGap等工具已經在手機客戶端上使用WebUI部分取代native app(盡管長路漫漫)。我覺得這個過程是一個趨勢,就像C逐漸將asm擠出主流應用一樣。桌面的應用也在往這個趨勢上走。

    當 然你可以argue說web app無法發揮native的所有性能和硬件能力。我不否認。但是,很多通用的軟件不需要這些東西。如果能用javascript花一個小時寫出來,再用 phoneGap等工具一編譯就搞定的活,使用native code寫個todo list意義又何在呢?同樣的道理適用于desktop app。

    Web 的魅力在于可擴展性。對于瀏覽器而言,html/css/javascript是套完整的API。瀏覽器不關心最終渲染出來什么東西,只要給它的輸入符合 這套API,它就能很好地解析。這帶來了幾乎無限的擴展性 —— 而這種擴展性,不正是我們做軟件的夢寐以求的么?所以,在這套優秀框架的帶動下,web將疆界幾乎延伸到IT的所有領域中。

    形成這個趨勢的一個重要原因是:native app 做下去做的僅僅是一個封閉的application;而web app做下去往往做的是一個開放的system。

    但web的問題在于你無法掌控entry point。如果你的app不被bookmark,那么用戶下次記得你的代價就比較大。這是為什么會有phoneGap這樣看上去很奇怪的hybrid出現。這也是atom出現的原因之一。

    在mobile上,使用瀏覽器的代碼做基石,而不是web view的代價可能比較大,比如說文件大小,成熟度等。但在desktop上,這個可行性大了不少,因為開源的chrome的生態圈很成熟。

    Atom之后(如果這種它收效很好),未來桌面應用很可能會類似使用webkit(chrome)做殼,然后大部分功能都構建在web app(html/css/javascript)的結構之中。這樣的結構靈活性,擴展性都很強,而且不用重啟軟件就可以升級功能。

    Atom的問題

    就目前兩小時的使用而言,我遇到了如下問題:

    (1) 第一次打開atom的時候,一個help文檔會被自動打開。正當我一行行看的時候,atom自己crash了。所以目前beta的atom似乎還是很不穩定。

    (2) 輸入速度有點慢,有遲滯感(和web有關?)。

    (3) 中文支持總覺得有點問題,雖然沒有遇到問題。

    (4) 誰知道line wrap怎么設置?我設了但似乎不好使。一段文字擠在一行里感覺很不爽。這是目前我的block issue。

    (5) 目前只有osx版本。

    另外,盡管在軟件層面盡量擁抱web世界,但如果最終atom不免費/開源,那么和sublime text競爭還是會比較吃力 —— 畢竟sublime text已經形成了極好的市場口碑和生態圈。大多數用戶不關心你用什么技術,而關心我要的功能你有沒有。

    如果你對本文感興趣,歡迎訂閱公眾號『程序人生』(搜索微信號 programmer_life)。每天一篇原汁原味的文章,早8點與您相會。

    戳鏈接看atom官網,嘗鮮申請體驗atom吧:atom.io

    來自: http://zhuanlan.zhihu.com/prattle/19703675

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!