Skip to content

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
    1. 快速开发
    2. 功能好就行
    3. 面向用户需求
  • Library Developer / Framework Developer
    1. 熟悉语言特性
    2. 编程模型设计
  • Infrastructure Developer
    1. 与library dev相似,但是更宽泛
  • System Developer
    1. 熟悉操作系统与系统底层架构
    2. 性能

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和相关机制)