Clouditor: 基於棧的編輯器的想法

Clouditor 是基於我前些天的一些想法整理出來一個原型項目,
簡單說呢, 我以爲編輯器的側邊欄應該顯示調用棧而不是文件樹,
具體的一些我錄了視頻, 應該仍是能說清楚的:html

http://weibo.com/p/230444762f5207009b6d1903e0757ca791209egit

不看視頻也能夠先看看相關的截圖:github




仍是大體說明一下個人想法, 確定沒有視頻更好懂:數據庫

問題

調試過代碼就知道, 常常會遇到狀況, 發現調用一個函數有問題, 須要定位,
調用的狀況是 A 調用 B 調用 C, 而後呢, A 沒問題查找 B, B 沒問題查找 C, 這樣.
然而編輯器裏邊都不是這樣組織的, 編輯器打開的是文件, 文件排列的是代碼,
結果是大型的 IDE 會有 Go to definition 的功能, 立刻跳轉到定義的位置,
簡單的文本編輯器好比 Sublime 也作了簡單的 Go to definition 的功能,npm

總之結果仍是須要在大量的文件之間跳轉, 實際上是很累的事情.
補充, IDE 的狀況其實好得多, 我朋友說 Visual Studio 如何如何...編程

解決的想法

我想到的辦法是, 乾脆幹掉文件的概念, 編輯器的側邊欄直接整理出調用棧來,
側邊欄是調用棧的狀況下, 就能夠直接在側邊欄導航來了解具體的狀況.
這樣很直觀, 切換也很是方便, 不須要複雜的重量級的軟件來完成.網絡

文件的概念去掉之後, 命名空間就是主題的整理函數的方案了,
我設想側邊欄上的定義都帶上命名空間, 方便作簡單的靜態分析.
至於生成代碼存儲的問題, 因爲都是數據, 沒有文本, 因此直接計算一下就行了.
中間會觸及依賴分析的事情, 實際上不會簡單, 但基本上是可行的.session

附帶的好處

當咱們把文件去掉之後, 加上源代碼又是用數據管理, 其實大不同,
沒有文件, 因此每次編輯的就是一個函數, 那麼, 這能夠是存儲在網絡上的代碼,
這樣的話, 有可能就不用本地有開發環境了, 在雲是操做就能把代碼寫出來,
代碼是能夠經過雲進行分發和管理的, 也就是一站式的服務.
假如還能加上靜態分析和在線文檔的話, 開發環境有可能作得很是豐富.編輯器

不可行性分析

好玩歸好玩, 作可行性分析的話, 算了, 實際上沒人會這麼作的吧.
個人 Demo 已經完成了, 我固然是寫了點代碼的, 要不原型怎麼來,
https://github.com/Cirru/clouditor
這樣的想法, 其實把文件等等概念全打亂了, 各類工具鏈都破壞了... 異類啊
Clouditor 設想生成的內容是 AST, 雖然二進制也沒錯, 但總歸很奇怪函數

還有個比較正經的問題, 就是循環依賴怎樣處理, 要知道這在 FP 當中並不罕見,
我前面查資料就遇到了這些概念, 遞歸引用, 拓撲排序等等:
https://en.wikipedia.org/wiki/Mutual_recursion
https://en.wikipedia.org/wiki/Topological_sorting
https://en.wikipedia.org/wiki/Dependence_analysis
個人 Demo 裏簡單, 實際當中處理會複雜不少.

另外雲編程的想法, 也許微軟作過了? 我是想把全部函數單獨在線上管理.
至關於 npm 倉庫集中的數據庫, 可是能夠在線上按照單個函數管理,
理想狀況是編程時候根本不用安裝依賴, 自動就生成出來了, 但確定不簡單,
數據庫裏有 0.2M 個包, 每一個包 100 個 definition, 20M 個定義不少了,
http://www.modulecounts.com/
再算上版本管理的話, 複雜度上天, 性能都是問題, 再說實用性還不知道.

願景

我知道這東西不實用, 也許就極少數人關注,更可能有別的想法,
我但願下邊這個視頻能夠打動你, 由於有人開始在 VR 裏邊寫代碼了,
https://www.youtube.com/watch?feature=youtu.be&v=_p0co13WYPI
那麼好比五年後咱們用 VR 寫代碼, 咱們真的但願只有個文本框嗎?
爲何不能借助 VR 強大的交互手段, 設計更強大的界面來編程呢?
幹掉文本語法是第一步, 幹掉文件是第二步, 後面能走更遠. 看腦洞多大.

另外關於腦洞的話, 看這個頁面底部的 "future of programming" 能夠開一下:
http://www.thestrangeloop.com/2015/sessions.html

相關文章
相關標籤/搜索