Curso Profesional de Python

Curso Profesional de Python

Facundo García Martoni

Facundo García Martoni

¿Qué son los tipados?

4/21
Recursos

Aportes 52

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

¿Qué son los tipados?

💻 Los tipados es una clasificación de los lenguajes de programación, tenemos cuatro tipos:

  • Estático
  • Dinámico
  • Débil
  • Fuerte

El tipado del lenguaje depende de cómo trata a los tipos de datos.

El tipado estático es el que levanta un error en el tiempo de compilación, ejemplo en JAVA:

String str = "Hello" // Variable tipo String
str = 5 // ERROR: no se puede convertir un tipo de dato en otro de esta forma.

El tipado dinámico levantan el error en tiempo de ejecución, ejemplo en Python:

str = "Hello" # Variable tipo String
str = 5 # La variable ahora es de tipo Entero, no hay error

## TIPADO FUERTE
x = 1
y = "2"
z = x + y # ERROR: no podemos hacer estas operaciones con tipos de datos distintos entre sí

El tipado débil es el que hace un cambio en un tipo de dato para poder operar con el, como lo hace JavaScript y PHP.

🐍 Python es un lenguaje de tipado 👾 Dinámico y 💪 Fuerte.

Cuando dice que “El tipado dinámico es peligroso, y para poder atacar este peligro te invito a pasar a la siguiente clase”
.

Mini resumen:

Estático →→ Detectan los errores en tiempo de compilación. No se ejecuta hasta corregir. Por ej, Java

Dinámico →→ Detectan el error en tiempo de ejecución. Nos dice el error cuando llega a la línea del código. Por ej, Python

Strong →→ Más severidad con los tipos de datos. Sumar un número + una letra arrojará error.

Weak →→ Menos severidad con los tipos de datos. Si quiero sumar número y letra, las concatenaría como strings. Castea tipos de datos automáticamente. Por ej, PHP

¿Qué son los tipados?

Tenemos tipos de datos primitivos (arreglos, números, strings, booleanos, etc). La manera en que un lenguaje trata a los tipos es el tipado. Tenemos 4 clasificaciones:

  • Estático: Son los que levantan los errores de tipo en tiempo de compilación. Esto es, si al estar programando tenemos un error de tipo, entonces el lenguaje nos avisa antes de que se ejecute (mientras compila). 😯 (C/C++)
  • Dinámico: Opuesto al estático, levantan los errores de tipo en el tiempo de compilación, es decir, el error sale mientras el programa se ejecuta en esa línea donde está el error. 🛑 (Python)
  • Fuerte: Son los que tratan con mas severidad a los datos de diferente tipo. 😠 (Python)
  • Débil: Son mas relajados con datos de diferente tipo. 🦜 (Javascript)

Hola a todos, aquí un poco sobre la discusión de Strong static vs Weak static referente a C/C++.

Aquí 😃

Yo empecé a programar en Java y siempre pensé que la programación era muy estricta por su tipo de tipado. Pero luego fui aprendiendo más y conociendo varias cosas curiosas y para mi gusto rara como por ejemplo en Android Studio hay componentes en los que no se le puede poner como texto un numero directamente, pero si le agregas una cadena vacía funciona, cuando aprendí eso me exploto la cabeza jaja ya que solía hacer un parseo antes.
Ej :

int num = 16;
TextView tv =  findViewById(R.id.tv);
tv.setText(num); // Daria un error ya que el método setText espera un String

pero si agregamos la cadena vacía, nos ahorramos la conversión

int num = 16;
TextView tv =  findViewById(R.id.tv);
tv.setText(num+"");

¿Qué son los tipados?

Los tipados es una clasificación de los lenguajes de programación, tenemos cuatro tipos:

  • Estático: El tipado estático es el que levanta los errores de tipo en el tiempo de compilación, por ejemplo en JAVA.
  • Dinámico: El tipado dinámico levantan el error de tipado en tiempo de ejecución, por ejemplo Python (cabe mencionar que comparte tipado fuerte y tipado débil). ES PELIGROSO.
  • Débil: Los lenguajes de tipado débil tratan con menos severidad a los datos de diferentes tipos por ejemplo cambia (castea) un tipo de dato para poder operar con el, por ejemplo al sumar un número con un carácter nos entregaría una cadena que concatena ambos valores.
  • Fuerte: Son los que tratan con mas severidad a los datos de diferentes tipos, por ejemplo, impide combinar un número entero con una cadena de caracteres.

El tipado del lenguaje depende de cómo trata a los tipos de datos o datos primitivos (Números, Arreglos, Booleanos, Strings).

¿Qué son los tipados? (resumen)

Hay 4 clasificaciones

Estático, dinámico, débil y fuerte.

