成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小型的編程項(xiàng)目有哪些值得推薦?這本神書寫了 22 個(gè),個(gè)個(gè)了不得

sf_wangchong / 1725人閱讀

摘要:電子表格使用語(yǔ)言電子表格是辦公軟件的必備,我們最熟知的是微軟的。文中用框架來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的電子表格,所用代碼僅行。

本文原創(chuàng)并首發(fā)于公眾號(hào)【Python貓】,未經(jīng)授權(quán),請(qǐng)勿轉(zhuǎn)載。

原文地址:https://mp.weixin.qq.com/s/Ob...

今天,貓哥要推薦一本非常著名的開源書籍:《500 Lines or Less》。

在開始正題之前,先介紹一下它所屬的系列。該系列叫 AOSA,是“The Architecture of Open Source Applications”的簡(jiǎn)稱,即“開源程序的體系結(jié)構(gòu)”,目前有四本書,本期主角是最近的一本(發(fā)布于 2016.7.12)。

這個(gè)系列最初的目的是:研究那些優(yōu)秀的開源項(xiàng)目,從中吸取精華的實(shí)踐經(jīng)驗(yàn)。

在前三本書中,研究對(duì)象已多達(dá) 50 幾個(gè),其中不乏名頭響亮者,例如 Eclipse、Selenium、Git、matplotlib、nginx、Puppet、Pypy、SQLAlchemy 與 Twisted 等等。

每個(gè)章節(jié)的作者都是開源軟件的核心參與者,介紹了項(xiàng)目是如何設(shè)計(jì)的、為什么這樣設(shè)計(jì)、主要的組成部分是什么、各模塊間如何互動(dòng)、開發(fā)中的優(yōu)秀成果有哪些……

這些書拆解了開源界的明星項(xiàng)目,通過(guò)閱讀,你能了解到開源作者們的思考方式,了解到各類困難問(wèn)題的解決方案,學(xué)習(xí)使用現(xiàn)成的輪子。所謂見多識(shí)廣,學(xué)習(xí)吸取經(jīng)驗(yàn),有望“站在巨人的肩膀上”。

但是,這幾本書主要偏向于架構(gòu)和工程方面,項(xiàng)目代碼量基本是幾千上萬(wàn)行,對(duì)于初級(jí)程序員來(lái)說(shuō)不夠?qū)嵱?,想要吃透,挑?zhàn)性太大。

針對(duì)這個(gè)問(wèn)題,該系列新出了一本《500 Lines or Less》,專注于 500 行或更少代碼的小型項(xiàng)目。

關(guān)注編寫代碼時(shí)所作出的設(shè)計(jì)決定與權(quán)衡

為什么要使用一些接口將應(yīng)用程序分成不同的模塊?

為什么在這里使用繼承,在別處使用封裝?

如何預(yù)測(cè)程序的擴(kuò)展,如何讓其他程序員輕松實(shí)現(xiàn)?

簡(jiǎn)而言之,這本書聚焦于一些相對(duì)較小但又很具代表性的課題,并通過(guò) 500 行以內(nèi)的代碼來(lái)實(shí)現(xiàn)它。

書中寫了 22 個(gè)項(xiàng)目,下面逐一簡(jiǎn)介:

1、Blockcode: A visual programming toolkit(可視化編程工具包)

使用語(yǔ)言:HTML、CSS、JavaScript

該項(xiàng)目基于開源的 Waterbear 工具,提供可視化的操作界面,通過(guò)簡(jiǎn)單而直觀的交互方式,實(shí)現(xiàn)圖形編程。

2、A Continuous Integration System(持續(xù)集成系統(tǒng))

使用語(yǔ)言:Python 2

CI 是軟件開發(fā)中重要的持續(xù)集成系統(tǒng),保障新功能的穩(wěn)定實(shí)現(xiàn)。這個(gè)項(xiàng)目介紹了 CI 系統(tǒng)的工作原理,并嘗試構(gòu)建自己的 CI 系統(tǒng),實(shí)現(xiàn)監(jiān)聽器、測(cè)樣例調(diào)度器和測(cè)試運(yùn)行器。

3、Clustering by Consensus(分布式系統(tǒng))

使用語(yǔ)言:Python

探索如何實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)協(xié)議,用于可靠的分布式計(jì)算。為了解決共識(shí)性問(wèn)題,使用了 Paxos 算法的衍生 Multi-Paxos。學(xué)習(xí)這個(gè)項(xiàng)目,能接觸很多分布式的知識(shí)。

4、Contingent: A Fully Dynamic Build System(動(dòng)態(tài)構(gòu)建系統(tǒng))

使用語(yǔ)言:Python

