敲代碼就像寫小說?Jupyter讓文學編程成為現實

2021-01-10 讀芯術

全文共1670字,預計學習時長7分鐘

圖源:datacamp

Notebooks一直是增進軟體創意開發的工具。數據科學家用Jupyter記錄他們的工作、探索和實驗新算法,快速實踐新方法並實時觀察結果。當時機成熟時,軟體開發人員就會用經典的IDE(集成開發環境),如VisualStudio Code和Pycharm,來將創意實現為庫和框架。

那麼,有沒有一種方法可以將Jupyter轉化成一個成熟的IDE,將最初概念變成功能強大且可重用的模塊呢?

為了解決這個問題,包括QuantStack、Two Sigma、Bloomberg和fast.ai在內的幾家機構開發了兩個新工具:在Jupyter中添加了nbdev和可視化調試器。

文學編程與nbdev

1983年,Donald Knuth提出了一種新的編程範型,稱為「文學編程」。

他說文學編程是「一種將程式語言與文檔語言相結合的方法,從而使編寫的程序比只用高級語言編寫的程序更強大、更便捷、更易維護,而且可以說更有趣。主要思想是把程序當作文學作品,用人的語言而不是計算機的」。

圖源:unsplash

Jeremy Howard和Sylvain Gugger對這個概念的設計非常著迷,去年年底他們推出了nbdev。該框架可以在熟悉的Jupyter Notebook環境中編寫代碼,探索和實驗不同的方法,直到找到問題的有效解決方案。然後通過使用某些關鍵詞,nbdev可以將實用功能提取到一個完整的python庫中。

確切來說,nbdev通過添加以下支持來補充Jupyter:

· 根據最佳實踐,從notebook中自動創建python模塊

· 從代碼中自動創建可搜索的超連結文檔

· 將pip安裝程序上傳到PyPI

· 在標準IDE中編輯和導航代碼

· 將所有更改同步回notebook

· 測試

· 連續集成

· 處理版本控制衝突

nbdev使軟體開發員和數據科學家能夠在Jupyter環境中,根據最佳實踐,開發完整的python庫。nbdev設置於PyPI上,要進行安裝只需運行:

pip install nbdev

對於可編輯安裝,請使用以下命令:

git clone https://github.com/fastai/nbdev

pip install -e nbdev

查缺補漏

雖然nbdev涵蓋了在Jupyter內部進行類似IDE開發所需的大部分工具,但仍然缺少一個部分:可視化調試器。

圖源:unsplash

因此,由多家機構的開發人員組成的團隊,近日首次公開發布了Jupyter可視化調試器。該調試器具有人們期望的IDE調試器的大部分功能:

· 變量探測器、斷點窗口列表和源預覽

· 顯示當前執行已停止位置的標誌

· 可以瀏覽調用堆棧(下一行、插入、跳出等)

· 可以在興趣線旁邊直接設置斷點窗口

為了利用這個新工具,需要一個在後端實現Jupyter調試協議的內核。第一步是安裝這樣的內核。到目前為止唯一可以實現的是xeus-python。要進行安裝,只需運行:

conda install xeus-python -c conda-forge

然後,運行Jupyter Lab,在側邊列上搜索「擴展管理器」並啟用(如果已經啟用可以跳過這一步)。

啟用擴展管理器

側邊列會出現一個新按鈕。要安裝調試器,只需轉到新啟用的「擴展管理器」按鈕並搜索「調試器」擴展。

啟用調試器

安裝後,Jupyter Lab將要求執行構建,以包含最新的更改。點擊接受,幾秒鐘後,就可以運行了。

為了測試調試器,我們創建了一個新的xpython notebook並編寫了一個簡單的函數。像往常一樣運行函數並觀察結果。若要啟用調試器,請點擊窗口右上方的關聯按鈕。

啟用調試器

現在準備再次運行該函數。只是這一次,執行將在設置的斷點窗口停止,這樣就能夠查看程序的狀態。

調試代碼

可以看到程序在斷點窗口處停止。打開調試器面板,可以看到變量、斷點窗口列表、調用堆棧導航和原始碼。

Jupyter的新可視化調試器提供了期望的IDE調試器的所有功能。它仍在開發中,因此還有很多新功能可以期待。其開發者計劃在2020年發布以下功能:

· 在變量探測器中可呈現豐富的mime類型

· 啟用儘可能多的內核調試

· 用戶界面中可支持條件斷點窗口

· 從JupyterLab Voilà預覽擴展中啟用Voilà控制面板的調試

Jupyter Notebook一直是探索和實驗代碼的好方法。然而,軟體開發人員通常會使用一個成熟的IDE,記錄工作,以創建可用於生產的庫。這不僅低效,而且會造成Jupyter價值的損失。

圖源:unsplash

nbdev和可視化調試器是兩個旨在縮小notebook和IDE之間差距的項目。此外,notebook可實現更好的文檔,包括圖表、圖像和視頻,有時還提供了更好的工具,如自動補全功能。