Un tipado entra en el concepto de tipo,datos primitivos:
string, arreglos, booleanos números

  • estatico fuerte: java, c# scala
  • dinámico fuerte: python, ruby erlang
  • dinámico débil: javascript, php y pearl
  • estático y débil: C y C++

Lenguajes de tipado estáticos

Son los que levantan los errores de tipos en tiempo de compilación.

Lenguaje de tipado dinámico

Levantan los errores en tiempos de ejecución. En Python el lenguaje es interpretado, por eso primero se pasa a bytecode(no se muestra el error de tipo) y luego cuando el lenguaje está funcioando es cuando lanza error

tipado fuerte vs débil

El lenguaje de tipado fuerte tratan con más severidad los errores de tipo mientras los de lenguaje débil son más flexibles

  • Los lenguajes de tipado estático son los que levantan los errores de tipos en tiempo de compilación, por ejemplo, Java.
  • Los lenguajes de tipado dinámico levantan los errores de tipos en tiempo de ejecución, por ejemplo, Python.
  • Un lenguaje de tipado fuerte son los que tratan con más severidad los datos de diferentes tipos. Por ejemplo, en Python no puedes realizar una suma de un entero con un string.
  • Un lenguaje de tipado débil no trata con tanta severidad los datos de diferentes tipos. Por ejemplo, en JavaScript sí es posible realizar una suma entre un número entero y un string.

Static Typing

¿Qué son los tipados?

  • Estático -> Levantan los errores de tipo en tiempo de compilación - El programa no se ejecuta hasta que el error se resuelva
  • Dinámico -> Levantan el error el tiempo de ejecución - Cuando llegue al error, lo va a indicar
  • Débil
  • Fuerte

Un lenguaje va a tener un tipado diferente dependiendo de cómo trate a los tipos.

  • Strong & Dinamic 💪💫 : Python, Ruby, Erlang
  • Strong & Static 💪🗻: Java, C#, Scala
  • Weak & Dynamic 😫💫 : JavaScript, PHP, Perl
  • Weak & Static 😫🗻 : C, C++

Estático:

// java
String str = "hello";
str = 5; // Error

Dinámico:

# python
str = "Hello"
str = 5 # No hay problema :)
# python
x = 1
y = "2"
z = x + y # Error
// javascript
const x = 1
const y = "2"
const z = x + y // "12" - JS es raro 😅
<?php
$str = 5 + "5"; //10 - PHP es raro 😅 (hace lo contrario a JS)
?>

Nota: El tipado dinámico es peligroso.

What are types?

A type is a classification of language. It refers how each language maganes the data type,
like we saw in previous courses, integer, string, booleans.

Bellow the list of types:

  • Type static: erros appear at compilation time.
  • Type dynamic: erros appear at execution time.
  • Type strong: the language is severe with operations. int + str is not possible.
  • Type Weak: the language allow operations of differtent data type. int + str is done as string or integer.

Laguages Classification:

Types Languages
Strong-Static Java, C#
Weak-Static C, C++
Weak-Dynamic php, JS
Strong-Dynamic Python, Ruby

Tipos de tipados:

  • Estático: El error de tipado se detecta en el momento de la compilación.
  • Dinámico: El error de tipado se detecta en la ejecución de la linea de código con el error.
  • Fuerte: Al encontrar una operación entre dos tipos de variables con tipos diferentes de datos se genera el error.
  • Débil: Cuando dos variables/estructura de datos diferentes operan se parsean para poder realizar la operación.

Resumen de la clase

Static Typing

Que son: el lenguaje como trata el tipo de datos

Clasificación según los lenguajes:

  • Estático: levantan los errores de tipo en tiempo de compilación.
String str = "Hello"; //statically wyped as string
str = 5; //would throw an error since java is statically java

  • Dinámico: levanta el error en tiempo de ejecución.
str = "Hello" # it is a string
str = 5 # now it is an integer;
				# perfectly OK
  • Débil: trata con meno severidad a los tipos de datos
const x = 1;
const y = "2";
const z = x + y;
>> 12
<?php
$str = 5 + "5"
>> 10
  • Fuerte: tratan con mas severidad a los tipos de datos
x = 1
y = "2";
z = x + y; 
>> # this will fall

Tipados: la clasificación de los lenguajes de acuerdo al tratamiento que hace con los tipos de datos.

  • Estático: C#, Java, Scala
  • Dinámico: Python, Ruby
  • Débil: c y c++
  • Fuerte: Perl, PHP JavaScript

Classify by typing

How handle the primitive’s values (Strings, Boolean, Arrays, Int)?
Code - Compiler - Execute
Static
The error of typing in the compiler. Don’t execute.
Dynamic
No in the compiler. Error is shown in execution.
Weak
Weak with the handle of data the type.
Strong
Strict with the data type.
Python dynamic and strong. Dynamic typing is dangerous

