你為什麼使用 jupyter ,進行分析,而不是用 python 腳本或僅僅利用 excel ?
為什麼要用jupyter進行分析,而不是用python腳本或僅僅利用excel?
Why individuals and companies should consider using Jupyter notebooks to do analysis rather than writing python scripts or simply doing analysis in an Excel Workbook?
上面的同學說了很多,但是通篇都在說好的,我說一下我的體驗好了
先說下我的背景
- 用Jupyter Notebook做了自己的研究生課題, cqcn1991/Wind-Speed-Analysis
- 做過豆瓣的電影分析,https://zhuanlan.zhihu.com/p/27461429
- 策划過notebook的側邊欄目錄插件, ipython-contrib/jupyter_contrib_nbextensions
這裡大家討論的是Jupyter Notebook, 下面在數據分析的場景說一下notebook的好壞,並且和Matlab, Excel比較一下
1. 優點
(1) 基於過程
數據分析和傳統的MVC軟體開發的最大區別在於,數據分析存在一個data flow, 我們是在不斷的做計算,並且畫圖。這裡存在一個大致的「順序」,比如
- 先對數據進行處理,去掉有問題的數據 (Data Wrangling)
- 從各個角度看一個這個數據各個維度的分布情況 (Data Exploration)
- 根據自己的想法、要求,做具體的分析,計算
- 對計算結果做進一部分的分析
這有點類似做應用題。而這是傳統的IDE (e.g. PyCharm) 沒有辦法做到的。假如全部都寫腳本+輸出,那麼你每張圖可能都要保存下來,然後再單獨點進去看,很麻煩。而Notebook做這個要更方便,結果直接產生在Cell下面
反言之,如果你不需要這種頻繁的計算-畫圖的話,那麼notebook可能還真沒什麼大不了.
深一點而言,數據分析有不同的paradigm (大致可分為前處理-建模/計算-後處理)。因此,需要一個相應的工具。這一點,notebook並不是獨創,這種方式應該是來源於mathematica.
(2) Python
主要是兩點
語言優勢
比如,在matlab中,你怎麼給函數設定默認值?
function f(arg1,arg2,arg3)
if nargin &< 3
arg3 = "some default"
end
end
Default Arguments in Matlab
這實在是太SB了
Package
我做研究的時候,需要畫風玫瑰圖,類似下面這種
這個matlab並沒有. 我當然也可以自己去定義、去畫,但那樣效率太低
而在Python里,已經有人做好了這個包,我安裝,然後直接用就行了
再比如,我的研究涉及到一個很專業的函數擬合,這個東西,只有R有相關的包可以調用
而Python可以調用R來做計算,但Matlab卻做不到,這又省了很多事情
進一步而言,Python具有開源、分享自己工作的基本條件。我自己做的研究、做的模型,也可以做成包分享出去,給別人使用,而Matlab則要困難許多。
(3) Hackable
和第一點對應,Notebook的是計算+文檔的混合體,而本身又是web-based,因此非常好hack, 比如我的notebook因為非常長,所以就加了個側邊欄目錄
(安裝見: ipython-contrib/jupyter_contrib_nbextensions)
再比如,在分析電影數據的時候,我覺得用card來展示更方便一點,所以可以這樣顯示數據
再比如,這麼長的文檔,有時候用來做演示,那麼可以再加個按鈕,把code cell全部隱藏掉就好了
2. 缺點
(1) 計算語法過於複雜
標準的語法總是要np.array, np.sum, 非常的啰嗦,這一點matlab要好很多
(2) 功能的欠缺
比如像上面朋友說的,沒有像matlab一樣的variable explorer, 能夠方便的查看數據
這一點極其不便。又比如基於一個dataframe (excel型的數據),為什麼不能直接點擊、排序篩選,非要寫查詢語句?
又比如,畫的圖不是可交互性的,
比如這裡,我可能想知道上面某個點具體的值是多少,但是靜態圖做不到。
儘管目前有不少互動式的包,但是語法又極其複雜,並不像matplotlib那樣容易使用。
再比如目前的圖片,作為論文插圖也不夠好,matplotlib又不支持emf格式。因此圖片插入word也是個很大的問題。
(3) Notebook不是IDE
主要問題在於,我在notebook中寫的函數,沒有辦法快速跳轉到其定義。而一般的IDE, CTRL+點擊就行了。
3. 未來
(1) 大部分問題都是可以解決的
像上面說的很多欠缺的功能,都是可以解決、正在解決的,就好比我自己去策劃推動了側邊欄目錄一樣。像variable explorer,已經有了初步的版本,但目前還是很難用就是了。
絕大部分欠缺的功能,都可以做,而且開發難度不高。實際上近幾年大家有用notebook的話,就會感覺版本號跳得特別快(雖然始終不夠用....)
(2) 框架
上面有朋友說了,自己寫notebook的話,很容易寫得很亂,左一個import, 又一個import. 所以要慎用,維護性很差。
但實際上,是缺乏一個框架(不好意思,我是Ruby on Rails過來的。。。。),把大家的best practice總結起來。
就拿我的notebook 來說, notebook是這樣組織的。最上面的cell 雷打不動,一定是基本的設置
然後所有的Import 放到文件裡面在import 進來
這樣notebook界面上的代碼就清爽很多,不會有各種import。當然,肯定也有比我的做法更好的方法,但問題就是,這些best practice需要分享出來。
又比如計算復用的函數,都可以抽象出去,只在Notebook裡面嘗試新的函數,和寫運行腳本,這樣維護性也更好一些(https://stackoverflow.com/questions/36427747/scientific-computing-ipython-notebook-how-to-organize-code)
這些方面,都可以做得更簡潔,有更好的practice,這個是需要一個框架來做的。
4. 總結
所以,為什麼要用notebook呢?其實就是這幾點
- 適合數據分析的 處理-計算-分析 的過程,不需要再專門寫報告
- Python帶來的豐富的第三方包支持,不需要自己再重複造輪子
- 正在逐步豐富的功能,比如多個cell的剪切/粘貼,PPT放映, cell tag ...
但這並不是說就是「神器」了,實際上就目前的階段(2017-08)而言,我覺得還遠遠稱不上 (連個variable explorer都沒有你好意思嗎.....)但是按照目前的發展速度,我覺得是可以成為一個更好的數據分析、科學計算工具的。
Jupyter Notebook 顧名思義,它的核心在於展示與快速迭代。所以與其回答這個問題,我覺得看看各路大神都用Jupyter Notebook寫出了什麼,就自然可以直觀地得出這個問題的結論。
先來個萌萌的
1.XKCD plots in Matplotlib
仿製XKCD式手寫圖標各種用Notebook寫出的Python教程
2.Introduction to Computer Science with Python as Tel-Aviv University
3.Introduction to Python4.Exploratory computing with Python by Mark Bakker數據分析機器學習篇
5.Neural Networks
機器學習人工神經網路模型6.Map-Reduce and Apache Spark
大規模並行計算框架Spark教程7.Analysing structured data using pandas
表格數據處理庫Pandas教程
9.Automating Microsoft Office with Python
Microsoft Office+Python自動化10.
Datamining Twitter with tweepyTwitter數據挖掘入門數學物理化學生物篇
11.
CBE20255 by jckantor化學工程分析入門(聖母大學本科課程)12.
Working with Reactions化學反應模擬器13.
Three-Body Problem三體問題模擬器14.
Color Science for Python色彩學入門15.
Population Genetics in an RNA WorldRNA種群遺傳學地球科學與地理科學篇
16.
Estimated likelihood of observing a large earthquake on a continental low‐angle normal fault and implications for low‐angle normal fault activity大陸板塊低斜率斷層對地震的預測(大概是這麼翻譯的吧...?)17.
NLTK, maps, and 007007原著小說中詹姆斯邦德殺人地點的可視化18.
Iris "Hidden" Features美國國家海洋和大氣管理局海洋天氣信息採集點的可視化19.
Python for Geosciences基於Python的地理科學入門語言學與文字信息挖掘篇
20.
Exercise to detect Algorithmically Generated Domain Names機器生成域名的識別與分析21.
Mining Twitter: Exploring Trending Topics, Discovering What People Are Talking About, and More文字信息挖掘與分析 - Twitter熱門話題22.
Mining Facebook: Analyzing Fan Pages, Examining Friendships, and More文字信息挖掘與分析 - Facebook粉絲頁面,朋友關係23.
Mining LinkedIn: Faceting Job Titles, Clustering Colleagues, and More文字信息挖掘與分析 - LinkedIn職稱,同事分組24.
Mining Google+: Computing Document Similarity, Extracting Collocations, and More文字信息挖掘與分析 - Google+文章相似性,片語提取25.
Mining GitHub: Inspecting Software Collaboration Habits, Building Interest Graphs, and More文字信息挖掘與分析 - GitHub軟體合作習慣,興趣關係圖信號處理篇
26.
Presentation Materials for my "Sound Analysis with the Fourier Transform and Python" OSCON Talk.對聲波的傅里葉變換27.
Kalman and Bayesian Filters in Python以卡爾曼和貝葉斯濾波器為基礎的信號處理教程28.
Timeseries Classification: KNN DTW時間序列分類問題:用KNN和DTW演算法對人體運動模式的識別29.
Lecture notes for the masters course Digital Signal Processing電子信號處理(完整的碩士課程)-----------------------我是工地分割線-------------------------
科學計算篇社會科學數據處理篇心理學與神經學篇經濟學與金融學篇數據可視化篇------------------------------------------------
點贊過20繼續更...10月11日已更:呦~居然過20贊了,怒更!------------------------------------------------點贊過40繼續更...10月14日已更:耶耶耶乾貨多的回答漲贊快~------------------------------------------------點贊過80繼續更...英語過關的童鞋可以直接去看sourcesources:A gallery of interesting IPython Notebooks · ipython/ipython Wiki · GitHubNotebook Gallery1 一次運行, 多次閱讀,保存運行結果
2 互動式編程, 邊看邊寫
3 可以添加各種元素,比如圖片,視頻, 鏈接, 文檔(比代碼注釋要好看), 相當於PPT
題外話分割線:
_____________________________________________
發現那些相關軟體互相模仿,就我所知的先後順序:
Mathematica,默認的界面是notebook。
jupyter notebook
MATLAB的live script
三者功能和界面差不多。
都支持帶格式的文字,鏈接,代碼,輸出結果等。一次運行,多次閱讀。
另外,可以關注jupyterlab, 是下一代的jupyter notebook, 除了後者的功能外,還帶有IDE的功能。目前只有alpha版。
目前還沒有拿Jupyter搞出啥炫目的東西,就不貼出來獻醜了。但是Jupyter讓我找到了使用Excel和草稿本+計算器的那種方便和快捷,加上可以安裝各種擴展包,然後又充滿了更多的想像。
總之,決定戒了Excel,玩兒Jupyter。
…更多文章請到數據冰山 - 知乎專欄
…更多回答請看何明科
jupyter 的強悍在於其全家桶
比如 jupyterhub/jupyterhub 這貨,搭建好後每個用戶就是一個獨立的 jupyter 環境了,互不干擾,免除最開始的安裝麻煩
還有這個 jupyter-incubator/dashboards_server dashboard_server 直接可以用來作為一個基於 notebook 的展示平台
用過Jupyter notebook才能明白它的爽啊!
- 我最大的感覺是,它是一張草稿紙,你可以通過它來進行你的思考探索過程,互動式的進行,每一步都能看到結果,也很方便查看之前的結果。
- 支持的格式很多,Markdown,Latex等都支持,還有很方便的快捷鍵,就是個在線編輯器嘛!
- 如果通過github+https://nbviewer.jupyter.org/ 還能將.ipynb文件可視化的分享給別人。
- 關鍵是,還免費~
Jupyter在一定程度上反映了數據科學生態圈的現在,預測了數據科學生態圈的未來。
在回答題主問題之前,先講一個故事。
這個故事從2017年8月在美國紐約召開的JupyterCon說起。
這次會議是Juptyter界的一次華山論劍,來自學術界、工業界的各路大神紛紛給出了自己的見解。會議的主題概括起來就是"探索世界上眾多『數據驅動』的機構如何利用Jupyter去分析數據,分享洞察,並創造不斷變化的、復用的數據科學"。(Discover how the world』s most data-driven organizations are using Jupyter to analyze data, share insights, and create dynamic, reproducible data science).
相信每一個聽過Jupyter或者想從事數據分析的人,對Anaconda都不會感到陌生。Anaconda的CTO/Co-funder Peter Wang是這樣說的:
《Jupyter and Anaconda: Shaking up the enterprise》(slides和YouTube視頻)
總結起來有兩點:
- Jupyter is crossing the chasm
Jupyter目前正在跨越上圖所示的分水嶺(Chasm):擁有了革新者(Innovators)以及早期的受眾(Adopters),即將進入早期大眾(Early Majority)的視野並佔據相應的市場份額。
- Jupyter is not just a tool, it powers the whole innovation of the world.
Jupyter作為一個開源項目,也在源源不斷為可持續性創新輸送動力。
來自加州大學伯克利分校的兩位學生Gunjan Baid和Vinitra Swamy也介紹了Jupyter Notebook是如何在伯克利的Data Science Program上實現應用:
《Data science at UC Berkeley: 2,000 undergraduates, 50 majors, no command line》(Slides和YouTube視頻)
- 伯克利正在使用Jupyter去完成Data Science的教學
伯克利在今年秋天的Data Science Program上已經全方位開始使用Jupyter系列產品,老師通過JupyterHub完成課件和作業的分發,學生用Jupyter Notebook完成作業,並在JupyterHub得到及時反饋,構建了Jupyter for teaching 這樣一個生態閉環。
工業界,Bloomberg正在使用Jupyter Notebook去搭建互動式application和dashboard,構建量化交易分析的Jupyter生態圈。
《Building interactive applications and dashboards in the Jupyter Notebook》
不論是在學術界還是工業界,Jupyter都已經開始逐步發力,走入主流市場。
那麼正在學習數據分析,或者想從事數據分析事業的你,為什麼要使用Jupyter呢?
- 從數據本身的角度看Jupyter
實際工作中,數據分析師往往拿到的數據並不是完整的,有缺失,有格式不統一;傳統用Excel的方式處理小批量數據沒有問題,但是數據量大了之後,用programming的方式處理數據更有效率。
- 從數據分析的角度看Jupyter
數據分析就是一個由發散、到探索,最終又到收斂的過程。Jupyter Notebook的互動式編輯展示功能,完美契合了數據分析的work flow。(Jupyter Notebook本來就是一群數據科學家搞出來的開源項目)。不論你是做數據分析、數據挖掘/機器學習,以及越來越火的人工智慧,Jupyter都是一個很好的平台,能夠解決各種層級的需求。
- 從數據分析團隊協作的角度看Jupyter
數據分析團隊內部,以及對接的市場、運營各部門,或者公司的C-level之間是存在非同步協作關係的。比如:在團隊內部,technical lead想要及時了解大家的工作進度;在團隊協作中,市場和運營部門需要數據分析師提供的分析報告結果去制定策略;軟體開發團隊需要數據分析團隊提供的演算法模型去開發工業化的SDK;Jupyter都可以做到遊刃有餘。
- 從未來的角度看Jupyter
Jupyter Notebook的用戶群體主要是在校的學生,未來的3-5年這批人會走出校園,他們熟練掌握使用的分析工具Jupyter將會對整個行業產生影響與變革。如同我們現在做文檔處理知道使用Office三件套(Word+PPT+Excel),將來做數據分析就是用Jupyter全家桶(Notebook+Hub+Lab).
同樣,未來的數據,以及分析的工具,越來越多會被封裝集成為一個個API;比如,你會寫一個API query去調取數據,然後用API analytical tools去做分析,最終生成報告,這是用Jupyter Notebook做數據分析的一個重要場景。
小結
誠然,Jupyter現在依舊有著很多槽點與不足,但就像開頭在JupyterCon上面Anaconda的CTO Peter Wang說的那樣,Jupyter is crossing the chasm. 不能否認,很多用Jupyter做的事情,在現階段,Excel和Tableau這些工具也可以做得很出彩。但是,面向未來,想要從事數據分析行業,學習並掌握一個programming based platform還是很有必要的。畢竟,焦慮被人工智慧替代的你,要去尋找一個解決方案,我相信Jupyter會是一個答案,learning Jupyter is preparing for the future.
與其繼續爭論why Jupyter,不如開始learn Jupyter. 在學習Jupyter做數據分析的路上,科賽網是你最好的陪伴。科賽網是聚合數據人才和行業問題的在線社區,率先打造國內首款基於Jupyter的在線數據分析協作平台K-Lab,為你的學習與工作帶來全新的體驗。
更多參考:
JupyterCon Speaker Slides Video
在線學習Jupyter的開源社區
jupytey notebook最大的好處就是所見所得,可以在瀏覽器上編輯代碼。像我打開電腦使用頻率最高的就是瀏覽器。一開電腦肯定會打開瀏覽器。瀏覽一些編程網站,覺得寫得不錯的代碼自己又搞不太懂,立馬就可以複製下來在瀏覽器上運行,反覆觀察實踐搞懂寫的什麼玩意。太方便了,不需要額外另外打開單獨的軟體。像一本草稿紙一樣隨意寫寫。又像一本筆記本一樣,稍微安裝下,在任何電腦上像打開筆記本一樣溫習一下
感謝前面提供了大量Jupyter notebook的學習資料,Notebook是一個數據分析和編寫代碼的好工具,但不是萬能的工具,因此如果能解決問題就可以使用,有些功能不支持也不能強求。
我們會使用Notebook開發TensorFlow應用,好處是能夠直接打開瀏覽器編程,而且支持多個代碼塊和文檔,能夠直接輸出局部代碼的運行的結果,而且運行速度也不滿,上手難度為0。而且更令人驚喜的是,Notebook只可以寫代碼和文檔,無法直接執行Shell腳本,而Jupyter還提供了Terminal kernel,可以在瀏覽器直接執行Shell命令,這樣基本滿足了開發過程中99%的需求了。目前我們正在考慮提供Notebook服務,為所有TensorFlow提供多租戶、安全隔離的開發環境,Notebook配合Docker是非常好的組合,為每個用戶啟動一個Notebook容器實現資源隔離,容器中部署好TensorFlow和其他環境依賴。在TensorFlow官方Docker鏡像中已經集成Notebook,而且我們又驚喜得發現通過配置文件可以設置Notebook的打開密碼,有了這個就可以實現安全的開發環境服務了,配合Kubernetes等集群管理工具可以更重複利用伺服器資源。總結一下,Jupyter Notebook基本能夠解決Python、TensorFlow開發者的環境問題,在我們的多租戶開發環境服務中起了非常重要的作用,希望大家也能用好的工具解決合適的問題。答案都是在說Jupyter Notebook好話的,我說一點濫用的可能性。
優點很多答案都說了,Notebook確實很強大,尤其適合Python/Shell/R這些解釋型語言,比如我們讀入了一個海量的資料庫需要花5分鐘,那麼在編譯型語言比如C/Java/Rust裡面,每次編譯運行都要花5分鐘來讀這個資料庫。這個在實驗各種數據處理的時候就非常的令人惱火,但是在notebook裡面,這完全不是問題,我們可以複製很多個數據對象,然後一個一個的用來實驗。
但是我仍然不太建議用Notebook作為寫代碼的主力,尤其是初學者。最好是在其他地方,比如Sublime Text、Vim、Pycharm、Rstudio等等先寫個框架,分成小塊貼到Notebook裡面然後填充、調試和運行。
理由是這樣的:因為Notebook可以非常的碎片化——比如一個cell就一行或者幾行,所以需要寫作者擁有較強的自律能力,在寫代碼的時候有計劃的整理和組織cell以形成還不錯的代碼結構,但是碎片化運行的誘惑實在是太大了。
『我過濾了一下數據,把之前的那一行式子改一下參數再跑一下看看?』
『哎呀,之前寫的那個函數應該再加一個argument,然後直接就可以處理現在的數據了』……
到最後一兩百個亂序的Cell,外加從一開始迭代到現在,很多類、函數和方程都已經修改的面目全非,import的庫散落各地,連發現了問題想回滾幾乎都是不可能的任務,於是怎麼辦呢?再開一個Notebook,把現在還能用的代碼copy過去,重新開始一輪循環……
靈活性是優勢,也是誘惑。程序語言社區討論過為什麼LISP這麼強大的語言沒有統治世界,反而現在的工業語言是C++/Java這種占多數。有一個人說的就非常的發人深省:
當你去寫其他語言的時候,是你要扭曲自己來適應其他語言的範式,但是你去寫LISP的時候,是LISP扭曲自己在適應你。
然後結果就形成了一個方言眾多,極度分裂的LISP社區。
Notebook給個人,尤其是初學者帶來的影響也是類似的。如果自身有一套成型的、還不錯的編程習慣,那麼notebook不會造成太大的影響,反而是錦上添花的利器;但是如果還沒有形成自己的習慣,從一上手就用notebook,那需要時常自我約束一下,因為一旦形成了這種修修補補的碎片化的習慣,長期來看對自己的效率負面影響並不可忽視。
我很喜歡Jupyter,使用的過程就好比拿紙和筆,還有計算器做數學演算. 而且可以把草稿輕鬆擦掉.比如,要寫個小Paper,完全可以用Jupyter來做,代碼和論述完美的結合了,而且直接還能跑起來.弄完之後,把亂糟糟的Cell直接卡嚓掉,然後to pdf,就是一篇paper了.
最早用notebook主要用來做一些帶公式的筆記,那時候latex,mathjax是什麼都不是很清楚,只是覺得這樣寫比較方便。之後用notebook做探索分析,可以直接滾上去看之前結果和推出的公式很方便。以前對應的工作是用spyder運行腳本搞定的,每寫完一段就F5一下,還是有點麻煩,如果有比較費時的操作還要對它單獨緩存或者暫時注釋掉。
不過第一次大規模用notebook還是那個cs231,讓我感受到notebook還能這麼用。不過之後就很少在notebook里用python。這學期學非參數統計和多元統計,我用R語言做一些試驗,原生的和Rstudio不能inline繪圖,比spyder式工作流還差,而Rmarkdown我不喜歡。所以為了像notebook里那樣使用R語言提了個問:R語言有能像IPython那樣inline繪圖的方法嗎? - R(編程語言) - 知乎。才知道jupyter原來可以設不同語言的kernel,5分鐘調好後用起來比Rmarkdown爽多了,記得以前搜到一個R的swirl包在console里教你怎麼用R,我得說jupyter里像cs231那樣的形式比swirl那種不知道高到哪裡去。numpy和那些神經網路框架都有很好的notebook式教程,R還沒見過,可能是因為notebook R kernel還用的不多吧,github才幾百個star。
強烈推薦R kernel for jupyter做一些統計試驗(這個檢驗在這種情況為什麼power比那個大之類的) IRkernel/IRkernel
我用的效果圖(R kernel打出的矩陣也比numpy的輸出好看。。)
R kernel就是畫圖不知道怎麼調大小,原生方法好像不起作用,結果就是畫的圖都太大,一個屏幕都放不完。另外原生R繪圖也太難看了,ggplot2也不適合科學計算的繪圖。jupyter notebook=office三件套+mathtype公式編輯器+MATLAB
anaconda python關鍵是安裝各種第三方包很方便
- 因為它提供了多種語言的 REPL 環境,而且每一種環境安裝起來都很簡單。
首先解釋多語言支持:
更多參見 IPython kernels for other languages · ipython/ipython Wiki · GitHub,基本涵蓋了我生活中所用到的 kernel。此外,幾乎每一種 REPL 環境的安裝都非常簡單,一兩句命令通常就能搞定,不 dirty。想起當初裝 atom-slime package 以及 atom IDE-Haskell 的時候還需要自己手動改一些配置,不夠傻瓜化。而現在,一句docker pull gibiansky/ihaskell:latest
或者
python3 ./install-cl-jupyter.py
就解決了。
2. 它基於 Web 和 CLI,非常的沒有存在感,像 atom,存在感太過強烈,適合專門的開發,不適合茶餘飯後處理實驗數據這樣輕鬆愉快的工作。它的其他優點,其他樓已經說過了,不再贅言。當然 Jupyter 也不是萬能,看習慣。因為太方便了……
excel就不說了。用excel分析的話,東西複雜了以後你會想死的。
python的話,你庫裝夠了,其實是OK的,然而……如果你用notebook,會快很多……
因為你可以常常上面掛著一行測試的代碼,下面掛著一行實際編寫的東西,再下面再掛著一行代碼中的不同的塊以便測試,然後邊寫邊測試,6得不行……如果你不是大神,而是我這種菜鳥,邊寫邊測試一個塊,簡直太方便了……你想想,我不用這個玩意,我得多好幾個操作步驟,用這玩意,都不用切換界面,shift+enter就知道哪裡出問題了……測試不光是代碼BUG,比如我分析數據,我提前大致感覺圖會是怎麼樣,不用這玩意,我得多操作多少個步驟來生成一個圖?
而且這玩意在本地創建一個伺服器,在網頁里執行,好處很多,比如邊查資料切界面方便…甚至你可以同區域網埠放出來一台linux一台windos,這邊邊寫邊玩,那邊OK的就加伺服器里……
當然,你如果說你是大神,代碼寫出來絕對沒BUG不用測試,那你隨便用個文本編輯器沒人攔你……很像Mathematica的notebook,但是前者由於太貴,始終在中國沒有推廣起來。