Estoy escribiendo mi primer lenguaje de programación que está orientado a objetos y hasta ahora es muy bueno para crear una sola 'clase'. Pero, digamos que quiero tener clases, digamos ClassAy ClassB. Siempre que estos dos no tengan nada que ver entre sí, entonces todo está bien. Sin embargo, digamos que ClassAcrea un ClassB--esto plantea 2 preguntas relacionadas:
-¿Cómo sabría el compilador cuando compila ClassAque ClassBincluso existe, y, si es así, cómo sabe sus propiedades?
Mis pensamientos hasta ahora habían sido: en lugar de compilar cada clase a la vez (es decir, escanear, analizar y generar código) cada "archivo (no realmente archivo, per se, sino una" clase ") necesito escanear + analizar cada uno primero , luego generar código para todos?
fuente

Los idiomas antiguos a veces son más estrictos; considere lo que es posible en Java:
He visto el antipatrón anterior, y es realmente feo (lo habría prohibido). Ambas unidades de compilación se utilizan entre sí. Pero Ifc se puede compilar en código sin tener un Implem compilado. El código compilado, .class, comparable a un C .obj, contiene "información de enlace:" una importación de Implem, que llama a un constructor sin parámetros
Implem(). La clase Implem puede compilarse sin problemas. En parte, el ClassLoader: haciendo datos de clase de inicialización / creación de JVM, y en parte la propia máquina virtual Java, juega un poco como enlazador , integrando todo.Por ejemplo, compilar con una versión de una biblioteca específica y ejecutar con otra versión de esa biblioteca reconocerá los errores de tiempo de ejecución.
Entonces la respuesta: la compilación entrega unidades de código de objeto compilado, que uno tiene que ver como código + datos + API para vincular entre sí.
El compilador debe luego también hacer un relleno de juntas, y verificar la API de vinculación; Una segunda fase.
Esto puede irritar y parecer poco elegante, pero las pruebas matemáticas pueden funcionar de la misma manera: al probar la corrección completa, uno ya puede considerar que una parte es verdadera hasta la verificación.
fuente