值得推荐的编程练手项目有哪些?Python、java、html多种语言都有
off999 2025-03-07 22:54 27 浏览 0 评论
本文原创并首发于公众号【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、JavaScript
该项目基于开源的 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(内存中的图形数据库)
使用语言:JavaScript
图形数据库是 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、JavaScript、HTML
基于人工神经网络(ANNs)实现的简单 OCR 系统,并设计了一个 Web 客户端。
16、A Pedometer in the Real World(现实计步器)
使用语言:Ruby
计步器的设计依据是什么,如何在现实世界中把它实现呢?该文回答了这个问题,它还设计了一个友好的 Web 界面。
17、The Same-Origin Policy(同源策略)
使用语言:Alloy
同源策略(SOP)是当今浏览器中安全机制的重要组成部分,用于控制浏览器中脚本间的通信。文中使用 Alloy(一种用于建模与分析软件设计的语言)来构建一个可执行的 SOP 模型。
18、A Rejection Sampler(采样器)
使用语言:Python
“采样”是指从一些概率分布中生成随机数,文中介绍了如何从非标准的概率分布里进行采样,以及如何计算样本在分布里对应的概率。
19、Web Spreadsheet(Web 电子表格)
使用语言:HTML、CSS、JS
电子表格是办公软件的必备,我们最熟知的是微软的 Excel。文中用 AngularJS 框架来实现一个简单的 Web 电子表格,所用代码仅 99 行。效果可在这查看:
https://audreyt.github.io/500lines/spreadsheet
20、Static Analysis(静态分析)
使用语言:Julia
“静态分析”指的是在不运行代码的情况下检查代码(类型、格式、编码规范等等),这项工作通常是由各种 IDE 编辑器来完成。本项目使用 Julia,实现了一些基本的静态分析功能。
21、A Template Engine(模板引擎)
使用语言:Python
“模板引擎”是 Web 开发中很重要的东西,支持将用户界面与实际业务数据分离,通过它可生成标准的 HTML 文档。文中所用的模板引擎语法基于 Django,总代码量仅 262 行。
22、A Simple Web Server(Web服务器)
使用语言:Python、HTML
实现了一个简单的 Web 服务器,主要使用了标准库中的 BaseHTTPServer 。另外,它还介绍了 CGI(通用网关接口) 协议,给服务器实现了运行外部程序的功能。
所有项目介绍完毕。可以看出,22 个项目中有 13 个使用了 Python,占60%,难怪网上有些不明真相的同学直呼它是“一本Python神书”。
有些项目初看的话,你难以想象只需不到 500 行代码就能实现,但是经过必要的问题裁剪,并使用恰当的现成轮子(开源库、工具、框架等),就能取得简单的成果。
与之相对的,不要以为 500 行以内的项目就很简单。每个项目的作者都大有来头(连 Python 之父都亲自上阵啦),文章中写到的技术背景、实现原理以及设计思路,全都值得仔细研读(很多还不一定能读懂)。
这本书是开源的,在官网上可以免费阅读。它还配套了 Github 仓库,存放了完整的项目代码,目前已经获得 20000 多颗星星啦。
Github 上有对它的中文翻译计划,但是翻译者寥寥,只有 10 几篇翻译了出来,翻译质量还不敢恭维。
不管如何,这么优质而诚意十足的开源书籍,非常值得推荐!作为咱们 Python 猫荐书系列的第八期,也非常合适。
最后附上该书在开篇中的寄语:
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.
我们希望本书作者的经验能够帮助您在自己的编程实践中成长。
相关链接:
书籍官网:
http://aosabook.org/en/index.html
Github英:
https://github.com/aosabook/500lines
Github中:
https://github.com/HT524/500LineorLess_CN
相关推荐
- vivo系统升级最新版本(vivo系统升级到什么版本了)
-
您可以按照以下步骤来更新vivoY5s的操作系统:1.进入设置-系统更新。2.点击“检查更新”,确保您的手机已经连接上WiFi并检测到有可用的更新。3.如果有可用的更新,请按照提示下载并安...
- 电脑做系统软件排行榜(做电脑系统的软件)
-
1、360安全卫士是一款由奇虎360公司推出的功能强、效果好、受用户欢迎的安全杀毒软件。360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、电脑救援、保护隐私,电脑专家,清理垃圾,清理痕迹多种功...
- win7热点(win7热点无ip分配)
-
1、点击桌面左下角的开始按钮,在搜索栏输入cmd,右击上方出现的cmd.exe,在弹出菜单中选择以管理员身份运行。2、然后在“命令提示符”里输入“netshwlansethostednetwor...
- centos下载安装(centos安装软件教程)
-
首先要知道您需要下载linux哪个发行版,目前比较流行的是ubuntu,所以以ubuntu为例说明:1、访问ubuntu官方网站www.ubuntu.com2、点击右上角的DownLoad(下载),...
- 360老版本卫士2014版(360卫士8.7.0)
-
先打开360官网,下载360软件管家,再从360软件管家里下载360卫士这是明显的中毒表现:1、关闭系统还原;2、重启,按F8,进入安全模式。3、在安全模式里,打开360杀毒。4、全盘查杀。要耐心等待...
- iso文件是什么格式(iso是啥格式)
-
pic是一种图片格式的文件,不过以pic为后缀的图片文件并不多见,所以有很多人都不知道pic是什么以及pic文件应该用什么打开。可以将pic文件修改为jpg文件格式,打开方式如下:1、第一步,首先在电...
- 8t硬盘安装win7系统(8t硬盘用什么分区)
-
7-8吨。t就是吨的英文缩写。吨是音译专用字,用于重量单位或船只容积单位。繁体字“吨”由“口”和“顿”字构成,“口”字表示它是音译外来语用字,“顿”字近似地表示其读音。◎质量单位,公制一吨等于100...
- cdr格式怎么转换成psd(cdr格式怎么转换成ezd)
-
CDR文件是CorelDRAW的原始文件格式,而PSD文件是AdobePhotoshop的原始文件格式。因此,要将CDR文件转换为PSD格式,您可以使用以下两种方法:1.打开CorelDRAW并打...
-
- 免费p图软件(电脑免费p图软件)
-
分享几款免费看vip电影电视剧的app,只要在各大播放器上映的电影,在这几款app都可以看到。1、火星影视2、新电影天堂3、呲哩呲哩4、鲨鱼影视这些软件直接可以百度下载,爱奇艺,腾讯视频电脑上有哪些画画的软件好用,要免费的,windows自...
-
2025-12-25 01:03 off999
- 英特尔i5处理器性能排行榜(英特尔i5处理器性能介绍)
-
性能从高到低:i5-11600k(f),i5-11600(f),i5-11500,i5-10600k(f),i5-11400(f),i5-11600t,i5-10600(f),i5-11500t,i5...
-
- 视频修复软件免费版(高清视频修复软件免费版)
-
视频修复软件众多,电脑端用会声会影,可以进行编辑,特效,完善音视频你所构建大多部分内容。另外如果是视频损坏的话也可以用另外一款软件也是比较适合,比如AllMediaFixer是多媒体文件修复工具,如果你有一些多媒体文件无法播放时,可能这...
-
2025-12-24 23:51 off999
- 电脑黑屏只能看见鼠标(联想电脑黑屏只有鼠标箭头怎么办)
-
1、按电脑上面的重启按钮,然后按住键盘上面的F8。 2、按键盘上面的方向键选择,安全模式里面的第一个选项。 3、进入桌面后点击控制面板,选择卸载。 4、然后右键卸载最近安装的软件,接着点击左下角...
- 2012年win7系统32位(电脑系统win732位)
-
你好朋友;没有;微软自从windowsserver2008r2操作系统开始;只会发布64位的windows服务器操作系统了;朋友换句话也就是说;凡是win2008之后的服务器操作系统;...
- 台式电脑线路安装步骤图(台式电脑怎么安装线路图)
-
安装电脑线路需要以下步骤:首先,确定电脑所需的线路类型,如电源线、网线等。然后,将线路插头与相应的接口连接,确保插头与接口对应正确。接下来,将线路沿着合适的路径布置,避免过度弯曲或拉扯。在布置线路时,...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
