Descripción del proyecto
Una nueva inferencia de tipos para satisfacer la demanda futura
Todos los datos de un programa como Java o Scala se clasifican por su tipo (como cadenas o número enteros). Los programadores deben anotar los programas para guiar a los compiladores sobre los tipos de datos que tienen que verificar. Los algoritmos de inferencia de tipos son necesarios para transferir los resultados de los cálculos formales a nuevos lenguajes de programación. En el proyecto TypeFoundry, financiado con fondos europeos, se utilizarán avances recientes en la teoría de la demostración y la semántica —como, por ejemplo, la teoría polarizada de tipos y la llamada por valor de inserción— para identificar la estructura teórica que apuntala la inferencia de tipos. Se empleará esta teoría para construir un conjunto de técnicas para la inferencia de tipos capaces de escalar hasta las características del sistema de tipos avanzado en los lenguajes de programación actuales y futuros.
Objetivo
"Many modern programming languages, whether developed in industry, like Rust or Java, or in academia, like Haskell or Scala, are typed. All the data in a program is classified by its type (e.g. as strings or integers), and at compile-time programs are checked for consistent usage of types, in a process called type checking. Thus, the expression 3 + 4 will be accepted, since the + operator takes two numbers as arguments, but the expression 3 + ""hello"" will be rejected, as it makes no sense to add a number and a string. Though this is a simple idea, sophisticated type system can track properties like algorithmic complexity, data-race freedom, differential privacy, and data abstraction.
In general, programmers must annotate programs to tell compilers the types to check. In theoretical calculi, it is easy to demand enough annotations to trivialize typechecking, but this can make the annotation burden unbearable: often larger than the program itself! So, to transfer results from formal calculi to new programming languages, we need type inference algorithms, which reconstruct missing data from partially-annotated programs.
However, the practice of type inference has outpaced its theory. Compiler authors have implemented many type inference systems, but the algorithms are often ad-hoc or folklore, and the specifications they are meant to meet are informal or nonexistent. The makes it hard to learn how to implement type inference, hard to build alternative implementations (whether for new compilers or analysis engines for IDEs), and hard for programmers to predict if refactorings will preserve typability.
In TypeFoundry, we will use recent developments in proof theory and semantics (like polarized type theory and call-by-push-value) to identify the theoretical structure underpinning type inference, and use this theory to build a collection of techniques for type inference capable of scaling up to the advanced type system features in both modern and future languages.
"
Palabras clave
Palabras clave del proyecto indicadas por el coordinador del proyecto. No confundir con la taxonomía EuroSciVoc (Ámbito científico).
Palabras clave del proyecto indicadas por el coordinador del proyecto. No confundir con la taxonomía EuroSciVoc (Ámbito científico).
Programa(s)
Programas de financiación plurianuales que definen las prioridades de la UE en materia de investigación e innovación.
Programas de financiación plurianuales que definen las prioridades de la UE en materia de investigación e innovación.
-
H2020-EU.1.1. - EXCELLENT SCIENCE - European Research Council (ERC)
PROGRAMA PRINCIPAL
Ver todos los proyectos financiados en el marco de este programa
Tema(s)
Las convocatorias de propuestas se dividen en temas. Un tema define una materia o área específica para la que los solicitantes pueden presentar propuestas. La descripción de un tema comprende su alcance específico y la repercusión prevista del proyecto financiado.
Las convocatorias de propuestas se dividen en temas. Un tema define una materia o área específica para la que los solicitantes pueden presentar propuestas. La descripción de un tema comprende su alcance específico y la repercusión prevista del proyecto financiado.
Régimen de financiación
Régimen de financiación (o «Tipo de acción») dentro de un programa con características comunes. Especifica: el alcance de lo que se financia; el porcentaje de reembolso; los criterios específicos de evaluación para optar a la financiación; y el uso de formas simplificadas de costes como los importes a tanto alzado.
Régimen de financiación (o «Tipo de acción») dentro de un programa con características comunes. Especifica: el alcance de lo que se financia; el porcentaje de reembolso; los criterios específicos de evaluación para optar a la financiación; y el uso de formas simplificadas de costes como los importes a tanto alzado.
ERC-COG - Consolidator Grant
Ver todos los proyectos financiados en el marco de este régimen de financiación
Convocatoria de propuestas
Procedimiento para invitar a los solicitantes a presentar propuestas de proyectos con el objetivo de obtener financiación de la UE.
Procedimiento para invitar a los solicitantes a presentar propuestas de proyectos con el objetivo de obtener financiación de la UE.
(se abrirá en una nueva ventana) ERC-2020-COG
Ver todos los proyectos financiados en el marco de esta convocatoriaInstitución de acogida
Aportación financiera neta de la UE. Es la suma de dinero que recibe el participante, deducida la aportación de la UE a su tercero vinculado. Considera la distribución de la aportación financiera de la UE entre los beneficiarios directos del proyecto y otros tipos de participantes, como los terceros participantes.
CB2 1TN CAMBRIDGE
Reino Unido
Los costes totales en que ha incurrido esta organización para participar en el proyecto, incluidos los costes directos e indirectos. Este importe es un subconjunto del presupuesto total del proyecto.