不到500行的Python代码,你能写出什么?Github上一个名为“500lines”的开源项目聚集了众多业内知名的开发者。同时,所有贡献项目的代码行数都在500行以内。完整版包含每章一个程序演练,该程序解决了软件工程中的一个典型问题,最多500行源代码。看看业界顶尖的程序员500行代码能写出什么程序!每个建筑师在学习期间都会研究家庭住宅、公寓、学校和其他常见的建筑类型。同样,每个程序员都应该知道编译器如何将文本转换为指令,电子表格如何更新单元格,以及数据库如何有效地保存数据。完整的项目清单很多书籍和资料都会给出非常好的和比较成熟的高层架构,但是这些不一定实用。当代码行数减少时,就会避免很多不必要的设计。什么样的接口、框架、如何扩展、如何合理利用继承等都会变得很重要,很容易被程序员吸收。该项目侧重于经验丰富的程序员在编写代码时所做的设计决策和权衡:为什么将应用程序划分为具有这些特定接口的某些模块?为什么在这里继承?您如何预测您的程序可能需要扩展的地方,以及如何使其他程序员更容易使用?(以下是500LinesorLess项目中包含的部分开源项目的简单介绍,完整的项目文件和解释可以通过文末链接查看)1.500LinesorLess——可视化编程工具(Blockcode)本项目主要用于Turtle图形实现块语言,通过简单的拖放创建图案,整个过程由常用的Html、CSS和JavaScript实现(每个块由html元素组成,CSS用于设置样式,JavaScript时间处理器用于拖放和修改参数)。其次,作者将块构建为服务于其他编程语言的框架。运行查看效果本项目也是图形化编程的一种方式,图形化编程在大三学生的编程教学中也有广泛的应用。Github上也有很多类似的项目。虽然编程语言可能不同,但实现逻辑是相似的。2.500行以内——持续集成系统本项目作者曾在Mozilla工作,后转至Twitch工作。他一直致力于在保证代码安全的前提下提高程序员的编码速度。在这个敏捷开发和敏捷交付的时代,很多程序在上线前都没有经过充分的测试。大多数情况下,开发者会在开发过程中直接对代码进行测试,以保证功能实现的完整性和稳定性。随着版本的不断迭代,需要进行的测试也越来越多。持续集成系统可以很好地解决此类问题,在开发环境中充分测试迭代代码。这类系统的主要功能有三个:获取修改后的代码,自动测试代码,生成测试报告。但是,过程必须是稳定的、正确的和可恢复的。3.500行以内——Python解释器项目名称为Byterun,是一个用Python实现的Python解释器。它的结构与CPython非常相似,但Byterun更小。它最大的缺点是速度稍慢,但已经可以解析大部分代码了。毕竟是500行代码以内完成的,肯定会有一些不足之处。而且CPython是基于C语言实现的,做了很多优化。作为解释器,Byterun很容易理解。如果你想搞清楚写解释器的过程,这是一个很好的尝试,Python语言本身也很容易理解。4.500LinesorLess——简单对象模型本项目主要实现一套简单的对象模型,先实现一个简单的类和实例,通过实例可以访问一些方法,很多早期的面向对象语言对象都采用-导向模型。然后在此基础上逐步扩展,进一步优化性能,得到低配版的Python对象模型。5.500行以内——光学文本识别本项目涉及当前流行的人工智能技术。项目描述解释了部分人工智能和反向传播。对于想要进入人工智能领域的开发者来说,这是一个很好的学习资料和动手项目。作者使用前馈神经网络探索构建了一个OCR系统,主要由5个部分组成,分别写在5个文件中。它们是:客户端(ocr.js)、服务端(server.py)、简单用户界面(ocr.html)、基于反向传播训练的ANN(ocr.py)、ANN实现脚本(neural_network_design.py)6.500行或Less—DecisionSampler具有一定数学基础的开发者一定熟悉采样、多项分布、随机分布等术语。简单的说,这个项目的整个过程都是通过编程来实现的。7.500行或更少——模板引擎Web应用程序是典型的基于文本的常见任务。此类应用程序最重要的阶段是将生成的HTML发送到浏览器。一般来说,HTML至少会包含一些小的动态数据,比如用户名之类的。如何生成一个动态和静态数据混合的大字符串是很多开发者一直试图解决的问题,模板引擎就是这样一个解决方案。8.500行以内——简单的web服务器虽然互联网技术发生了翻天覆地的变化,但网络的核心在过去的20年里并没有太大的变化。大多数网络服务器仍然以以前的方式处理数据。这个简单的web服务器服务器也是如此。如果你想了解构建Web服务器的简单过程,这个开源项目绝对是不二之选。开源项目的完整列表当然远不止这8个项目,只是有些项目的中文翻译版本还没有出现。中文版地址涵盖了所有开源项目的具体描述链接。有兴趣的可以自行移至Github平台。中文翻译完成现状Github开源地址英文原版:https://github.com/aosabook/500linesGithub开源地址中文版(待补):https://github.com/HT524/500LineorLess_CN
