对于练手单品的选择你还有疑问吗?不确定从哪个项目开始?首先有两个建议:***不要写太实用的程序来练手。想想什么更像是知识。只写爬虫是没用的,但根本不写也不行。对于练习程序,要注意简化和抽象,但如果简化得不合适,很容易看了几篇教程就懒得上手。接下来介绍几个适合新手的练习项目。0.算法系列——排序查找Python写swap很方便,一句话(a,b=b,a),所以写比较排序可以短小精悍。最适合刚入门的新语言练习算法,也可以顺便刷题,对找工作有帮助。简单的练习会让你受益无穷。1.编译系列本系列的重点是上面提到的简化,但不要指望一口气写出一个完整的C编译器,即使它只针对C的一小部分。所以我们需要一步一步来,写一个计算器解释器是一个好的开始,然后我们可以写一个极简语言解释器,比如brainfuck。更进一步,你可以扩展现有的计算器解释器,比如添加声明、赋值和操作、循环和流程控制,形成一个简单的LL(1)文法,然后递归分析,这样你就可以创建一个简单的并发图.一种完全开发的玩具语言问世了。2.分布式系统/网络规划系列这个系列的项目,第一步可以从写一个简单的HTTP客户端开始,道理很简单,因为HTTP大概是最简单的应用层协议了。那你可以考虑实现一个基本的ssh,你大概天天都用ssh,难道你不想自己做一个简单版的吗?然后可以考虑分布式系统类中的经典作业,比如写一个简单的RPC。可以参考Java的RPC原理和Google的RPC框架(有Python版)。3.操作系统系列对于操作系统系列,可以尝试写一个简单的存储管理文件系统。第一个简化是用一个大的空文件作为一个磁盘,把磁盘的读写抽象为这个文件的读写。基本上就是实现inode,然后封装成一个shell,支持最基本的命令,比如创建,追加,读,写,删除。本练习最有趣和最有意义的部分是多级索引的实现。4.周边系列也可以试试Jython、IronPython之类的,看看和CPython对比如何。然后再试试Pypy,一开始肯定很开心,最后发现各种常用库都不支持,最后还是换回CPython。对于实验,使用IPython将Python函数作为命令运行是非常方便的。
