Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales
- Autores
- Pimás, Javier Esteban
- Año de publicación
- 2024
- Idioma
- español castellano
- Tipo de recurso
- tesis doctoral
- Estado
- versión publicada
- Colaborador/a o director/a de tesis
- Garbervetsky, Diego David
- Descripción
- Los lenguajes orientados a objetos suelen utilizar máquinas virtuales (VM) que proporcionan mecanismos como la compilación just-in-time ( JIT) y la recolección de basura (GC). Los componentes que brindan estos mecanismos de VM suelen implementarse en una capa separada, aislando así la aplicación. Si bien este enfoque aporta los beneficios de ingeniería de software de una clara separación y desacoplamiento, introduce barreras tanto para entender el comportamiento de la VM como pa- ra evolucionar su implementación, ya que debilita las conexiones causales entre las aplicaciones y la VM. Por ejemplo, la recolección de basura y el compilador JIT suelen quedar fijos en el momento de construcción de la VM, limitando la adaptación arbitraria en tiempo de ejecución. Además, debido a esta separación, la implementación de la VM no suele poder inspeccionarse y depurarse de la misma manera que el código de aplicación, estableciendo una distinción entre el código de aplicación fácil de trabajar y el código de VM difícil de trabajar. Estas características representan una barrera que dificulta que lxs desarrolladores de aplicaciones comprendan el motor sobre el cual se ejecuta su propio código, y fomenta una brecha de conocimiento que les impide cambiar la VM. Proponemos bibliotecas de entornos de ejecución metacirculares vivos o LMRs (por Live Metacircular Runtimes) para superar este problema. Las LMRs son motores de ejecución de lenguajes que integran perfectamente la VM en la aplicación en entornos de programación vivos. A diferencia de los enfoques metacirculares clásicos, proponemos eliminar por completo la separación entre aplicación y VM. Al aplicar sistemáticamente el diseño orientado a objetos a los componentes de VM, podemos construir motores de ejecución vivos lo suficientemente pequeños y flexibles, donde lxs ingenierxs de VM pueden beneficiarse de herramientas de programación vivas con feedback loops cortos, y lxs desarrolladores de aplicaciones con menos experiencia en VM pueden beneficiarse de las conexiones causales más fuertes entre sus programas y la implementación de la VM. Para evaluar nuestra propuesta, implementamos Bee/LMR, una VM viva para un entorno derivado de Smalltalk en 22,057 líneas de código. Analizamos casos de estudio sobre la optimización del recolector de basura, evitando recompilaciones por parte del compilador JIT y agregando soporte para optimizar el código con instrucciones vectoriales para mostrar los compromisos de extender la programa- ción exploratoria al desarrollo de VMs en el contexto de una aplicación industrial utilizada en producción. Basándonos en los casos de estudio, ilustramos cómo nuestro enfoque facilita el trabajo diario de desarrollo de un pequeño equipo de programadores de aplicaciones. Nuestro enfoque permite a lxs desarrolladores de VM acceder a herramientas de programación vivas, tradicionalmente reservadas para desarrolladores de aplicaciones, mientras que lxs desarrolladores de aplicaciones pueden interactuar con la VM y modificarla utilizando las herramientas de alto nivel que utilizan a diario. Tanto lxs desarrolladores de aplicaciones como lxs de VM pueden inspeccionar, depurar, comprender y modificar sin problemas las diferentes partes de la VM con feedback loops más cortos y herramientas de mayor nivel de abstracción.
Object-oriented languages often use virtual machines (VMs) that provide mechanisms such as just-in-time ( JIT) compilation and garbage collec- tion (GC). These VM components are typically implemented in a separate layer, isolating them from the application. While this approach brings the software en- gineering benefits of clear separation and decoupling, it introduces barriers for both understanding VM behavior and evolving the VM implementation because it weakens the causal connections between applications and VM. For example, the GC and JIT compiler are typically fixed at VM build time, limiting arbitrary adaptation at run time. Furthermore, because of this separation, the implemen- tation of the VM cannot typically be inspected and debugged in the same way as application code, enshrining a distinction in easy-to-work-with application and hard-to-work-with VM code. These characteristics pose a barrier for application developers to understand the engine on top of which their own code runs, and fosters a knowledge gap that prevents application developers to change the VM. We propose Live Metacircular Runtimes (LMRs) to overcome this problem. LMRs are language runtime systems that seamlessly integrate the VM into the application in live programming environments. Unlike classic metacircular ap- proaches, we propose to completely remove the separation between application and VM. By systematically applying object-oriented design to VM components, we can build live runtime systems that are small and flexible enough, where VM engineers can benefit of live programming features such as short feedback loops, and application developers with fewer VM expertise can benefit of the stronger causal connections between their programs and the VM implementation. To evaluate our proposal, we implemented Bee/LMR, a live VM for a Smalltalk- derivative environment in 22,057 lines of code. We analyze case studies on tuning the garbage collector, avoiding recompilations by the just-in-time compiler, and adding support to optimize code with vector instructions to demonstrate the trade- offs of extending exploratory programming to VM development in the context of an industrial application used in production. Based on the case studies, we illustrate how our approach facilitates the daily development work of a small team of application developers. Our approach enables VM developers to gain access to live programming tools traditionally reserved for application developers, while application developers can interact with the VM and modify it using the high-level tools they use every day. Both application and VM developers can seamlessly inspect, debug, understand, and modify the different parts of the VM with shorter feedback loops and higher-level tools.
Fil: Pimás, Javier Esteban. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina. - Materia
-
MAQUINAS VIRTUALES
COMPILADORES
RECOLECCION DE BASURA
META-PROGRAMACION
PROGRAMACION EN VIVO
PROGRAMACION ORIENTADA A OBJETOS
VIRTUAL MACHINES
COMPILERS
GARBAGE COLLECTION
METAPROGRAMMING
LIVE PROGRAMMING
OBJECT-ORIENTED PROGRAMMING - Nivel de accesibilidad
- acceso abierto
- Condiciones de uso
- https://creativecommons.org/licenses/by-nc-sa/2.5/ar
- Repositorio
- Institución
- Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
- OAI Identificador
- tesis:tesis_n7627_Pimas
Ver los metadatos del registro completo
id |
BDUBAFCEN_8b3ed49b1073f694e5f882824d5a004c |
---|---|
oai_identifier_str |
tesis:tesis_n7627_Pimas |
network_acronym_str |
BDUBAFCEN |
repository_id_str |
1896 |
network_name_str |
Biblioteca Digital (UBA-FCEN) |
spelling |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtualesLive objects all the way down : removing barriers between applications and virtual machinesPimás, Javier EstebanMAQUINAS VIRTUALESCOMPILADORESRECOLECCION DE BASURAMETA-PROGRAMACIONPROGRAMACION EN VIVOPROGRAMACION ORIENTADA A OBJETOSVIRTUAL MACHINESCOMPILERSGARBAGE COLLECTIONMETAPROGRAMMINGLIVE PROGRAMMINGOBJECT-ORIENTED PROGRAMMINGLos lenguajes orientados a objetos suelen utilizar máquinas virtuales (VM) que proporcionan mecanismos como la compilación just-in-time ( JIT) y la recolección de basura (GC). Los componentes que brindan estos mecanismos de VM suelen implementarse en una capa separada, aislando así la aplicación. Si bien este enfoque aporta los beneficios de ingeniería de software de una clara separación y desacoplamiento, introduce barreras tanto para entender el comportamiento de la VM como pa- ra evolucionar su implementación, ya que debilita las conexiones causales entre las aplicaciones y la VM. Por ejemplo, la recolección de basura y el compilador JIT suelen quedar fijos en el momento de construcción de la VM, limitando la adaptación arbitraria en tiempo de ejecución. Además, debido a esta separación, la implementación de la VM no suele poder inspeccionarse y depurarse de la misma manera que el código de aplicación, estableciendo una distinción entre el código de aplicación fácil de trabajar y el código de VM difícil de trabajar. Estas características representan una barrera que dificulta que lxs desarrolladores de aplicaciones comprendan el motor sobre el cual se ejecuta su propio código, y fomenta una brecha de conocimiento que les impide cambiar la VM. Proponemos bibliotecas de entornos de ejecución metacirculares vivos o LMRs (por Live Metacircular Runtimes) para superar este problema. Las LMRs son motores de ejecución de lenguajes que integran perfectamente la VM en la aplicación en entornos de programación vivos. A diferencia de los enfoques metacirculares clásicos, proponemos eliminar por completo la separación entre aplicación y VM. Al aplicar sistemáticamente el diseño orientado a objetos a los componentes de VM, podemos construir motores de ejecución vivos lo suficientemente pequeños y flexibles, donde lxs ingenierxs de VM pueden beneficiarse de herramientas de programación vivas con feedback loops cortos, y lxs desarrolladores de aplicaciones con menos experiencia en VM pueden beneficiarse de las conexiones causales más fuertes entre sus programas y la implementación de la VM. Para evaluar nuestra propuesta, implementamos Bee/LMR, una VM viva para un entorno derivado de Smalltalk en 22,057 líneas de código. Analizamos casos de estudio sobre la optimización del recolector de basura, evitando recompilaciones por parte del compilador JIT y agregando soporte para optimizar el código con instrucciones vectoriales para mostrar los compromisos de extender la programa- ción exploratoria al desarrollo de VMs en el contexto de una aplicación industrial utilizada en producción. Basándonos en los casos de estudio, ilustramos cómo nuestro enfoque facilita el trabajo diario de desarrollo de un pequeño equipo de programadores de aplicaciones. Nuestro enfoque permite a lxs desarrolladores de VM acceder a herramientas de programación vivas, tradicionalmente reservadas para desarrolladores de aplicaciones, mientras que lxs desarrolladores de aplicaciones pueden interactuar con la VM y modificarla utilizando las herramientas de alto nivel que utilizan a diario. Tanto lxs desarrolladores de aplicaciones como lxs de VM pueden inspeccionar, depurar, comprender y modificar sin problemas las diferentes partes de la VM con feedback loops más cortos y herramientas de mayor nivel de abstracción.Object-oriented languages often use virtual machines (VMs) that provide mechanisms such as just-in-time ( JIT) compilation and garbage collec- tion (GC). These VM components are typically implemented in a separate layer, isolating them from the application. While this approach brings the software en- gineering benefits of clear separation and decoupling, it introduces barriers for both understanding VM behavior and evolving the VM implementation because it weakens the causal connections between applications and VM. For example, the GC and JIT compiler are typically fixed at VM build time, limiting arbitrary adaptation at run time. Furthermore, because of this separation, the implemen- tation of the VM cannot typically be inspected and debugged in the same way as application code, enshrining a distinction in easy-to-work-with application and hard-to-work-with VM code. These characteristics pose a barrier for application developers to understand the engine on top of which their own code runs, and fosters a knowledge gap that prevents application developers to change the VM. We propose Live Metacircular Runtimes (LMRs) to overcome this problem. LMRs are language runtime systems that seamlessly integrate the VM into the application in live programming environments. Unlike classic metacircular ap- proaches, we propose to completely remove the separation between application and VM. By systematically applying object-oriented design to VM components, we can build live runtime systems that are small and flexible enough, where VM engineers can benefit of live programming features such as short feedback loops, and application developers with fewer VM expertise can benefit of the stronger causal connections between their programs and the VM implementation. To evaluate our proposal, we implemented Bee/LMR, a live VM for a Smalltalk- derivative environment in 22,057 lines of code. We analyze case studies on tuning the garbage collector, avoiding recompilations by the just-in-time compiler, and adding support to optimize code with vector instructions to demonstrate the trade- offs of extending exploratory programming to VM development in the context of an industrial application used in production. Based on the case studies, we illustrate how our approach facilitates the daily development work of a small team of application developers. Our approach enables VM developers to gain access to live programming tools traditionally reserved for application developers, while application developers can interact with the VM and modify it using the high-level tools they use every day. Both application and VM developers can seamlessly inspect, debug, understand, and modify the different parts of the VM with shorter feedback loops and higher-level tools.Fil: Pimás, Javier Esteban. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesGarbervetsky, Diego David2024-09-11info:eu-repo/semantics/doctoralThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_db06info:ar-repo/semantics/tesisDoctoralapplication/pdfhttps://hdl.handle.net/20.500.12110/tesis_n7627_Pimasspainfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2025-09-29T13:41:57Ztesis:tesis_n7627_PimasInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962025-09-29 13:41:58.334Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse |
dc.title.none.fl_str_mv |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales Live objects all the way down : removing barriers between applications and virtual machines |
title |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
spellingShingle |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales Pimás, Javier Esteban MAQUINAS VIRTUALES COMPILADORES RECOLECCION DE BASURA META-PROGRAMACION PROGRAMACION EN VIVO PROGRAMACION ORIENTADA A OBJETOS VIRTUAL MACHINES COMPILERS GARBAGE COLLECTION METAPROGRAMMING LIVE PROGRAMMING OBJECT-ORIENTED PROGRAMMING |
title_short |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
title_full |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
title_fullStr |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
title_full_unstemmed |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
title_sort |
Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
dc.creator.none.fl_str_mv |
Pimás, Javier Esteban |
author |
Pimás, Javier Esteban |
author_facet |
Pimás, Javier Esteban |
author_role |
author |
dc.contributor.none.fl_str_mv |
Garbervetsky, Diego David |
dc.subject.none.fl_str_mv |
MAQUINAS VIRTUALES COMPILADORES RECOLECCION DE BASURA META-PROGRAMACION PROGRAMACION EN VIVO PROGRAMACION ORIENTADA A OBJETOS VIRTUAL MACHINES COMPILERS GARBAGE COLLECTION METAPROGRAMMING LIVE PROGRAMMING OBJECT-ORIENTED PROGRAMMING |
topic |
MAQUINAS VIRTUALES COMPILADORES RECOLECCION DE BASURA META-PROGRAMACION PROGRAMACION EN VIVO PROGRAMACION ORIENTADA A OBJETOS VIRTUAL MACHINES COMPILERS GARBAGE COLLECTION METAPROGRAMMING LIVE PROGRAMMING OBJECT-ORIENTED PROGRAMMING |
dc.description.none.fl_txt_mv |
Los lenguajes orientados a objetos suelen utilizar máquinas virtuales (VM) que proporcionan mecanismos como la compilación just-in-time ( JIT) y la recolección de basura (GC). Los componentes que brindan estos mecanismos de VM suelen implementarse en una capa separada, aislando así la aplicación. Si bien este enfoque aporta los beneficios de ingeniería de software de una clara separación y desacoplamiento, introduce barreras tanto para entender el comportamiento de la VM como pa- ra evolucionar su implementación, ya que debilita las conexiones causales entre las aplicaciones y la VM. Por ejemplo, la recolección de basura y el compilador JIT suelen quedar fijos en el momento de construcción de la VM, limitando la adaptación arbitraria en tiempo de ejecución. Además, debido a esta separación, la implementación de la VM no suele poder inspeccionarse y depurarse de la misma manera que el código de aplicación, estableciendo una distinción entre el código de aplicación fácil de trabajar y el código de VM difícil de trabajar. Estas características representan una barrera que dificulta que lxs desarrolladores de aplicaciones comprendan el motor sobre el cual se ejecuta su propio código, y fomenta una brecha de conocimiento que les impide cambiar la VM. Proponemos bibliotecas de entornos de ejecución metacirculares vivos o LMRs (por Live Metacircular Runtimes) para superar este problema. Las LMRs son motores de ejecución de lenguajes que integran perfectamente la VM en la aplicación en entornos de programación vivos. A diferencia de los enfoques metacirculares clásicos, proponemos eliminar por completo la separación entre aplicación y VM. Al aplicar sistemáticamente el diseño orientado a objetos a los componentes de VM, podemos construir motores de ejecución vivos lo suficientemente pequeños y flexibles, donde lxs ingenierxs de VM pueden beneficiarse de herramientas de programación vivas con feedback loops cortos, y lxs desarrolladores de aplicaciones con menos experiencia en VM pueden beneficiarse de las conexiones causales más fuertes entre sus programas y la implementación de la VM. Para evaluar nuestra propuesta, implementamos Bee/LMR, una VM viva para un entorno derivado de Smalltalk en 22,057 líneas de código. Analizamos casos de estudio sobre la optimización del recolector de basura, evitando recompilaciones por parte del compilador JIT y agregando soporte para optimizar el código con instrucciones vectoriales para mostrar los compromisos de extender la programa- ción exploratoria al desarrollo de VMs en el contexto de una aplicación industrial utilizada en producción. Basándonos en los casos de estudio, ilustramos cómo nuestro enfoque facilita el trabajo diario de desarrollo de un pequeño equipo de programadores de aplicaciones. Nuestro enfoque permite a lxs desarrolladores de VM acceder a herramientas de programación vivas, tradicionalmente reservadas para desarrolladores de aplicaciones, mientras que lxs desarrolladores de aplicaciones pueden interactuar con la VM y modificarla utilizando las herramientas de alto nivel que utilizan a diario. Tanto lxs desarrolladores de aplicaciones como lxs de VM pueden inspeccionar, depurar, comprender y modificar sin problemas las diferentes partes de la VM con feedback loops más cortos y herramientas de mayor nivel de abstracción. Object-oriented languages often use virtual machines (VMs) that provide mechanisms such as just-in-time ( JIT) compilation and garbage collec- tion (GC). These VM components are typically implemented in a separate layer, isolating them from the application. While this approach brings the software en- gineering benefits of clear separation and decoupling, it introduces barriers for both understanding VM behavior and evolving the VM implementation because it weakens the causal connections between applications and VM. For example, the GC and JIT compiler are typically fixed at VM build time, limiting arbitrary adaptation at run time. Furthermore, because of this separation, the implemen- tation of the VM cannot typically be inspected and debugged in the same way as application code, enshrining a distinction in easy-to-work-with application and hard-to-work-with VM code. These characteristics pose a barrier for application developers to understand the engine on top of which their own code runs, and fosters a knowledge gap that prevents application developers to change the VM. We propose Live Metacircular Runtimes (LMRs) to overcome this problem. LMRs are language runtime systems that seamlessly integrate the VM into the application in live programming environments. Unlike classic metacircular ap- proaches, we propose to completely remove the separation between application and VM. By systematically applying object-oriented design to VM components, we can build live runtime systems that are small and flexible enough, where VM engineers can benefit of live programming features such as short feedback loops, and application developers with fewer VM expertise can benefit of the stronger causal connections between their programs and the VM implementation. To evaluate our proposal, we implemented Bee/LMR, a live VM for a Smalltalk- derivative environment in 22,057 lines of code. We analyze case studies on tuning the garbage collector, avoiding recompilations by the just-in-time compiler, and adding support to optimize code with vector instructions to demonstrate the trade- offs of extending exploratory programming to VM development in the context of an industrial application used in production. Based on the case studies, we illustrate how our approach facilitates the daily development work of a small team of application developers. Our approach enables VM developers to gain access to live programming tools traditionally reserved for application developers, while application developers can interact with the VM and modify it using the high-level tools they use every day. Both application and VM developers can seamlessly inspect, debug, understand, and modify the different parts of the VM with shorter feedback loops and higher-level tools. Fil: Pimás, Javier Esteban. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina. |
description |
Los lenguajes orientados a objetos suelen utilizar máquinas virtuales (VM) que proporcionan mecanismos como la compilación just-in-time ( JIT) y la recolección de basura (GC). Los componentes que brindan estos mecanismos de VM suelen implementarse en una capa separada, aislando así la aplicación. Si bien este enfoque aporta los beneficios de ingeniería de software de una clara separación y desacoplamiento, introduce barreras tanto para entender el comportamiento de la VM como pa- ra evolucionar su implementación, ya que debilita las conexiones causales entre las aplicaciones y la VM. Por ejemplo, la recolección de basura y el compilador JIT suelen quedar fijos en el momento de construcción de la VM, limitando la adaptación arbitraria en tiempo de ejecución. Además, debido a esta separación, la implementación de la VM no suele poder inspeccionarse y depurarse de la misma manera que el código de aplicación, estableciendo una distinción entre el código de aplicación fácil de trabajar y el código de VM difícil de trabajar. Estas características representan una barrera que dificulta que lxs desarrolladores de aplicaciones comprendan el motor sobre el cual se ejecuta su propio código, y fomenta una brecha de conocimiento que les impide cambiar la VM. Proponemos bibliotecas de entornos de ejecución metacirculares vivos o LMRs (por Live Metacircular Runtimes) para superar este problema. Las LMRs son motores de ejecución de lenguajes que integran perfectamente la VM en la aplicación en entornos de programación vivos. A diferencia de los enfoques metacirculares clásicos, proponemos eliminar por completo la separación entre aplicación y VM. Al aplicar sistemáticamente el diseño orientado a objetos a los componentes de VM, podemos construir motores de ejecución vivos lo suficientemente pequeños y flexibles, donde lxs ingenierxs de VM pueden beneficiarse de herramientas de programación vivas con feedback loops cortos, y lxs desarrolladores de aplicaciones con menos experiencia en VM pueden beneficiarse de las conexiones causales más fuertes entre sus programas y la implementación de la VM. Para evaluar nuestra propuesta, implementamos Bee/LMR, una VM viva para un entorno derivado de Smalltalk en 22,057 líneas de código. Analizamos casos de estudio sobre la optimización del recolector de basura, evitando recompilaciones por parte del compilador JIT y agregando soporte para optimizar el código con instrucciones vectoriales para mostrar los compromisos de extender la programa- ción exploratoria al desarrollo de VMs en el contexto de una aplicación industrial utilizada en producción. Basándonos en los casos de estudio, ilustramos cómo nuestro enfoque facilita el trabajo diario de desarrollo de un pequeño equipo de programadores de aplicaciones. Nuestro enfoque permite a lxs desarrolladores de VM acceder a herramientas de programación vivas, tradicionalmente reservadas para desarrolladores de aplicaciones, mientras que lxs desarrolladores de aplicaciones pueden interactuar con la VM y modificarla utilizando las herramientas de alto nivel que utilizan a diario. Tanto lxs desarrolladores de aplicaciones como lxs de VM pueden inspeccionar, depurar, comprender y modificar sin problemas las diferentes partes de la VM con feedback loops más cortos y herramientas de mayor nivel de abstracción. |
publishDate |
2024 |
dc.date.none.fl_str_mv |
2024-09-11 |
dc.type.none.fl_str_mv |
info:eu-repo/semantics/doctoralThesis info:eu-repo/semantics/publishedVersion http://purl.org/coar/resource_type/c_db06 info:ar-repo/semantics/tesisDoctoral |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.none.fl_str_mv |
https://hdl.handle.net/20.500.12110/tesis_n7627_Pimas |
url |
https://hdl.handle.net/20.500.12110/tesis_n7627_Pimas |
dc.language.none.fl_str_mv |
spa |
language |
spa |
dc.rights.none.fl_str_mv |
info:eu-repo/semantics/openAccess https://creativecommons.org/licenses/by-nc-sa/2.5/ar |
eu_rights_str_mv |
openAccess |
rights_invalid_str_mv |
https://creativecommons.org/licenses/by-nc-sa/2.5/ar |
dc.format.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
publisher.none.fl_str_mv |
Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital (UBA-FCEN) instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales instacron:UBA-FCEN |
reponame_str |
Biblioteca Digital (UBA-FCEN) |
collection |
Biblioteca Digital (UBA-FCEN) |
instname_str |
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
instacron_str |
UBA-FCEN |
institution |
UBA-FCEN |
repository.name.fl_str_mv |
Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
repository.mail.fl_str_mv |
ana@bl.fcen.uba.ar |
_version_ |
1844618715850604544 |
score |
13.070432 |