in

La nueva herramienta de software proporciona una manera más fácil de depurar cualquier lenguaje de programación específico de dominio

Una forma más fácil de eliminar los errores de los lenguajes de programación

Una forma más fácil de eliminar los errores de los lenguajes de programación

D2X es una infraestructura de depuración de lenguajes específicos de dominio que funciona con la mayoría de los depuradores estándar sin modificaciones y es fácilmente extensible para capturar toda la información específica de dominio que le interesa al usuario final. Crédito: Alex Shipps/MIT CSAIL vía Midjourney

En algún momento de 2019, MIT Ph.D. El estudiante Ajay Brahmakshatriya formuló un objetivo simple, aunque bastante desafiante. Quería hacer posible que las personas que tenían experiencia en un dominio particular, como el modelado climático, la bioinformática o la arquitectura, escribieran sus propios lenguajes de programación, los llamados lenguajes específicos de dominio (o DSL), incluso si tenían poca experiencia. o ninguna experiencia en la creación de lenguajes de programación.

Miembro del grupo de investigación encabezado por el profesor Saman Amarasinghe del MIT en el Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL) del Instituto, Brahmakshatriya quería que estos lenguajes vinieran con todas las funciones auxiliares que la gente necesitaría para utilizarlos cómodamente, incluidas herramientas para la depuración. Este proceso para deshacerse de los errores en una pieza de software es esencial, acordaron él y Amarasinghe, ya que llamaron a la falta de compatibilidad con la depuración «el talón de Aquiles de las DSL».

Han sido unos años productivos para ambos. En 2021, Brahmakshatriya y Amarasinghe presentaron BuildIt, un paquete de software que simplifica enormemente la tarea de crear DSL. Y el mes pasado, en una conferencia internacional en Montreal copatrocinada por la Association for Computing Machinery, el dúo presentó D2X, una herramienta que facilita agregar depuración a cualquier DSL y ha demostrado que funciona particularmente bien con BuildIt. Su trabajo sobre el trabajo incluso ganó uno de los dos Premios al Trabajo Distinguido otorgados en la conferencia.

La razón principal para producir un idioma en un dominio especializado, explica Brahmakshatriya, «es promover la facilidad de uso». Un DSL de procesamiento de imágenes, por ejemplo, podría tener una función que diga «difuminar toda la imagen». Emitir ese mismo comando en un lenguaje de propósito general requeriría muchas más líneas de código, señala Brahmakshatriya. «Esa es parte de la razón para usar un DSL. La otra es el rendimiento». Debido a que las operaciones son específicas de ese dominio, pueden optimizarse más fácilmente: llevarse a cabo en el orden correcto y, por lo tanto, completarse de manera más eficiente y rápida.

Brahmakshatriya describe BuildIt como «un DSL para crear DSL». Facilita un procedimiento de varios pasos para tomar un lenguaje de programación multipropósito existente y reducirlo hasta que se especialice de la manera correcta. «Suponga que tiene un problema y desea escribir un programa para resolverlo», dice. «Podría escribir un programa para resolverlo en su totalidad, o podría escribir un programa más pequeño para resolver solo la subclase del problema que le interesa. Cuanto más especializado haga el programa, más rápido se ejecutará». BuildIt está diseñado para construir DSL con esos principios rectores en mente.

Halide, un lenguaje de procesamiento de imágenes inventado en 2012, años antes de que existiera BuildIt, es uno de los primeros DSL que surgió del grupo de Amarasinghe. Su desarrollo fue dirigido por el entonces estudiante graduado Jonathan-Ragan Kelley y Andrew Adams, un postdoctorado de CSAIL en ese momento. «Halure es muy popular ahora y se usa en muchas aplicaciones de Adobe, incluido Photoshop, pero todavía no tiene un depurador», dice Amarasinghe. La razón de esto, agrega, «es que los depuradores son muy complicados. Es muy difícil escribirlos, razón por la cual la mayoría de los DSL pequeños no tienen soporte de depuración».

Ese no es un estado de cosas deseable, según Brahmakshatriya, quien insiste en que cada DSL debería tener su propio depurador. «No puede usar depuradores existentes directamente para su nuevo idioma porque no entienden el dominio». Es imposible, además, escribir un programa que sea completamente correcto la primera vez, dice. «Siempre comienzas con algo que tiene errores, aunque a menudo no aparecen hasta mucho más tarde en el ciclo de desarrollo. Si surge un error en ese punto, cuando tienes 5000 líneas de código, puede ser muy difícil». para encontrarlo.» En consecuencia, una vez que un programa tiene el «código completo» (considerado listo para ser probado por sus desarrolladores), los ingenieros de software pueden tener que dedicar más de la mitad de su tiempo a la ardua tarea de depuración.