讓編程就像寫小說,這樣的Jupyter你值得擁有!

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 15個應該掌握的Jupyter Notebook 使用技巧
    Jupyter Notebook是一個基於瀏覽器的交互式編程環境(REPL, read eval print loop),它主要構建在IPython等開源庫上,允許我們在瀏覽器上運行交互式python代碼。並且有許多有趣的插件和神奇的命令,大大增強了python的編程體驗。1.
  • 敲黑板!寫小說經常卡住怎麼辦,一招教給你!
    傳統文學是另外一種東西。在這裡,我只針對網絡小說討論。1、雪花綱是一種工具,很好用。但在建立大綱之前,得先有個指導思想。我個人建議是用「馬斯洛需求層次」理論作為指導思想,來設計情節大綱。馬斯洛需求層 金字塔圖在下面這個答案裡,討論了馬斯洛需求層次於網絡小說的意義。寫小說容易卡文怎麼樣辦?
  • 阿里傳奇程式設計師,只會寫代碼,卻從一名員工做到了合伙人
    多隆原本是金庸小說《鹿鼎記》裡的人物,是一位對主子非常忠心憨厚,也很善良的武功人士。他為了韋小寶闖刀山下火海,面對眾多的財權誘惑時,仍然忠心於韋小寶,甚至有一次為了保護韋小寶差點喪失了自己的性命。好在韋小寶也仗義,不僅和多隆結為拜把子兄弟,還助力多隆的事業,讓他得以實現人生價值。
  • Jupyter/IPython筆記本集合 !(附大量資源連結)-上篇
    這篇文章介紹了Eric任職的阿拉斯加高中的教育背景。在Python中完整實現Adaboost,帶有數字識別代碼。和Python進行Map-Reduce編程的教程。來自巴黎的Vélib數據集https://nbviewer.jupyter.org/gist/rossant/5520933使用Python看到時代雜誌如何寫男性和女性,由Neal Caren提供。
  • 一個字母敲五六次才能成功,他用一根無力手指敲出澎湃人生
    高淳說:「我上小學時,因為不能像其他小朋友一樣出去玩,就開始在紙上寫偵探小說。」小學四年級,高淳握著筆,顫顫巍巍地在一張香菸紙上寫了一個警察抓殺人犯的故事。這則《窗戶中的魔影》成了高淳踏上寫作道路的「敲門磚」。小學畢業後,高淳進入了常熟第五中學讀初中。高淳在初一時發表了第一篇詩歌,初三時發表了第一篇小說《請柬》。
  • 文學就像貓一樣,有好多條命
    所以作為一個小說家來說,我不用看很多小說然後才能來寫小說,我可以看些別的來寫小說。比如說這是一個圖像的時代,那麼藝術啊,電影啊,乃至你在網絡上隨便看到的一些東西,都可以成為一種寫作的養分,對你會有一種寫作上的刺激。
  • Jupyter Notebooks三大附加功能,好用到飛起!
    全文共1786字,預計學習時長4分鐘Jupyter Notebooks可以最有效地顯示結果和共享代碼,這在以前的IDEs中並不容易實現。然而,仍有些地方有待改進。在文本編輯器中,希望有一些功能在Jupyter中不是默認的。但別擔心。就像Python一樣,Jupyter也有第三方擴展功能。本文主要介紹一些最有用的擴展功能。
  • 雲大評刊:近期文學名刊小說掃描
    趙小爽:安勇的《漢娜小姐》發表於《上海文學》2019年第10期。小說主要在寫人在自由與安穩之間徘徊的矛盾。  丁雯(2018級研究生):我覺得《漢娜小姐》裡面的「尋找故鄉」很值得一說,有過故鄉的一代和從未擁有故鄉的一代,暴露出的代際問題和童年創傷讓人唏噓,竟不知該為誰挽悼。  郭詩亮:我覺得《上海文學》第9期南子的中篇《西北有浮雲》值得一讀。
  • 寫Python 代碼不可不知的函數式編程技術
    本文對 Python 中的函數式編程技術進行了簡單的入門介紹。本文適合對函數式編程有基本了解的讀者。如果你對函數式編程並不熟悉,可以先閱讀這篇文章:https://medium.com/@yannickdot/functional-programming-101-6bc132674ec5。
  • 「研究數學就像寫小說」
    原標題:「研究數學就像寫小說」   簡歷1977年出生於伊朗首都德黑蘭,憑著出色的數學天賦被保送入法爾贊內甘高中就讀(伊朗專門培育特長生的學校);1999年在伊朗著名的理科名校謝裡夫科技大學獲得數學學士學位;之後到美國哈佛大學深造,2004年取得哈佛博士學位。
  • 正午訪談 | 倪湛舸:幻想文學正在捕捉我們的現實
    1正午:我想從你的小說《異旅人》開始,你在序裡講到,你是在美國讀書的時候,開始寫這部小說,想要把同人文的因素和學院生活結合在一起。可能那時候你已經有很多寫同人小說的經驗了?倪湛舸:我寫同人小說的經驗不多,是小透明寫手,但確實讀了很久。我也許是最早一批混同人論壇的,大約從上個世紀末、二十一世紀初開始。
  • 韓松:在今天,科幻小說其實是「現實主義」文學
    曾經科學技術離我們還有點遠,但現在就到了我們身邊,發生在今天中國的科幻熱預示著科幻小說已經成為今天的「現實主義」文學。  中華讀書報:如果說飛氘對您的評價更多側重作品的表現形式,那麼對科幻小說頗有研究的北京師範大學教授吳巖對您的評價則是小說內涵層面的,「幾乎將科幻文學所有預設的內容規則全部顛覆,在尋找科幻文學本土化方面邁出了重要一步」,您如何理解這裡所說的顛覆?
  • 入門|始於Jupyter Notebooks:一份全面的初學者實用指南
    install jupyter你可以在這裡查看官方的 Jupyter 安裝文檔:https://jupyter.readthedocs.io/en/latest/install.html開始上手!在這個終端輸入 python,你就可以開始寫你的 Python 腳本了!但在本文中,我們重點關注的是筆記本,所以我們從 New 選項中選擇 Python 3。你會看到下面的屏幕:然後你可以從導入最常見的 Python 庫開始:pandas 和 numpy。
  • 大疆機甲大師 S1 編程體驗:這張卡讓小學生也能學會寫代碼
    近年來,隨著人工智慧的發展,機器人從少數人的專屬玩物進入到了主流消費市場,教育機器人也逐漸成為了「家用教具老三樣」以外的一種新選擇但就像你所了解的那樣,現在的教育機器人往往都噱頭大於實際,或許還不如 Siri。不過,這樣的想法在真正了解機甲大師 S1(即大疆小車)後,是時候發生變化了。
  • 科幻文學:基於現實的未來視野
    原標題:科幻文學:基於現實的未來視野  科幻作家立足於當前社會的發展、科技水平,推導出未來社會的某種呈現狀態,並就人類的現存問題提出解決之道。科幻作家走在時代的前面,照亮未知、提出假設——甚至在若干年後會變成現實。
  • 代碼你打算寫到幾歲?雷軍、張一鳴都曾寫過...
    我們無法得知張小龍現在是否會經常寫代碼,但可以想見,他似乎沒有停下,不然也不會有2018年小程序的問世。李彥宏——為檢索信息寫代碼李彥宏中學就喜歡計算機編程,還參加過全國青少年程序編程大賽,得過獎,但是在省級比賽中沒能拿到名次。這個經歷讓李彥宏覺得,全國計算機水平在他之上的人很多。一直到高考填志願,他都沒敢報計算機專業,而是去北大讀了圖書館系。
  • 代碼中的編程少年
    陳瑞鵬  計算機代碼正成為下一個世界通用「語言」。人們普遍認為,編程會讓人的思維方式變得更加縝密。  如今,不少家長意識到編程的魅力,讓孩子從小學習編程,鍛鍊他們的思維邏輯能力,同樣希望孩子的英語、數學能力也在編程中得到提升。  11歲的陳瑞鵬和12歲的姚斯盛就是這樣的廣州少年。陳瑞鵬別出心裁地用編程給媽媽送上特別的母親節禮物;姚斯盛憑藉《未來的家》的作品獲得比賽的三等獎。他們都在代碼中找到了另一個自我。
  • 如何優化Jupyter? - CDA數據分析師
    簡單來說,Jupyter Notebook是一個客戶端-伺服器應用程式,用於在瀏覽器中運行能夠同時包含代碼和富文本元素(如段落,方程式等)的文檔。接下來,我們一起來學習一些關於Jupyter Notebook使用的簡單技巧。我們將從有用的快捷方式開始,最後添加主題,自動生成的目錄等。2. 快捷鍵快捷鍵對於加速編寫代碼非常有用。
  • python教程第三課:python IDE之jupyter notebook詳細教程講解
    這次我們先來講一下如何使用Notebook進行python的代碼編寫1、 首先我們在系統安裝裡面找到Anaconda,裡面有一項Jupyter Notebook,點擊它以後將打開下面的界面, 這個界面看網址就知道,是在本地啟動打開的一個頁面,那麼除了可以從anaconda裡面打開,也可以在CMD窗口裡面輸入jupyter notebook
  • 3D遊戲編程:遊戲代碼的整體結構是什麼樣子的?
    也就是說,你能把前面17節的內容完全掌握了,你的3D遊戲編程基礎就有了,接下來再講解代碼,你就很容易明白了。從這一節開始,我們將要把整個3D遊戲示例程序的代碼講解一遍。由於有Direct3D的幫忙,我的程序代碼只有1000來行,所以,即便你是初學者,也是可以學明白這些代碼的。「學」的部分你知道一個程式設計師最煩的事情是什麼嗎?