Nadie dijo que la programación de computadoras fuera fácil. Pero tal vez en el futuro, podría serlo.
Para simplificar el desarrollo del programa, un proyecto apoyado por la National Science Foundation NSF llamado Expeditions in Computer Augmented Program Engineering ExCAPE, está desarrollando tecnología que proporciona a los operadores humanos asistencia automatizada.
"Las computadoras han revolucionado nuestra vida diaria y, sin embargo, la forma en que programamos las computadoras ha cambiado poco en las últimas décadas", dijo Rajeev Alur, profesor del departamento de informática y ciencias de la información de la Universidad de Pensilvania.
Alur encabeza un equipo de investigadores, que representa a nueve programas líderes en ciencias de la computación en los EE. UU., Que colabora en el proyecto ExCAPE. NSF apoya a ExCAPE con un premio Expeditions in Computing de $ 10 millones por cinco años, que financia equipos de investigación interdisciplinarios que trabajanpara transformar la informática y la tecnología.
Alur dijo que el equipo está asumiendo un problema de larga data: "El desarrollo de software sigue siendo una actividad tediosa y propensa a errores".
Sin embargo, utilizando un modelo de programación llamado síntesis de programa automatizada, las computadoras pueden generar fragmentos de código basados en la intención del usuario, expresados usando varias formas no basadas en código, como ejemplos, demostraciones o comandos de lenguaje natural.
"ExCAPE tiene como objetivo cambiar la programación de una tarea puramente manual a una en la que un programador y una herramienta de síntesis de programa automatizada pueden colaborar para generar software que cumpla con sus especificaciones", dijo Alur.
Al eliminar la necesidad de que los aspirantes a programadores aprendan lenguajes de programación esotéricos, el método tiene el potencial de expandir significativamente el número de personas involucradas en la programación en una variedad de disciplinas, desde la educación personalizada hasta la robótica.
herramientas de programación
La tecnología emergente conocida como redes definidas por software SDN permite a los operadores de red adaptar una red de computadoras al tráfico que se ejecuta en ella, mejorando así la eficiencia. La mayoría de los operadores de red, sin embargo, no son programadores tradicionales y, como resultado, no pueden tomaraprovechar al máximo todas las ofertas tecnológicas.
Para abordar esta deficiencia, el equipo de ExCAPE desarrolló una herramienta llamada NetEgg que le permite a un operador de red especificar la funcionalidad deseada de un conmutador usando ejemplos. NetEgg luego genera automáticamente el código necesario para implementar ese comportamiento mientras asegura el máximo rendimiento para el tráfico de red.
Ahora patentado, NetEgg ya ha sido probado en un salón de clases y forma la base de un proyecto NSF I-Corps, que explorará la transición del producto a la implementación comercial.
Educación asistida por computadora y más
Al observar el área en crecimiento del aprendizaje en línea, el equipo de ExCAPE reconoció además el papel que las herramientas de síntesis de programas podrían desempeñar en la generación de retroalimentación automática para los estudiantes, analizando sus soluciones, calificando sus tareas y brindando explicaciones significativas de sus errores.
Es por eso que el equipo creó Automata Tutor, que ha sido utilizado por más de 5,000 estudiantes de más de 10 universidades de todo el mundo. Alur y sus colegas presentaron los resultados de la implementación inicial de Automata Tutor en ACM Transactions on Computer-Human Interactiony en la Conferencia conjunta internacional sobre inteligencia artificial.
El grupo ha creado otras herramientas, incluido AutoProf, que proporciona comentarios sobre las asignaciones introductorias de programación en lenguajes informáticos, como Python. Otra herramienta, CPSgrader, califica automáticamente los cursos de laboratorio en sistemas ciberfísicos y proporciona comentarios.
En términos más generales, el equipo de ExCAPE pudo desarrollar un método que formalizó y estandarizó el problema computacional central en las herramientas de síntesis emergentes. Llamado síntesis guiada por sintaxis, el nuevo método ha permitido al equipo construir una serie de solucionadores de prototipos en el pasado.dos años.
"Este esfuerzo ha sido fundamental en el avance del estado de la técnica en enfoques computacionales y ha facilitado aplicaciones novedosas de síntesis de programas, por ejemplo, en la optimización automática de programas para computadoras cuánticas", dijo Alur.
adopción de la industria
La investigación del equipo de ExCAPE también ha afectado al mundo del software comercial. Su noción de síntesis guiada por sintaxis inspiró a Microsoft a crear sintetizadores de programas automatizados para su suite de software.
"En Microsoft, hemos invertido significativamente en el campo de la síntesis de programas, especialmente programación por ejemplos, y con aplicaciones para la programación del usuario final", dijo Sumit Gulwani, de Microsoft Research, EE. UU.
Microsoft comenzó desarrollando sintetizadores específicos de dominio como FlashFill y FlashExtract, cada uno de los cuales usa ejemplos para generar código personalizado que mejora la eficiencia. FlashFill, que se lanzó como una característica de Excel 2013 de Microsoft, permite ingresar datos en una columna deuna tabla de la hoja de trabajo que se ingresará en una nueva columna de la tabla usando solo unas pocas teclas. FlashExtract, que se incluyó en PowerShell y Operations Management Suite de Microsoft, extrae datos estructurados de archivos de registro semiestructurados usando ejemplos.
El gigante de la tecnología también ha desarrollado un sintetizador genérico de programación por ejemplo llamado FlashMeta.
"Todo nuestro desarrollo continuo de sintetizadores de ejemplo en Microsoft para varios dominios ahora se está llevando a cabo sobre el marco FlashMeta", dijo Gulwani. "De hecho, hemos creado un equipo completo de investigación e ingeniería para el desarrollo de estemarco, llamado PROSA. Esto ha producido una eficacia de un orden de magnitud en el proceso general de desarrollo ".
En los próximos años, el proceso de utilizar lenguajes de codificación para la programación puede verse como un paso evolutivo en la informática, al igual que otros métodos reemplazaron las tarjetas perforadas y los lenguajes ensambladores utilizados para programar las primeras computadoras.
"Este proyecto se basa en décadas de avances fundamentales en métodos formales y lenguajes de programación", dice Nina Amla, directora de programas de la División de Fundamentos de la Computación y la Comunicación de NSF. "Señala un cambio de paradigma en la forma en que enseñamos los principios básicos de programacióny desarrollar sistemas de software fiables ".
Fuente de la historia :
Materiales proporcionado por Fundación Nacional de Ciencias . Nota: el contenido se puede editar por estilo y longitud.
Referencia de la revista :
cite esta página :