構(gòu)建系統(tǒng)(build system)用于將源代碼生成用戶可用的目標(biāo)(如庫(kù)、可執(zhí)行文件、腳本等),常見的有 GNU Make、CMake、Apache Ant 等。Python 中的 PyInstaller 也是構(gòu)建系統(tǒng)的一種。本項(xiàng)目實(shí)現(xiàn)了一個(gè)構(gòu)建系統(tǒng),且試圖對(duì)“動(dòng)態(tài)交叉引用”問(wèn)題提出一個(gè)解決方案。

5、A Web Crawler With asyncio Coroutines(使用協(xié)程實(shí)現(xiàn)的爬蟲)

使用語(yǔ)言:Python

作者之一是 Python 之父(Guido van Rossum),使用標(biāo)準(zhǔn)庫(kù) asyncio 實(shí)現(xiàn)異步的網(wǎng)頁(yè)爬蟲。(學(xué)習(xí)爬蟲者必看)

6、Dagoba: an in-memory graph database(內(nèi)存中的圖形數(shù)據(jù)庫(kù))

使用語(yǔ)言:JavaScript

圖形數(shù)據(jù)庫(kù)是 NoSQL 數(shù)據(jù)庫(kù)的一種,使用圖形理論來(lái)存儲(chǔ)實(shí)體間的關(guān)系。這個(gè)項(xiàng)目介紹了圖形數(shù)據(jù)庫(kù)要解決的幾個(gè)問(wèn)題,然后將它實(shí)現(xiàn)。

7、DBDB: Dog Bed Database(狗床數(shù)據(jù)庫(kù))

使用語(yǔ)言:Python

用 Python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)(key/value database),其特點(diǎn)是在電腦崩潰或程序出錯(cuò)時(shí),也能保證數(shù)據(jù)的安全。學(xué)習(xí)這個(gè)項(xiàng)目,可以掌握關(guān)于數(shù)據(jù)庫(kù)的一些核心特性,例如原子性(atomicity)、一致性(consistency)、獨(dú)立性(isolation)和持久性(durability)。

8、An Event-Driven Web Framework(事件驅(qū)動(dòng)的Web框架)

使用語(yǔ)言:Common Lisp

構(gòu)建一個(gè)以事件驅(qū)動(dòng)的 Web 框架,使用 HTTP 做通信協(xié)議。

9、A Flow Shop Scheduler(流水車間調(diào)度器)

使用語(yǔ)言:Python 2

流水車間調(diào)度問(wèn)題是查找最優(yōu)解問(wèn)題的一種,本項(xiàng)目基于局部搜索(local search)方法,實(shí)現(xiàn)流水車間調(diào)度器。

10、An Archaeology-Inspired Database(受考古學(xué)啟發(fā)的數(shù)據(jù)庫(kù))

使用語(yǔ)言:Clojure

主流的數(shù)據(jù)庫(kù)是面向空間編程 (place-oriented programming),即在更新數(shù)據(jù)的時(shí)候,新數(shù)據(jù)會(huì)占據(jù)老數(shù)據(jù)的空間。本項(xiàng)目開了個(gè)腦洞,用考古學(xué)家的視角設(shè)計(jì)數(shù)據(jù)庫(kù),記錄數(shù)據(jù)的所有變化軌跡,更新數(shù)據(jù)時(shí)并不刪除老數(shù)據(jù)。最終實(shí)現(xiàn)代碼僅 360 行,作者稱這個(gè)數(shù)據(jù)庫(kù)為CircleDB

11、Making Your Own Image Filters(圖片濾鏡)

使用語(yǔ)言:Java

Processing 是一種用 Java 構(gòu)建的開發(fā)環(huán)境,本項(xiàng)目介紹了它的特性與配置,并最終實(shí)現(xiàn)自己的濾鏡 APP。功能比較簡(jiǎn)單,但實(shí)現(xiàn)過(guò)程涉及很多圖像處理的內(nèi)容。

12、A Python Interpreter Written in Python(Python解釋器)

使用語(yǔ)言:Python

它的結(jié)構(gòu)跟 CPython 解釋器差不多,作者命其名為 Byterun。 文中詳細(xì)講解了解釋器的工作原理,跟著學(xué)習(xí),將極有幫助。

13、A 3D Modeller(3D建模)

使用語(yǔ)言:Python

3D 圖形化編程,使用到了 OpenGL 來(lái)渲染圖形。

14、A Simple Object Model(對(duì)象模型)

使用語(yǔ)言:Python

當(dāng)今最主流的編程范式依然是面向?qū)ο缶幊?,而它的核心則是對(duì)象模型。編寫一些簡(jiǎn)單的對(duì)象模型可以更好地理解現(xiàn)有語(yǔ)言的內(nèi)部工作原理,并且深入地了解面向?qū)ο笳Z(yǔ)言的設(shè)計(jì)理念。

15、Optical Character Recognition (OCR,光學(xué)字符識(shí)別)

使用語(yǔ)言:Python、JavaScript、HTML