4 clasificaciones de tipados:

  • Estático. Levantan errores de tipo en tiempo de compilación (Java).
  • Dinámico. Levantan errores en tiempo de ejecución (Python).
  • Débil. Tratan con menos severidad a los datos de diferentes tipos (JavaScript, PHP).
  • Fuerte. Tratan con más severidad a los datos de diferentes tipos (Python).

Un lenguaje va a tener un tipado diferente dependiendo de como trata a los tipos(a los datos primitivos).

Gran explicación, ahora entiendo lo de interpretado y débilmente tipado de js 🤯

Python == Fuerte y Dinámico.
Dinámico porque levanta el error en tiempo de ejecución y Fuerte porque es severo al tratar los datos.

Python = Lenguaje de programación interpretado, Tipado dinámico y fuerte.

Estatico

Dinamico

Los cuatros tipo de tipado:

  1. Estático | Son los que levanta los errores de tipo el tiempo de compilación
  2. Dinámico | Son los que levanta los errores de tipo el tiempo de ejecución
  3. Weak (Débil) ­| Trata con menos severidad a los datos de diferentes tipos
  4. Strong (Fuerte) | Trata con mas severidad a los datos de diferentes tipos

Los lenguajes de tipado dinamico levantan los errores en la ejecución, lo que nos permite reasignar variables en el código, llevar una programación más dinámica.

Los lenguajes estáticos nos levantan los errores al momento de la compitalción, al convertir el código al lenguaje de maquina, por esta razón no podemos reasignar variables en el código.

Conocemos como lenguajes de tipado fuerte a aquellos que son muy estrictos con los tipos de sus variables y no permiten concatenaciones entre variables de distintos tipos.

Por otro lado los lenguajes de tipado débil son aquellos que sí permiten estas operaciones entre distintos tipos de variables. De una manera u otra consiguen que puedan ser operados en conjunto.

Excelente esta clase, llevaba leyendo un par de artículos para poder entender esto de los tipados y en 10 min lo entendí a la perfección

🤖🤖🤖
Estático →→ Detectan los errores en tiempo de compilación. No se ejecuta hasta corregir. Por ej, Java
🤖🤖🤖
Dinámico →→ Detectan el error en tiempo de ejecución. Nos dice el error cuando llega a la línea del código. Por ej, Python
🤖🤖🤖
Strong →→ (fuerte)Más severidad con los tipos de datos. Sumar un número + una letra arrojará error.
🤖🤖🤖
Weak →→ (débil) Menos severidad con los tipos de datos. Si quiero sumar número y letra, las concatenaría como strings. Castea tipos de datos automáticamente. Por ej, PHP

Solo vengo a comentar, usar la palabra str en python como variable es solo para generar confusión, puesto que es una palabra reservada en el lenguaje.

  • Los lenguajes de tipo estático son los que levantan los errores de tipo en tiempos de ejecución.
  • Los lenguajes de tipo fuerte(strong), tratan a los datos de los tipos de manera severa.

C tipado débil???

Me hizo acordar cuando usaba mathematica. En mathematica se ejecuta el programa a veces sin que este bien escrito.

cómo se hacen estás tareas si no tengo computador

Hola soy de Bolivia, tengo problemas con los cursos, los videos son intermitentes, me pasa con los servidores A,B Y C, mi conexion a internet es de fibra, otros servicio como ejemplo amautas que es de video tambien, estan normal, porfavor su soporte para arrgelar este problema

excelente clase profe

Este curso esta muy interesante pero se supone que en el resumen del curso interpreta que de lo que se va a hablar es sobre python avanzado pero se esta enfocando mas en la teoria y estructura de python sin demostrar temas avanzados del lenguaje.

Esta clase deberia marcarse como contenido relacionado a cada curso básico de cada lenguaje que se enseña en Platzi. Gran contenido.

Pedazo de clase Facu

En JavaScript existe la coerción de tipos, que básicamente es el lenguaje de programación haciendo que tu código funcione porque funcione. Ejemplo si ponemos como dice facundo una suma de un número con un string, python nos dirá “Wtf loco te equivocaste, corrigelo” y javascript diría “Claro papito no te preocupes yo lo arreglo”. Lo que pasa por detrás es que intentará parsear un tipo de dato al otro para que sean compatibles, esto a muchos no les gusta, pero yo creo que es muy útil muchas veces. Como tal no es ventaja o desventaja ser de tipado fuerte o débil, o ser compilado o interpretado, lo que es importante aquí es saber como funciona el lenguaje de programación que usas para sacarle el máximo provecho y evitar errores.

Lenguajes de tipado
estático: levantan los errores de tipos en tiempo de compilación

dinámico: levantan los errores de tipos en tiempo de ejecución PELIGROSO

