SlideShare una empresa de Scribd logo
1 de 8
Chequeo de tipos
 Miguel Ángel Alarcos Torrecillas
 Ingeniero Técnico en Informática
 miguel.alarcos@gmail.com
Chequeo de tipos en
la programación estática y dinámica.
Tipos de los parámetros en una
función
 Dada la función f que llama a g:
debe cumplirse que el tipo de los parámetros
en la llamada coincide con el tipo de los
parámetros esperados a la entrada de g.
 Argumento: el chequeo de tipos alerta de
errores, eso es bueno.
Tipos de los parámetros en una
función
 Respuesta: Si la unit-test de f se cumple, se
cumple la coincidencia de tipos, ya que está
subsumida. Pero dado que no somos
perfectos haciendo unit-tests, es bueno
como ayuda auxiliar.
 Más formalmente: si para que B se cumpla
debe cumplirse A, eso no significa que
verificando que se cumple A nos acercamos
a que se cumpla B, ya que hay casos en los
que se cumple A y no B.
Un ejemplo
def g(float a, float b): # se suele decir que g acepta un flotante como primer parámetro.
# Lo correcto es decir qué objetos son los que acepta: por ejemplo, la velocidad
# de los cuerpos con masa mayor a 1 tonelada.
return a - b
def f():
a, b = 8, 4
return g(b, a) # queremos hacer g(a,b), pero nos equivocamos en el orden de los parámetros
 Coinciden tipos, pero hemos invertido el
orden de los parámetros, lo que producirá un
error que se descubrirá pasado bastante
tiempo de ejecución y sin posible pista de
dónde viene el error.
Un experimento psico-
informático
 Detectar el error de tipos sí, corregir el error
de tipos no.
 Experimento psico-informático: funciones
con llamadas a otras funciones en las que
hay errores de tipo en las llamadas.
¿Corrigen los tipos solamente o el correcto
funcionamiento de las funciones?
La inferencia no cubre el 100%
 Argumento: La inferencia no cubre el 100%
en un código dinámico sin dar algunas
pistas, mientras que en un código estático
tenemos toda la información de tipos, y
hemos dicho que eso es algo bueno.
Respuesta:
 podemos dar algunas pistas (Python function
annotations): def f(x: int) -> int:
 no estamos hablando del mismo código. En
el caso dinámico hay más expresividad
Pero, ¿qué información de tipos
tenemos realmente en el caso
estático?
 En el mundo ideal sabemos a priori todos
los tipos que vamos a utilizar, pero en el
mundo real el algoritmo va cambiando y con
ello la declaración de tipos. Es decir, la
información de declaración de tipos se
extrae del algoritmo a posteriori y no al
revés, luego no tiene sentido utilizarla para
verificar el algoritmo.
 Lo que si necesitamos es inferencia de tipos
(recorriendo todos las ramas) para saber que
el algoritmo es coherente a nivel de tipos.
Un paralelismo
 Si sobre una línea tenemos trazadas las
siguientes distancias: 2m, 5m, 9m.
 No tiene sentido verificar las marcas
atendiendo a la mitad de la medida de la
primera marca.
 Tiene sentido tener un metro certificado
externamente y utilizarlo para verificar las
medidas.

Más contenido relacionado

La actualidad más candente

Sentencias if python y entrada
Sentencias if python y entradaSentencias if python y entrada
Sentencias if python y entradaElim Aqp
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionMagui Cisnecorz
 
Estructura de lenguaje C++
Estructura de lenguaje C++Estructura de lenguaje C++
Estructura de lenguaje C++jhoel terrel
 
Palabras reservadas en java
Palabras reservadas en javaPalabras reservadas en java
Palabras reservadas en javatriss0706
 
If visual basic marlon y españa
If visual basic marlon y españaIf visual basic marlon y españa
If visual basic marlon y españaStalyn Cruz
 
PráCtica Con Foreign Desk
PráCtica Con Foreign DeskPráCtica Con Foreign Desk
PráCtica Con Foreign Deskteresa_soto
 
