course consume compiler code python c

compiler - python consume api



Quiero comenzar a leer el código fuente de Python. ¿Por dónde debería comenzar? (5)

Quiero comenzar a leer el código fuente de Python.

Mi experiencia,

Conozco Python y Java muy bien. Conozco algunos otros idiomas en varios niveles de competencia, pero ninguno de C / C + / particularmente bien. Estudié C en la universidad, pero nunca he programado profesionalmente en ella.

Mis razones para leer este código.

  1. Comprende cómo funciona la pitón debajo del capó.
  2. Aprende C mejor.

1 es más importante para mí que 2.

¿cómo debería hacerlo?


1) Primero asegúrate de que puedes construir tu propia Python y ejecutarla en un depurador. Por lo tanto, no solo puede agregar expresiones de impresión, sino también dividir en puntos y seguir el flujo de código. Si tiene toolsl que le permiten rastrear llamadas a funciones, perfecto, lo necesitará.

2) Comience con el archivo que implementa los tipos de datos. Son muy fáciles de entender y usted mejora su lenguaje de lenguaje C al leer el código.

3) Realice diagramas UML: herramientas simples de ayuda de dibujo como Argo UML o MS Visio pueden ayudarlo aquí. Escriba el flujo del código.

4) Lee el código de inicio para Python. Vea qué y cómo se inicializa la infraestructura básica.

6) Ty entiende el lado de Python al 100%, incluso los detalles de implementación más difíciles, qué es un AST y qué métodos son vinculados y no vinculados, y cómo los implementará. Cuando tienes un modelo en mente sobre cómo escribirías un intérprete de Python, entonces puedes ir al paso maestro final.

7) Escriba una extensión de depurador con la API C de depuración rápida provista. Esto te ayuda a mejorar tus habilidades en C.

8) Tome el último paso maestro y sumérjase en el corazón del código de intérprete. Esto es incluso difícil de leer y comprender para un programador de C bien capacitado. Lea cómo las expresiones son evaluación y las búsquedas de métodos se almacenan en caché, los marcos se configuran para reglas de alcance, etc. Es difícil y complejo, en términos de complejidad y líneas de código.

9) Inicie Adobe Photoshop y cree un lindo diploma "Master of Python" y colóquelo en la pared de su oficina.


Comience por aprender sobre la API de Python C. Es una API grande y rica, y la fuente de Python la usa naturalmente en todas partes. No llegará muy lejos en el código fuente de Python antes de que tenga que entender qué se entiende por Py_INCREF, etc.

Realicé una presentación en Pycon explicando la API: Una Excursión Whirlwind a través de las Extensiones Python C que pueden ser útiles. Las extensiones C usan la misma API que el código Python.


Descargue la source del sitio web de Python. Digamos que has descomprimido la fuente en un directorio llamado Python-3.1.1. Sugiero dos puntos de partida dentro del código fuente de Python que te ayuden a explorar cómo funciona Python bajo el capó:

  • Examine cómo la máquina virtual de Python ejecuta el bytecode generado desde el interperter. Python VM está en el archivo llamado Python-3.1.1 / Python / ceval.c. El núcleo de la VM es un ciclo eval que comienza en la función PyEval_EvalFrameEx en ceval.c. Lea la fuente y los comentarios en línea. Estoy seguro de que lo disfrutarías.

  • Otra opción es observar cómo se implementan los tipos de datos incorporados de python, como listas, diccionarios y conjuntos. Por ejemplo, los conjuntos se implementan en Python-3.1.1 / Objects / setobject.c. El directorio de Objetos también contiene implementaciones de otros tipos de datos.


La pregunta es bastante amplia, así que supongo que la mejor respuesta es simplemente descargar la fuente de Python y volverse loco. Elige un módulo o sección de pitón que conozcas bien y comprueba qué hay debajo del capó.


Primero, si estás interesado en 1, comenzaría leyendo la fuente de varios módulos de Python (y no saltaría directamente a la C). Cada vez que me encontré leyendo la fuente de algunos módulos, siempre aprendí cosas nuevas sobre la programación de Python.

En segundo lugar, si estás tratando de aprender C mejor, personalmente te sugiero algo completamente diferente: programa en él. Solo leer estáticamente el código fuente no te hará entender mejor a C (o al menos, es un enfoque limitado, puede hacerte un poco mejor, pero hay mucho que la fuente de lectura te dará).

Después de programar al menos un proyecto de tamaño moderado en C, comenzaría a buscar en la fuente de Python. Esa es realmente la única forma de conocer C mejor, y realmente creo que leer la fuente C de Python sin conocer bien a C no te llevará muy lejos.

Una idea para un proyecto de C

De hecho, esta es una idea para un proyecto de C: escriba un intérprete de Python en C. Obviamente, no va a estar ni cerca de completarse, y este es un proyecto bastante difícil, pero si solo se enfoca en algunas partes del lenguaje, creo que es una buena idea

No solo te ayudará a aprender C, sino que te ayudará a entender Python mucho mejor incluso antes de ver la fuente: tendrás que comprender más a fondo muchas cosas en Python, comprenderás las ventajas del diseño en cómo funciona Python, etc.

Luego, cuando finalmente leas el código de Python, no solo entenderás por qué algunas cosas funcionan de esa manera, probablemente aprenderás muchas técnicas de C realmente geniales que resuelven los problemas que tienes.