fuerte: tratan con más severidad a los tipados de diferentes tipos, ejem no permiten sumar elementos de diferente tipo

débil: tratan con menos severidad a los tipados de diferentes tipos

Que son los tipados?

Existen 4 clasificaciones

  • Estatico
  • Dinamico
  • Debil
  • Fuerte

Un lenguaje tiene tipado diferente de acuerdo a como trata a cada tipo de dato (string, bool, numeros y arreglos)

Tipado estatico, levantan los errores de tipos en tiempo de compilacion

String str = "Hello"; //se declara como string
str = 5; // Error que no veriamos en python

Tipado dinamico levantan los errores de tipo en tiempo de ejecucion

str = "Hello" #Esto es una string
str = 5 #Ahora es un entero todo OK 

Tipado fuerte los que tratan con mas severidad a los datos de diferentes tipos

x = 1
x = "2"
z = x + y #Error

En cambio en JS lo convierte para concatenarlo

const x = 1;
const y = "2";
const z = x + y; // 12
$str = 5 + "5"; // Esto nos dara 10 pq convierte el "5" a numero

Python es de tipado dinamico y fuerte.

Se puede decir que C++ es de tipado estático debil o fuerte.
Un ejemplo es cuando programamos en un Arduino siempre tenemos que compilar antes de subir nuestro código al microcontrolador y en compilación es cuando nos arroja los errores el mismo IDE. Esto seguro es por conveniencia, ya que sería muy problemático dejar pasar ciertos errores a la ejecución, sin embargo, estos errores en ejecución son tangibles en la aplicación que estés implementando, pues a pesar de poderlo compilar y subirlo, puede que el código no funcione de la manera esperada en los periféricos conectados al Arduino.

Un lenguaje dinámico esta definido como un lenguaje sin tipado, débilmente tipado o con tipado dinámico. No fuerzan a la utilización de tipos de datos. Otro dato importante es que estos lenguajes nacieron para programas cortos o scripts por eso también se les conoce como lenguajes de scripting. Aunque ahora todos son robustos y se pueden utilizar con diferentes paradigmas de desarrollo.

Mientras, un lenguaje estático se denominan de esta manera por que se requiere especificar detalles de bajo nivel, el mas característico es el tipo de variables a usar. Por ejemplo en C, C++, C#, Java se debe definir el tipo de variable y entre estos hay “subtipos”. Un numero puede ser entero o de punto flotante, por ejemplo. Una vez definido el tipo de variable esta no se puede cambiar. Un entero(Integer) va a ser entero por siempre y para siempre.

Algo importante a tener en cuenta es que un programa escrito con un lenguaje estático generalmente corre mas rápido que su equivalente en un lenguaje dinámico. Esto es por que no deben pasar por un interprete para ser ejecutados(Java es un caso especial). Aunque la diferencia de tiempo de ejecución es mínima en estos momentos. Depende mucho de la destreza del programador y del tipo de tarea que se quiera hacer. Por ejemplo si se trata de un trabajo de procesamiento de una cantidad significativa de datos y se requiere el mas alto rendimiento desde el inicio se debe optar un por un lenguaje estático. Aun así eso habría que evaluarlo para demostrar que es totalmente necesario, que esos milisegundos entre cada proceso ganados si representan un valor real, ya que en contraparte escribir código en un lenguaje dinámico es mucho mas rápido y varios estudios demuestran que se puede hasta duplicar la productividad.

Python: está en el II cuadrante, por lo tanto como par ordenado en plano cartesiano tendría coordenadas (-x , +y). Las mismas serán, respecto al tipado:
(- Dynamic , +Strong)

El ejemplo en el minuto 7:30 los ; esta de mas cierto?

Fascinante ver el panorama completo en vez de verlo solo desde una esquina o vértice
.
Te ayuda a sacar el máximo potencial del lenguaje en que estas, gracias Facundo

¿Qué son los tipados?
Son una clasificación de los lenguajes a través de como trata cada uno de los diferentes tipos de datos. Tenemos cuatro tipos:

  • Estático: levanta los errores de tipo en tiempo de compilación, es decir, el programa no se ejecuta hasta que no se corrija ese error. Por ejemplo: JAVA.
  • Dinámico: levantan el error de tipado en tiempo de ejecución, es decir, nos lo dice cuando llegue a la línea de código en donde está el error. Por ejemplo Python.
  • Débil: tratan con menos severidad a los datos de diferentes tipos. Por ejemplo: Permite sumar un número entero con un string y el resultado sería una cadena que concatena ambos valores.
  • Fuerte: tratan con más severidad a los datos de diferentes tipos. Por ejemplo, no permite combinar/sumar un número entero con una cadena de caracteres.
voy por ti, python challenge 🤭😄😅

min 4:09 coppel buscando su cliente xD

Entendido