Live Typing - Anotación automática de tipos para lenguajes dinámicos

Accepted

Los lenguajes dinámicamente tipados adolecen de información de tipos lo cual dificulta la implementación y precisión de herramientas de refactoring, búsqueda y autocompletion entre otras. Varias propuestas han aparecido para agregar información de tipos a estos lenguajes, desde gradual typing hasta explicit type annotation, que se centran en ofrecer un chequeo de tipos 'a la static typing' en vez de potenciar la característica dinámica de este tipo de lenguajes. Live Typing es una solución distinta y novedosa que provee información de tipos automáticamente, sin intervención del programador y sin modificar la sintaxis del lenguaje. El grupo de investigación de 10Pines lo ha implementado en varios lenguajes dinámicos y presentaremos en esta charla de qué trata, cómo está implementado y qué beneficios trae a lenguajes dinámicos como Python.


Type: Charla extendida, 45 minutos (explicar motivos)

Level: Advanced

Speakers: Hernan Wilkinson

Speakers Bio: Programador apasionado. Lic. en Ciencias de la Computación de la UBA. Fundador de 10Pines y de FAST (Fundación Argentina de Smalltalk). Profesor de la FCEyN de la UBA. Enseña el Paradigma de Objetos y técnicas Agiles en la universidad y la industria. Key Note Speaker de congresos nacionales e internacionales. Contribuye en proyectos opensource de Smalltalk. Promueve las organizaciones horizontales y las metodologías ágiles. Lo pueden seguir en @hernanwilkinson

Time: 11:30 - 12:30 - 12/06/2019

Room: C

Labels: dynamic typing static typing live programming refactoring autocomplete

Description

Los lenguajes dinámicamente no poseen información de tipos explicita en sus variables, parámetros ni retorno de mensajes. Esta falta de información dificulta la implementación y precisión de herramientas de manipulación de código como rename de mensajes, autocomplete, búsqueda de senders e implementors entre otras. Live Typing es una técnica que a partir de una modificación sencilla de la VM de los lenguajes de objetos, recolecta información de tipo de manera automática cada vez que un objeto se asigna a una variable o parámetro y cada vez que se retorna de un método. Esta información es accesible desde el ambiente de desarrollo y con la misma se puede mejorar drásticamente las herramientas de tal forma que se comporten de manera similar a la de lenguajes estáticamente tipados. Como ventajas adicionales, se puede implementar un chequeo de tipos "constructivo" y no "punitivo", potenciando las ventajas de los lenguajes dinámicamente tipados. Una de las características más interesante de esta técnica es que no es necesario modificar la sintaxis del lenguaje y los programadores no se ven impactados para nada en su manera de desarrollar, o sea, Live Typing pude o no ser utilizado y si lo es, su adopción es no intrusiva. Al día de hoy, Live Typing está implementado en Smalltalk y Ruby y ya lo hemos presentado en distintos congresos internacionales. El objetivo es tener un prototipo/primer versión en Python funcionando para la presentación del congreso.