不到500行Python代码,你能写出什么东西?Github上一个名为“500lines”的开源项目集结了众多业内较为知名的开发者,同时,所有贡献项目的代码行数均在500行以内。完整版本每章包含一个程序演练,该程序在至多500条源代码行中解决了软件工程中的规范问题。来看看业内一线的编程大牛能在500行代码之内编出什么程序吧!
创新互联建站长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为福清企业提供专业的成都做网站、网站制作,福清网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
每位建筑师在学习期间都会研究家庭住宅、公寓、学校和其他常见建筑类型。同样,每个程序员都应该知道编译器如何将文本转换为指令,电子表格如何更新单元格以及数据库如何高效保持数据。
很多书籍和资料会给出非常棒和相对成熟的高级架构,但这些可能并不实用,当代码行数缩减,很多不必要的设计就会被避免,选择什么样的接口、框架、如何扩展、如何合理利用继承等会变得很重要,这对于程序员来说,很容易被吸收。
该项目重点关注有经验的程序员在编写代码时所做的设计决策和权衡:
为什么用这些特定的接口将应用程序分成某些特定模块?
为什么要在这里继承?
如何预测程序可能需要扩展的地方,以及如何让其他程序员使用更容易?
(以下为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开源地址英文原版:https://github.com/aosabook/500lines
Github开源地址中文版(待完成):https://github.com/HT524/500LineorLess_CN