基于人工神經(jīng)網(wǎng)絡(luò)(ANNs)實(shí)現(xiàn)的簡(jiǎn)單 OCR 系統(tǒng),并設(shè)計(jì)了一個(gè) Web 客戶端。

16、A Pedometer in the Real World(現(xiàn)實(shí)計(jì)步器)

使用語(yǔ)言:Ruby

計(jì)步器的設(shè)計(jì)依據(jù)是什么,如何在現(xiàn)實(shí)世界中把它實(shí)現(xiàn)呢?該文回答了這個(gè)問(wèn)題,它還設(shè)計(jì)了一個(gè)友好的 Web 界面。

17、The Same-Origin Policy(同源策略)

使用語(yǔ)言:Alloy

同源策略(SOP)是當(dāng)今瀏覽器中安全機(jī)制的重要組成部分,用于控制瀏覽器中腳本間的通信。文中使用 Alloy(一種用于建模與分析軟件設(shè)計(jì)的語(yǔ)言)來(lái)構(gòu)建一個(gè)可執(zhí)行的 SOP 模型。

18、A Rejection Sampler(采樣器)

使用語(yǔ)言:Python

“采樣”是指從一些概率分布中生成隨機(jī)數(shù),文中介紹了如何從非標(biāo)準(zhǔn)的概率分布里進(jìn)行采樣,以及如何計(jì)算樣本在分布里對(duì)應(yīng)的概率。

19、Web Spreadsheet(Web 電子表格)

使用語(yǔ)言:HTML、CSS、JS

電子表格是辦公軟件的必備,我們最熟知的是微軟的 Excel。文中用 AngularJS 框架來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 Web 電子表格,所用代碼僅 99 行。效果可在這查看:https://audreyt.github.io/500lines/spreadsheet

20、Static Analysis(靜態(tài)分析)

使用語(yǔ)言:Julia

“靜態(tài)分析”指的是在不運(yùn)行代碼的情況下檢查代碼(類型、格式、編碼規(guī)范等等),這項(xiàng)工作通常是由各種 IDE 編輯器來(lái)完成。本項(xiàng)目使用 Julia,實(shí)現(xiàn)了一些基本的靜態(tài)分析功能。

21、A Template Engine(模板引擎)

使用語(yǔ)言:Python

“模板引擎”是 Web 開發(fā)中很重要的東西,支持將用戶界面與實(shí)際業(yè)務(wù)數(shù)據(jù)分離,通過(guò)它可生成標(biāo)準(zhǔn)的 HTML 文檔。文中所用的模板引擎語(yǔ)法基于 Django,總代碼量?jī)H 262 行。

22、A Simple Web Server(Web服務(wù)器)

使用語(yǔ)言:Python、HTML

實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的 Web 服務(wù)器,主要使用了標(biāo)準(zhǔn)庫(kù)中的 BaseHTTPServer 。另外,它還介紹了 CGI(通用網(wǎng)關(guān)接口) 協(xié)議,給服務(wù)器實(shí)現(xiàn)了運(yùn)行外部程序的功能。

所有項(xiàng)目介紹完畢??梢钥闯?,22 個(gè)項(xiàng)目中有 13 個(gè)使用了 Python,占60%,難怪網(wǎng)上有些不明真相的同學(xué)直呼它是“一本Python神書”。

有些項(xiàng)目初看的話,你難以想象只需不到 500 行代碼就能實(shí)現(xiàn),但是經(jīng)過(guò)必要的問(wèn)題裁剪,并使用恰當(dāng)?shù)默F(xiàn)成輪子(開源庫(kù)、工具、框架等),就能取得簡(jiǎn)單的成果。

與之相對(duì)的,不要以為 500 行以內(nèi)的項(xiàng)目就很簡(jiǎn)單。每個(gè)項(xiàng)目的作者都大有來(lái)頭(連 Python 之父都親自上陣?yán)玻?,文章中寫到的技術(shù)背景、實(shí)現(xiàn)原理以及設(shè)計(jì)思路,全都值得仔細(xì)研讀(很多還不一定能讀懂)。

這本書是開源的,在官網(wǎng)上可以免費(fèi)閱讀。它還配套了 Github 倉(cāng)庫(kù),存放了完整的項(xiàng)目代碼,目前已經(jīng)獲得 20000 多顆星星啦。

Github 上有對(duì)它的中文翻譯計(jì)劃,但是翻譯者寥寥,只有 10 幾篇翻譯了出來(lái),翻譯質(zhì)量還不敢恭維。

不管如何,這么優(yōu)質(zhì)而誠(chéng)意十足的開源書籍,非常值得推薦!作為咱們 Python 貓薦書系列的第八期,也非常合適。

最后附上該書在開篇中的寄語(yǔ):

We hope that the experiences of the authors in this book will help you grow out of your comfort zone in your own programming practice.

