Aquí hay una aplicación desde el principio de mi mente:
Construir sistemas
Considere una estructura de código fuente en la que está creando varias bibliotecas (DLL) y tienen dependencias entre sí. Por ejemplo, para compilar dll A, debe haber creado las DLL B, C y D (tal vez tenga una referencia de B, C y D en el proyecto que compila A).
- ¿Es necesaria una sólida formación en informática para realizar investigaciones en informática teórica?
- ¿Cuáles son los documentos fundamentales sobre detección comprimida?
- ¿Es la computación en el espacio diferente de la computación en la tierra?
- Siendo un estudiante universitario, ¿cómo puedo publicar gratuitamente trabajos de investigación en ciencias de la computación?
- ¿Cómo debo seleccionar un tema de trabajo de investigación único y excelente en informática?
Marquemos un borde de dependencia de cada uno de B, C y D a A, lo que implica que A depende de los otros tres y solo puede construirse una vez que cada uno de los tres está construido. Técnicamente hablando, (u, v) => Un borde de u a v implica que v.dll se puede construir solo cuando u.dll ya está construido.
Después de construir un gráfico de estos dlls y bordes de dependencia, puede concluir que una compilación exitosa es posible si el gráfico resultante es acíclico (ignorando formas avanzadas de resolver dependencias cíclicas como archivos asmmeta [1]). ¿Cómo decide el sistema de compilación en qué orden construir estos dlls? Los clasifica topológicamente.
Por lo tanto, en un orden como X-> Z-> T-> B-> D-> C-> A, puede comenzar a construir X (que solo puede depender de ensamblajes externos ya construidos), luego siga la lista ordenada topológicamente de asambleas.
Nota : Esta es una “aplicación artificial del mundo real”. Puede que no sea así como los ensamblados son construidos por msbuild u otros compiladores.
[1] http://stackoverflow.com/questio…