设为首页 加入收藏

TOP

小型的编程项目有哪些值得推荐?这本神书写了 22 个,个个了不得(一)
2019-07-15 22:09:56 】 浏览:95
Tags:小型 编程 项目有 哪些 值得 推荐 这本 书写 个个 了不得

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。

原文地址:https://mp.weixin.qq.com/s/ObDK4Mt8adL4-De354rMuQ

今天,猫哥要推荐一本非常著名的开源书籍:《500 Lines or Less》。

在开始正题之前,先介绍一下它所属的系列。该系列叫 AOSA,是“The Architecture of Open Source Applications”的简称,即“开源程序的体系结构”,目前有四本书,本期主角是最近的一本(发布于 2016.7.12)。

这个系列最初的目的是:研究那些优秀的开源项目,从中吸取精华的实践经验。

在前三本书中,研究对象已多达 50 几个,其中不乏名头响亮者,例如 Eclipse、Selenium、Git、matplotlib、nginx、Puppet、Pypy、SQLAlchemy 与 Twisted 等等。

每个章节的作者都是开源软件的核心参与者,介绍了项目是如何设计的、为什么这样设计、主要的组成部分是什么、各模块间如何互动、开发中的优秀成果有哪些……

这些书拆解了开源界的明星项目,通过阅读,你能了解到开源作者们的思考方式,了解到各类困难问题的解决方案,学习使用现成的轮子。所谓见多识广,学习吸取经验,有望“站在巨人的肩膀上”。

但是,这几本书主要偏向于架构和工程方面,项目代码量基本是几千上万行,对于初级程序员来说不够实用,想要吃透,挑战性太大。

针对这个问题,该系列新出了一本《500 Lines or Less》,专注于 500 行或更少代码的小型项目。

关注编写代码时所作出的设计决定与权衡

  • 为什么要使用一些接口将应用程序分成不同的模块?
  • 为什么在这里使用继承,在别处使用封装?
  • 如何预测程序的扩展,如何让其他程序员轻松实现?

简而言之,这本书聚焦于一些相对较小但又很具代表性的课题,并通过 500 行以内的代码来实现它。

书中写了 22 个项目,下面逐一简介:

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

使用语言:HTML、CSS、java script

该项目基于开源的 Waterbear 工具,提供可视化的操作界面,通过简单而直观的交互方式,实现图形编程。

2、A Continuous Integration System(持续集成系统)

使用语言:Python 2

CI 是软件开发中重要的持续集成系统,保障新功能的稳定实现。这个项目介绍了 CI 系统的工作原理,并尝试构建自己的 CI 系统,实现监听器、测样例调度器和测试运行器。

3、Clustering by Consensus(分布式系统)

使用语言:Python

探索如何实现一个网络协议,用于可靠的分布式计算。为了解决共识性问题,使用了 Paxos 算法的衍生 Multi-Paxos。学习这个项目,能接触很多分布式的知识。

4、Contingent: A Fully Dynamic Build System(动态构建系统)

使用语言:Python

构建系统(build system)用于将源代码生成用户可用的目标(如库、可执行文件、脚本等),常见的有 GNU Make、CMake、Apache Ant 等。Python 中的 PyInstaller 也是构建系统的一种。本项目实现了一个构建系统,且试图对“动态交叉引用”问题提出一个解决方案。

5、A Web Crawler With asyncio Coroutines(使用协程实现的爬虫)

使用语言:Python

作者之一是 Python 之父(Guido van Rossum),使用标准库 asyncio 实现异步的网页爬虫。(学习爬虫者必看)

6、Dagoba: an in-memory graph database(内存中的图形数据库)

使用语言:java script

图形数据库是 NoSQL 数据库的一种,使用图形理论来存储实体间的关系。这个项目介绍了图形数据库要解决的几个问题,然后将它实现。

7、DBDB: Dog Bed Database(狗床数据库)

使用语言:Python

用 Python 实现一个简单的键值对存储数据库(key/value database),其特点是在电脑崩溃或程序出错时,也能保证数据的安全。学习这个项目,可以掌握关于数据库的一些核心特性,例如原子性(atomicity)、一致性(consistency)、独立性(isolation)和持久性(durability)。

8、An Event-Driven Web Framework(事件驱动的Web框架)

使用语言:Common Lisp

构建一个以事件驱动的 Web 框架,使用 HTTP 做通信协议。

9、A Flow Shop Scheduler(流水车间调度器)

使用语言:Python 2

流水车间调度问题是查找最优解问题的一种,本项目基于局部搜索(local search)方法,实现流水车间调度器。

10、An Archaeology-Inspired Database(受考古学启发的数据库)

使用语言:Clojure

主流的数据库是面向空间编程 (place-oriented programming),即在更新数据的时候,新数据会占据老数据的空间。本项目开了个脑洞,用考古学家的视角设计数据库,记录数据的所有变化轨迹,更新数据时并不删除老数据。最终实现代码仅 360 行,作者称这个数据库为CircleDB

11、Making Your Own Image Filters(图片滤镜)

使用语言:Java

Processing 是一种用 Java 构建的开发环境,本项目介绍了它的特性与配置,并最终实现自己的滤镜 APP。功能比较简单,但实现过程涉及很多图像处理的内容。

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

使用语言:Python

它的结构跟 CPython 解释器差不多,作者命其名为 Byterun。 文中详细讲解了解释器的工作原理,跟着学习,将极有帮助。

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

使用语言:Python

3D 图形化编程,使用到了 OpenGL 来渲染图形。

14、A Simple Object Model(对象模型)

使用语言:Python

当今最主流的编程范式依然是面向对象编程,而它的核心则是对象模型。编写一些简单的对象模型可以更好地理解现有语言的内部工作原理,并且深入地了解面向对象语言的设计理念。

15、Optical Character Recognition (OCR,光学字符识别)

使用语言:Python、java script、HTML

基于人工神经网络(ANNs)实现的简单 OCR 系统,并设计了一个 Web 客户端。

16、A Pedometer in the Real World(现实计步器)

使用语言:Ruby

计步器的设计依据是什么,如何在现实世界中把它实现呢?该文回答了这个问题,它还设计了一个友好的 Web 界面。

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

使用语言:Alloy

同源策略(SOP)是当今浏览器中安全机制的重要组成部分,用于控制浏览器中脚本间的通信。文中使用 Alloy(一种用于建模与分析软件设计的语言)来构建一个可执行的 SOP 模型。

18、A

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python 之网络编程(基于TCP协议S.. 下一篇python基础知识四 各类型数据方法..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目