我們希望本書作者的經(jīng)驗(yàn)?zāi)軌驇椭谧约旱木幊虒?shí)踐中成長(zhǎng)。

相關(guān)鏈接:

書籍官網(wǎng):http://aosabook.org/en/index.html

Github英:https://github.com/aosabook/500lines

Github中:https://github.com/HT524/500LineorLess_CN

往期薦書回顧:

第一期:《編寫高質(zhì)量代碼改善 Python 程序的 91 個(gè)建議》

第二期:《Python最佳實(shí)踐指南》

第三期:《黑客與畫家》

第四期:《Python源碼剖析》

第五期:《Python高性能編程》

第六期:《深度學(xué)習(xí)》

第七期:一次性搜羅40本Python入門書籍

公眾號(hào)【Python貓】, 本號(hào)連載優(yōu)質(zhì)的系列文章,有喵星哲學(xué)貓系列、Python進(jìn)階系列、好書推薦系列、技術(shù)寫作、優(yōu)質(zhì)英文推薦與翻譯等等,歡迎關(guān)注哦。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45171.html

相關(guān)文章

  • 小型編程項(xiàng)目哪些值得推薦這本書寫 22 個(gè),個(gè)個(gè)不得

    摘要:電子表格使用語(yǔ)言電子表格是辦公軟件的必備,我們最熟知的是微軟的。文中用框架來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的電子表格,所用代碼僅行。 showImg(https://segmentfault.com/img/remote/1460000019770011); 本文原創(chuàng)并首發(fā)于公眾號(hào)【Python貓】,未經(jīng)授權(quán),請(qǐng)勿轉(zhuǎn)載。 原文地址:https://mp.weixin.qq.com/s/Ob... 今天,...

    haitiancoder 評(píng)論0 收藏0
  • 小型編程項(xiàng)目哪些值得推薦?這本書寫 22 個(gè)個(gè)個(gè)不得

    摘要:電子表格使用語(yǔ)言電子表格是辦公軟件的必備,我們最熟知的是微軟的。文中用框架來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的電子表格,所用代碼僅行。 showImg(https://segmentfault.com/img/remote/1460000019770011); 本文原創(chuàng)并首發(fā)于公眾號(hào)【Python貓】,未經(jīng)授權(quán),請(qǐng)勿轉(zhuǎn)載。 原文地址:https://mp.weixin.qq.com/s/Ob... 今天,...

    Bowman_han 評(píng)論0 收藏0
  • 小型編程項(xiàng)目哪些值得推薦這本書寫 22 個(gè),個(gè)個(gè)不得

    摘要:電子表格使用語(yǔ)言電子表格是辦公軟件的必備,我們最熟知的是微軟的。文中用框架來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的電子表格,所用代碼僅行。 showImg(https://segmentfault.com/img/remote/1460000019770011); 本文原創(chuàng)并首發(fā)于公眾號(hào)【Python貓】,未經(jīng)授權(quán),請(qǐng)勿轉(zhuǎn)載。 原文地址:https://mp.weixin.qq.com/s/Ob... 今天,...

    CoyPan 評(píng)論0 收藏0
  • 『 讀書筆記 』4月讀書總結(jié)|博文推薦

    摘要:原文鏈接讀書筆記月讀書總結(jié)博文推薦寫在前面計(jì)劃是每月讀本書,書籍類型大概是三個(gè)方面的金融,技術(shù),管理。嚴(yán)重推薦,值得認(rèn)真研讀。推薦指數(shù)創(chuàng)業(yè)維艱這本書真正吸引我的,是它的英文原標(biāo)題。 原文鏈接:『 讀書筆記 』4月讀書總結(jié)|博文推薦 寫在前面 計(jì)劃是每月讀 5-10 本書,書籍類型大概是三個(gè)方面的:金融,技術(shù),管理。之所以選擇這三個(gè)方面,一方面是因?yàn)樽约簩?duì)這三個(gè)方面都很有興趣,其次是被 ...

    URLOS 評(píng)論0 收藏0
  • 大學(xué)四年學(xué)計(jì)算機(jī)最值得技術(shù)書,要讀就讀最好書,程序員精品書單!

    摘要:其他語(yǔ)言數(shù)據(jù)結(jié)構(gòu)跟算法一樣是在開始寫代碼的時(shí)候用得很少,都有著包裝好的現(xiàn)成東西供你使用,但同樣是面試和崗位上升會(huì)用得到,我就不說(shuō)數(shù)據(jù)結(jié)構(gòu)對(duì)代碼有多少好處,請(qǐng)記住一句話能夠?qū)崿F(xiàn)個(gè)功能和能夠最優(yōu)地實(shí)現(xiàn)個(gè)功能,是完全不同級(jí)別的要求。 ...

    liangzai_cool 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<