不到500行Python程式碼,你能編出什麼?
不到500行Python程式碼,你能寫出什麼東西?Github上一個名為“500lines”的開源專案集結了眾多業內較為知名的開發者,同時,所有貢獻專案的程式碼行數均在500行以內。完整版本每章包含一個程式演練,該程式在至多500條原始碼行中解決了軟體工程中的規範問題。來看看業內一線的程式設計大牛能在500行程式碼之內編出什麼程式吧!
每位建築師在學習期間都會研究家庭住宅、公寓、學校和其他常見建築型別。同樣,每個程式設計師都應該知道編譯器如何將文字轉換為指令,電子表格如何更新單元格以及資料庫如何高效保持資料。
很多書籍和資料會給出非常棒和相對成熟的高階架構,但這些可能並不實用,當程式碼行數縮減,很多不必要的設計就會被避免,選擇什麼樣的介面、框架、如何擴充套件、如何合理利用繼承等會變得很重要,這對於程式設計師來說,很容易被吸收。
該專案重點關注有經驗的程式設計師在編寫程式碼時所做的設計決策和權衡:
為什麼用這些特定的介面將應用程式分成某些特定模組?
為什麼要在這裡繼承?
如何預測程式可能需要擴充套件的地方,以及如何讓其他程式設計師使用更容易?
(以下為500 Lines or Less專案內包含的部分開源專案簡短介紹,完整專案檔案和解說均可透過文末連結檢視)
1、500 Lines or Less——視覺化程式設計工具(Blockcode)
該專案主要用於為龜圖(turtle graphics)實現塊語言,透過簡單拖放建立圖案,整個過程透過常用的Html、CSS和JavaScript來實現(每一個塊由html元素組成,CSS用於設定樣式,JavaScript時間處理器進行拖拽並修改引數)。其次,作者將塊構建為一個框架以服務其他程式語言。
該專案也是圖形程式設計的一種方式,目前圖形程式設計也被廣泛應用於低年級學生程式設計教學中。Github上也有很多類似專案,雖然程式語言可能不同,但實現邏輯有異曲同工之妙。
2、500 Lines or Less——持續整合系統
該專案作者曾任職於Mozilla,後轉去Twitch工作,一直致力於在保證程式碼安全的前提下提升程式設計師的編碼速度。
在這個敏捷開發、敏捷交付的時代,很多程式在上線前的測試都不完整。多數情況下,開發人員會在開發過程中直接測試程式碼以確保功能實現的完整和穩定,隨著版本的不斷迭代,需要進行的測試越來越多,持續整合系統可以很好地解決這類問題,在開發環境中對不斷迭代的程式碼進行完全測試。
這類系統主要功能就三項:獲取更改後程式碼、自動測試程式碼、生成測試報告。但是,這個過程必須是穩定的、正確的以及可恢復的。
3、500 Lines or Less——Python 直譯器
該專案名為Byterun,是一個用Python實現的Python直譯器。它的結構與CPython非常相似,但是Byterun更小。它最大的缺點是速度略慢,但已經可以解析大多數程式碼了,畢竟這是500行程式碼以內完成的,肯定會有一些不足。而且,CPython基於C語言實現並做了大量最佳化。
作為一個直譯器,Byterun很容易被理解,如果你希望搞清楚一個直譯器的編寫過程,這是一個非常不錯的嘗試,並且Python語言本身就很容易理解。
4、500 Lines or Less——簡單的物件模型
該專案主要實現了一套簡單的物件模型,先實現一個簡單的類與例項,並能夠透過例項訪問一些方法,這是很多早期面嚮物件語言所採用的物件導向模型。然後,在此基礎上逐漸擴充套件,進一步最佳化效能得到一個低配版的Python物件模型。
5、500 Lines or Less——光學文字識別
該專案涉及目前大火的人工智慧技術,專案說明針對人工智慧、反向傳播進行了部分解說,對於想要進入人工智慧領域的開發者而言,這是非常棒的學習資料和實踐專案。
作者利用前饋神經網路探索搭建了一個OCR系統,主要由5部分組成,分別寫在5個檔案之中。它們是:客戶端(ocr.js)、伺服器(server.py)、簡單的使用者介面(ocr.html)、基於反向傳播訓練的ANN(ocr.py)、ANN的實現指令碼(neural_network_design.py)
6、500 Lines or Less——決策取樣器
有一定數學基礎的開發者對取樣、多項分佈、隨機分佈等名詞一定不陌生,簡單來說,該專案將整個過程透過程式設計方式來實現。
7、500 Lines or Less——模板引擎
Web應用程式是典型以文字為主的常見任務,這類應用程式最重要的一個階段就是將生成的HTML送到瀏覽器,一般的HTML至少會包含一些小的動態資料,比如使用者名稱之類的。對於如何生成一個動靜態資料混合的大型字串是很多開發者一直在嘗試解決的問題,模板引擎就是這樣一個解決方案。
8、500 Lines or Less——簡易web
儘管網際網路技術發生了天翻地覆的變化,但過去20年裡,網路核心的改動卻不多,大多數web伺服器仍然遵循以前的方式處理資料,這個簡易的web伺服器同樣如此,如果你想了解web伺服器的簡單搭建過程,這個開源專案絕對是最好的選擇。
完整的開源專案清單當然遠不止這8個專案,但部分專案尚未出現中文翻譯版,中文版地址中涵蓋了所有開源專案的具體說明連結,如果有興趣,可以自行移步至Github平臺。
Github開源地址英文原版:
Github開源地址中文版(待完成):
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2154017/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 幽默:編寫Python程式碼你們使用什麼偵錯程式?Python
- 你能從這兩個程式原始碼中發現什麼原始碼
- Python 編碼為什麼那麼蛋疼?Python
- Python能幹什麼?Python
- cython 編譯python程式碼時候找不到Python.h編譯Python
- Twitter能為你做什麼?
- 拿什麼拯救你,我的程式碼--c#編碼規範實戰篇C#
- Python能幹什麼?為什麼會火?Python
- 一行Python程式碼能實現什麼喪心病狂的功能?Python
- Python能幹什麼?為什麼會這麼火?Python
- Python能幹什麼?python怎麼這麼火?Python
- 學Python的方法是什麼 怎麼能學好Python程式設計Python程式設計
- 為什麼網路創業你掙不到錢?創業
- 程式設計師你為什麼這麼累【續】:編碼習慣之日誌建議程式設計師
- 你打算敲程式碼到什麼時候?
- 你的 Java 程式碼對 JIT 編譯友好麼?Java編譯
- 你構建的程式碼為什麼這麼大
- 預編譯SQL為什麼能夠防止SQL隱碼攻擊編譯SQL
- 機器學習能為你的業務做什麼?有些事情你肯定猜不到!(機器學習入門系列第一篇)機器學習
- 關於 Google 釋出的 JS 程式碼規範,你需要了解什麼?GoJS
- 程式設計學習難?Python Tutor能將你的程式碼執行直觀顯示出來程式設計Python
- 為什麼空密碼能夠取得你的ROOT許可權?密碼
- Python為什麼能擴充套件Python套件
- Python3中預設編碼是什麼?怎麼用?Python
- 低程式碼平臺能為企業帶來什麼?
- 為什麼你寫的程式碼糟透了?
- 你的JavaScript程式碼都經歷了什麼JavaScript
- 除了敲程式碼,你還有什麼副業嗎?
- 為什麼你的程式碼如此難以理解
- 什麼程式碼是ChatGPT無法編寫的? - datachimpChatGPT
- python都用什麼編輯器Python
- 程式設計師你為什麼這麼累【續】:編碼習慣之Controller規範程式設計師Controller
- 程式碼行數能衡量編碼進度嗎?
- python程式碼是解釋型語言,為什麼還有編譯過程?Python編譯
- 為什麼找不到工作的是你,技術差的還是你?
- 學員會診之04:你為什麼找不到工作?
- Python 萬能程式碼模版:爬蟲程式碼篇Python爬蟲
- python爬蟲抓取資料時失敗_python爬蟲 大佬 請教下 為什麼爬取的資料有時能爬到 有時有爬不到, 程式碼如下:...Python爬蟲