Python Ecosystem
NOTE: this outline can be viewed as an ordinary markdown, but it also be viewed as a mind map, which could be rendered by [markmap][20230416_markdown_mindmap_example.md]
生态系统
- 语言属性
- Memory Model/Concurrency Model
- 特殊的语言属性,比如generator,yield等
- polymophism
- function overload
- multiple dispatch
- 动态属性
- 剩下的还有一些组织syntax suger的模式
- 环境管理和可重复性
- pip/requirement/venv
- bazel的hermetic build
- CI/CD的pipline
- 性能
- 包括如何做profiling
- 熟悉不同profiling的工具
- 测试
- 主要是以unittest和pytest两个包为主
- 重要的Library和Framework
- 比如request,pydantic,Flask/FastAPI/Django等
- 系统编程
- 比如IO,Network等
Role of developers
- Application Developer
- 快速开发
- 功能好就行
- 面向用户需求
- Library Developer / Framework Developer
- 熟悉语言特性
- 编程模型设计
- Infrastructure Developer
- 与library dev相似,但是更宽泛
- System Developer
- 熟悉操作系统与系统底层架构
- 性能
Thread & Concurrency
这个主题主要是对Control Flow的编程与安排,以及对Time-Sharing的安排。按照OSTEP的分类法,这个也可以分为Mechanism和Policy两类。Python基本只能做IO的multiple threading
- Threading/Multi-process
- Gevent/Greenlet
- Async & Coroutine
- 要与Subroutine区分一下
Data Model
Python的Data Model涉及到如何把object在内存中安排和布置。
- Class
- MetaClass
- Type的设计和拓展
IO
- 电脑终端(如键盘输入)
- 文件(二进制与Text文件)
- 网络(sockets和相关机制)