Pero la ayuda está en camino en forma de D2X (pronunciado «desintoxicación» porque se relaciona con la noción de librar su programa de venenos o defectos). D2X no es un programa per se, sino que se clasifica como una biblioteca, una pieza de código de computadora que otros programas pueden reutilizar. Está diseñado para funcionar con depuradores existentes (como GDB o LLDB), sirviendo como puente entre esas herramientas y un DSL determinado. Un depurador necesita información sobre el programa, o lenguaje de programación, que se va a limpiar. «Cada depurador requiere esa información en su propio formato particular, que puede ser un documento de 400 páginas», dice Amarasinghe. «Si usa D2X, no tiene que preocuparse por eso. Se encarga de usted».

Con D2X sirviendo como interfaz, dice Brahmakshatriya, «su programa se puede depurar usando depuradores populares sin ninguna modificación a los depuradores mismos». En su opinión, esa es la principal ventaja de combinar D2X con BuildIt: «Si escribe un DSL usando BuildIt, no tiene que hacer ningún trabajo adicional. Obtiene un depurador gratis, sin escribir una sola línea adicional». de código».

«D2X aborda una contradicción inherente en el software de alto rendimiento», comenta Adrian Sampson, profesor asociado de informática en la Universidad de Cornell. «Por un lado, los lenguajes específicos de dominio son nuestra única esperanza de mejoras serias en la eficiencia informática en la era moderna. Sin embargo, hacer un nuevo depurador para un nuevo lenguaje desde cero es difícil, y la ausencia de un depurador es una razón racional que un programador podría rechazar un lenguaje ‘mejor’ a favor de uno ‘peor’. Lo mejor de D2X es que reduce la barrera para construir un depurador útil para un DSL».

Pero ese no es el final de la historia, en lo que respecta a Brahmakshatriya. Otra característica que le gustaría fusionar con BuildIt, además de la depuración, es la edición, lo que facilita la escritura de un programa. Los editores, por ejemplo, pueden resaltar ciertas palabras clave en un documento, lo que puede mejorar su legibilidad. Pueden realizar otras funciones, como autocompletar, que completa automáticamente el texto después de ingresar una pequeña parte.

Brahmakshatriya quisiera incluir perfiladores junto con depuradores y editores como parte de la plataforma BuildIt. «Los perfiladores son como depuradores, pero en lugar de ayudarlo a encontrar errores, le permiten evaluar los problemas de rendimiento en su programa», dice. «Si el programa se está ejecutando más lento de lo esperado, puede usar un generador de perfiles para comprender qué parte del programa está atascando las cosas». Otras características útiles podrían agregarse en el futuro, dice.

Todos estos esfuerzos, sostiene Amarasinghe, harán que la perspectiva de crear lenguajes especializados sea mucho más atractiva. «Como yo lo veo, hay una gran cantidad de personas que admiten lenguajes tradicionales: miles de programadores que crean herramientas para C, C++ o Java», dice. «Por otro lado, si estoy construyendo un DSL simple, no tengo miles de programadores para brindar todo ese soporte». Pero ahora, con BuildIt y D2X, agrega, «los pequeños pueden obtener todas las cosas que obtienen los demás, incluidos depuradores y, eventualmente, editores y generadores de perfiles, los mismos beneficios que vienen con los lenguajes tradicionales. Y puede obtener eso sin tener equipos de ingenieros que escriben todo tipo de código complicado».

Más información:
Ajay Brahmakshatriya y Saman Amarasinghe, D2X: un depurador contextual extensible para DSL modernos. groups.csail.mit.edu/commit/pa … 3/ajay-cgo23-d2x.pdf

Proporcionado por el Instituto de Tecnología de Massachusetts


Esta historia se vuelve a publicar por cortesía de MIT News (web.mit.edu/newsoffice/), un sitio popular que cubre noticias sobre investigación, innovación y enseñanza del MIT.

Citación: La nueva herramienta de software proporciona una manera más fácil de depurar cualquier lenguaje de programación específico de dominio (2023, 10 de abril) consultado el 10 de abril de 2023 en https://techxplore.com/news/2023-04-software-tool-easier-debug-domain -específico.html

Este documento está sujeto a derechos de autor. Aparte de cualquier trato justo con fines de estudio o investigación privados, ninguna parte puede reproducirse sin el permiso por escrito. El contenido se proporciona únicamente con fines informativos.



Fuente

Elder Scrolls Online Dev dice que está trabajando en una «resolución» después del reclamo de arte robado

Cómo sincronizar bombillas Philips Hue con tu televisor Ambilight