Recursividad - Vanessa Ramirez
Recursividad - Vanessa RamirezRecursividad - Vanessa Ramirez
Recursividad - Vanessa RamirezVanessa Ramirez
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionsullonkey
 
APP Inventor - Bloques de control
APP Inventor - Bloques de controlAPP Inventor - Bloques de control
APP Inventor - Bloques de controlBruno Vidondo
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño webPaula_rozo
 

La actualidad más candente (18)

Lenguaje c... trabajo
Lenguaje c... trabajoLenguaje c... trabajo
Lenguaje c... trabajo
 
Introduccion a python
Introduccion a pythonIntroduccion a python
Introduccion a python
 
Sentencias if python y entrada
Sentencias if python y entradaSentencias if python y entrada
Sentencias if python y entrada
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Las estructuras de control
Las estructuras de controlLas estructuras de control
Las estructuras de control
 
Estructura de lenguaje C++
Estructura de lenguaje C++Estructura de lenguaje C++
Estructura de lenguaje C++
 
Ahorcado
AhorcadoAhorcado
Ahorcado
 
Actividad 3
Actividad 3Actividad 3
Actividad 3
 
Palabras reservadas en java
Palabras reservadas en javaPalabras reservadas en java
Palabras reservadas en java
 
If visual basic marlon y españa
If visual basic marlon y españaIf visual basic marlon y españa
If visual basic marlon y españa
 
Arreglos Expresiones y Control de Flujo
Arreglos Expresiones y Control de FlujoArreglos Expresiones y Control de Flujo
Arreglos Expresiones y Control de Flujo
 
PráCtica Con Foreign Desk
PráCtica Con Foreign DeskPráCtica Con Foreign Desk
PráCtica Con Foreign Desk
 
Recursividad - Vanessa Ramirez
Recursividad - Vanessa RamirezRecursividad - Vanessa Ramirez
Recursividad - Vanessa Ramirez
 
Expresiones y control del flujo Java
Expresiones y control del flujo JavaExpresiones y control del flujo Java
Expresiones y control del flujo Java
 
Polimorfismo_PApps
Polimorfismo_PAppsPolimorfismo_PApps
Polimorfismo_PApps
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
APP Inventor - Bloques de control
APP Inventor - Bloques de controlAPP Inventor - Bloques de control
APP Inventor - Bloques de control
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño web
 

Destacado

Economica
EconomicaEconomica
Economicadadm08
 
Trabajo andres marce (1)
Trabajo andres   marce (1)Trabajo andres   marce (1)
Trabajo andres marce (1)angeles300
 
Valoración del proyecto
Valoración del proyectoValoración del proyecto
Valoración del proyectoMAITEBG
 
5 averías que todo ciclista de montaña debe saber solucionar
5 averías que todo ciclista de montaña debe saber solucionar 5 averías que todo ciclista de montaña debe saber solucionar
5 averías que todo ciclista de montaña debe saber solucionar mariasegura92
 
Pariacl2 diego cabrera
Pariacl2 diego cabreraPariacl2 diego cabrera
Pariacl2 diego cabreraDiegocabr
 
Spielregel twilight 691004
Spielregel twilight 691004Spielregel twilight 691004
Spielregel twilight 691004Jason Fawcett
 
Folienpräsentation Erasmus+ JUGEND IN AKTION
Folienpräsentation Erasmus+ JUGEND IN AKTIONFolienpräsentation Erasmus+ JUGEND IN AKTION
Folienpräsentation Erasmus+ JUGEND IN AKTIONJUGEND für Europa
 
Sintesis mas informacion menos conocimiento mario vargas
Sintesis mas informacion menos conocimiento   mario vargasSintesis mas informacion menos conocimiento   mario vargas
Sintesis mas informacion menos conocimiento mario vargasAlejandra Tèllez
 
Implementacion de las tic como metodo didactico para mejorar el aprendisaje
Implementacion de las tic  como metodo didactico para mejorar el  aprendisajeImplementacion de las tic  como metodo didactico para mejorar el  aprendisaje
Implementacion de las tic como metodo didactico para mejorar el aprendisajecaraballo5
 

Destacado (20)

Economica
EconomicaEconomica
Economica
 
