从Python 2.3
开始使用至今,整理历年经验所得,知识图谱,希望有助于学习Python
的同学。
写了二十万行左右的Python代码,是Python让我得以在帝都安身立命。
技术选型
当时选择Python引入到项目团队中来,考察了当时可以接触到的几乎所有的编程语言,比如C, C++, Java, Perl, PHP, Delphi, Pascal, 甚至研究能不能使用 Masm
写出来一套满足项目需要的基础框架出来。
项目需要大量的数据处理,需要应对高频的新需求,需要跨平台迁移到不同的Linux或AIX上面运行。
提出了著名的3C原则, C Complete,能不能覆盖绝大部分的问题域, C Cost,成本,既包含开发成本也包括运维成本,也包含迭代成本,C Change,快速应对变化。
基于上述3C原则,特别最后一个C,我决定选择了Python
。
选择Python
的其他原因
- Google把Python作为公司层面的第三门编程语言,和C、Java并列(大厂背书)
- 当时非常流行的
BitTorrent
下载软件使用Python开发(成功实践) - 可以参考
BitTorrent
源代码(可以学习)
知识来源
日后的开发经历中,的确多多从BitTorrent
源代码中受益。当时可以学习的资料非常用有限,中文资料稀缺到几乎可以说没有。
当时三个知识来源
- Python官方,教父写的早期文档和各种PEP
-
BitTorrent
源代码
方法论
第一个版本开发出来,部署上线,即取得非常惊艳的效果,效率比其他语言开发的史前版本高出1个数量级,功能和处理逻辑复杂于史前版本,但是效率依旧高出一个数量级。
第二年开始重构,这个时候我已经非常熟悉Python的语言特性,也观摩过若干个知名开源项目的源代码。在重构中引入单元测试。
这段学习让我总结出来的方法论如下
- 选择合适的工具可以大幅度降低研发成本和确保交付品质
- 识别不同的知识来源,善用之
- 选择恰当的重构或优化时间点,避免早期重构和过度优化
获奖感言
BTW
- 感谢Python 之父 Guido van Rossum
- 把单元测试技术介绍给我的哥们,名字叫黄冬,后来担任优酷土豆的CTO。