Trabajo andres marce (1)
Trabajo andres   marce (1)Trabajo andres   marce (1)
Trabajo andres marce (1)
 
C onstitucion
C onstitucionC onstitucion
C onstitucion
 
Valoración del proyecto
Valoración del proyectoValoración del proyecto
Valoración del proyecto
 
Fallos de Cámara
Fallos de CámaraFallos de Cámara
Fallos de Cámara
 
5 averías que todo ciclista de montaña debe saber solucionar
5 averías que todo ciclista de montaña debe saber solucionar 5 averías que todo ciclista de montaña debe saber solucionar
5 averías que todo ciclista de montaña debe saber solucionar
 
Herramientas digitales
Herramientas digitales Herramientas digitales
Herramientas digitales
 
el modelo desarrollistas
el modelo desarrollistasel modelo desarrollistas
el modelo desarrollistas
 
Pariacl2 diego cabrera
Pariacl2 diego cabreraPariacl2 diego cabrera
Pariacl2 diego cabrera
 
Informatica
InformaticaInformatica
Informatica
 
Act! Produktbroschüre Version v16
Act! Produktbroschüre Version v16Act! Produktbroschüre Version v16
Act! Produktbroschüre Version v16
 
Presentación2
Presentación2Presentación2
Presentación2
 
Sprechen Sie Lead? für Infor CRM
Sprechen Sie Lead? für Infor CRMSprechen Sie Lead? für Infor CRM
Sprechen Sie Lead? für Infor CRM
 
Spielregel twilight 691004
Spielregel twilight 691004Spielregel twilight 691004
Spielregel twilight 691004
 
wea bologia :3
wea bologia :3wea bologia :3
wea bologia :3
 
Cultura expocicion
Cultura expocicionCultura expocicion
Cultura expocicion
 
Folienpräsentation Erasmus+ JUGEND IN AKTION
Folienpräsentation Erasmus+ JUGEND IN AKTIONFolienpräsentation Erasmus+ JUGEND IN AKTION
Folienpräsentation Erasmus+ JUGEND IN AKTION
 
20 problemas
20 problemas 20 problemas
20 problemas
 
Sintesis mas informacion menos conocimiento mario vargas
Sintesis mas informacion menos conocimiento   mario vargasSintesis mas informacion menos conocimiento   mario vargas
Sintesis mas informacion menos conocimiento mario vargas
 
Implementacion de las tic como metodo didactico para mejorar el aprendisaje
Implementacion de las tic  como metodo didactico para mejorar el  aprendisajeImplementacion de las tic  como metodo didactico para mejorar el  aprendisaje
Implementacion de las tic como metodo didactico para mejorar el aprendisaje
 

Similar a Chequeo de tipos

Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.comFresyMetal
 
Presentacion python final
Presentacion python finalPresentacion python final
Presentacion python finalAlex
 
Presentacion python final
Presentacion python finalPresentacion python final
Presentacion python finalAlex
 
Recursividad
RecursividadRecursividad
Recursividadjuan jose
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4flaquita_dany
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE Cflaquita_dany
 
Actividad 5. Ejercicios.docx
Actividad 5. Ejercicios.docxActividad 5. Ejercicios.docx
Actividad 5. Ejercicios.docxSnorkReyes
 
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfEstructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfSofiaMoreno74
 
2685008 taller-java
2685008 taller-java2685008 taller-java
2685008 taller-javajairjulian
 
Estructuras básicas tecnologia P3 2021
Estructuras básicas tecnologia P3 2021Estructuras básicas tecnologia P3 2021
Estructuras básicas tecnologia P3 2021DavidLopez979
 
Estructuras básicas 10 3
Estructuras básicas 10 3 Estructuras básicas 10 3
Estructuras básicas 10 3 juansolano67
 

Similar a Chequeo de tipos (20)

Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
Presentacion python final
Presentacion python finalPresentacion python final
Presentacion python final
 
Presentacion python final
Presentacion python finalPresentacion python final
Presentacion python final
 
Tecnología pseint (1)
Tecnología pseint (1)Tecnología pseint (1)
Tecnología pseint (1)
 
Recursividad
RecursividadRecursividad
Recursividad
 
Tecnología pseint
Tecnología pseintTecnología pseint
Tecnología pseint
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
Funciones
FuncionesFunciones
Funciones
 
Ciclos
CiclosCiclos
Ciclos
 
Elemento 4
Elemento 4Elemento 4
Elemento 4
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Actividad 5. Ejercicios.docx
Actividad 5. Ejercicios.docxActividad 5. Ejercicios.docx
Actividad 5. Ejercicios.docx
 
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfEstructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
2685008 taller-java
2685008 taller-java2685008 taller-java
2685008 taller-java
 
Estructuras básicas tecnologia P3 2021
Estructuras básicas tecnologia P3 2021Estructuras básicas tecnologia P3 2021
Estructuras básicas tecnologia P3 2021
 
Estructuras básicas 10 3
Estructuras básicas 10 3 Estructuras básicas 10 3
Estructuras básicas 10 3
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 

Último

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 

Último (20)

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 

Chequeo de tipos

  • 1. Chequeo de tipos  Miguel Ángel Alarcos Torrecillas  Ingeniero Técnico en Informática  miguel.alarcos@gmail.com Chequeo de tipos en la programación estática y dinámica.
  • 2. Tipos de los parámetros en una función  Dada la función f que llama a g: debe cumplirse que el tipo de los parámetros en la llamada coincide con el tipo de los parámetros esperados a la entrada de g.  Argumento: el chequeo de tipos alerta de errores, eso es bueno.
  • 3. Tipos de los parámetros en una función  Respuesta: Si la unit-test de f se cumple, se cumple la coincidencia de tipos, ya que está subsumida. Pero dado que no somos perfectos haciendo unit-tests, es bueno como ayuda auxiliar.  Más formalmente: si para que B se cumpla debe cumplirse A, eso no significa que verificando que se cumple A nos acercamos a que se cumpla B, ya que hay casos en los que se cumple A y no B.
  • 4. Un ejemplo def g(float a, float b): # se suele decir que g acepta un flotante como primer parámetro. # Lo correcto es decir qué objetos son los que acepta: por ejemplo, la velocidad # de los cuerpos con masa mayor a 1 tonelada. return a - b def f(): a, b = 8, 4 return g(b, a) # queremos hacer g(a,b), pero nos equivocamos en el orden de los parámetros  Coinciden tipos, pero hemos invertido el orden de los parámetros, lo que producirá un error que se descubrirá pasado bastante tiempo de ejecución y sin posible pista de dónde viene el error.
  • 5. Un experimento psico- informático  Detectar el error de tipos sí, corregir el error de tipos no.  Experimento psico-informático: funciones con llamadas a otras funciones en las que hay errores de tipo en las llamadas. ¿Corrigen los tipos solamente o el correcto funcionamiento de las funciones?
  • 6. La inferencia no cubre el 100%  Argumento: La inferencia no cubre el 100% en un código dinámico sin dar algunas pistas, mientras que en un código estático tenemos toda la información de tipos, y hemos dicho que eso es algo bueno. Respuesta:  podemos dar algunas pistas (Python function annotations): def f(x: int) -> int:  no estamos hablando del mismo código. En el caso dinámico hay más expresividad
  • 7. Pero, ¿qué información de tipos tenemos realmente en el caso estático?  En el mundo ideal sabemos a priori todos los tipos que vamos a utilizar, pero en el mundo real el algoritmo va cambiando y con ello la declaración de tipos. Es decir, la información de declaración de tipos se extrae del algoritmo a posteriori y no al revés, luego no tiene sentido utilizarla para verificar el algoritmo.  Lo que si necesitamos es inferencia de tipos (recorriendo todos las ramas) para saber que el algoritmo es coherente a nivel de tipos.
  • 8. Un paralelismo  Si sobre una línea tenemos trazadas las siguientes distancias: 2m, 5m, 9m.  No tiene sentido verificar las marcas atendiendo a la mitad de la medida de la primera marca.  Tiene sentido tener un metro certificado externamente y utilizarlo para verificar las medidas.