Fale com a gente no WhatsApp Fale com a gente no WhatsApp
Fale com a gente no WhatsApp

Desenvolvimento

Quais as diferenças entre tipagens: estática ou dinâmica e forte ou fraca

Uma dúvida muito comum é sobre tipagem nas linguagens de programação. Nesse artigo falamos de forma simples e com exemplos sobre as tipagens estática, dinâmica, fraca e forte. Além do conceito de inferência de tipo.

há 4 anos 8 meses


Você sabia que a TreinaWeb é a mais completa escola para desenvolvedores do mercado?

O que você encontrará aqui na TreinaWeb?

Conheça os nossos cursos

Quando vemos uma nova linguagem de programação, uma das primeiras coisas que as pessoas costumam colocar na descrição dela é a tipagem. Neste artigo vamos falar um pouco sobre os tipos de tipagem.

Tipagem Estática

Linguagens com tipagem estática não permitem ao desenvolvedor alterar o tipo da variável depois de declarada. Geralmente a verificação de tipo é feita em tempo de compilação. Podemos ver o exemplo abaixo na linguagem Java:

public class MyClass {
    public static void main(String args[]) {
      int variavel = 10;

      variavel = "Elton Fonseca"; //error: incompatible types: String cannot be converted to int
    }
}

Quando tentamos atribuir um valor de um tipo diferente do que foi declarado na variável temos um erro.

Java - Fundamentos
Curso Java - Fundamentos
Conhecer o curso

Tipagem Dinâmica

A tipagem dinâmica está ligado a habilidade da linguagem de programação permitir que a mesma variável possa receber valores de tipos diferentes ao longo da execução do código. Veja o exemplo abaixo na linguagem PHP:

$variavel = "Elton Fonseca";

echo gettype($variavel); //string

$variavel = 340;

echo gettype($variavel); //integer

$variavel = 340.89;

echo gettype($variavel); //double

$variavel = true;

echo gettype($variavel); //boolean

Muita gente confunde, acha que linguagem de tipagem dinâmica não possui tipos. Na verdade, ela possui tipos normalmente, a diferença está apenas na capacidade da linguagem em alterar o tipo da variável em tempo de execução.

PHP - Fundamentos
Curso PHP - Fundamentos
Conhecer o curso

Inferência de tipo

Algumas linguagens estáticas podem fazer a inferência de tipo na declaração de variáveis, mas não permite que o tipo seja alterado após a declaração. Veja esse exemplo na linguagem C#:

using System;

public class Program
{
    public static void Main()
    {
        var variavel = "Treinaweb";

        Console.WriteLine(variavel.GetType()); //System.String

        variavel = 28; //Compilation error (line 11, col 14): Cannot implicitly convert type 'int' to 'string'
    }
}

Ele apresenta um erro quando tentamos atribuir um valor de tipo diferente a variável. Isso porque ele apenas realiza a inferência do tipo inicial da variável, depois disso como a linguagem possui características estáticas não permite alterar o tipo.

C# (C Sharp) Básico
Curso C# (C Sharp) Básico
Conhecer o curso

Tipagem Fraca

A tipagem fraca está ligada a característica da linguagem de realizar conversões automaticamente entre tipos diferentes de dados. Veja o exemplo abaixo abaixo em Javascript:

var nome = "Elton Fonseca"; //string

var idade = 28; //number

console.log(nome + " " + idade); //Elton Fonseca 28

JavaScript Básico
Curso JavaScript Básico
Conhecer o curso

Tipagem Forte

Linguagens fortemente tipadas não realizam conversões automaticamente. Vamos pegar como exemplo a linguagem Python. Ela possui tipagem forte, se formos executar o exemplo acima em Python teríamos um erro:

nome = "Elton Fonseca" #str
idade = 28 #int

print(nome + " " + idade) #TypeError: can only concatenate str (not "int") to str

Python - Fundamentos
Curso Python - Fundamentos
Conhecer o curso

Considerações finais

Muitas linguagens de programação não se enquadram exatamente entre tipagem estática ou dinâmica e tipagem forte ou fraca. Principalmente pelo fato de cada uma destas abordagens possuírem vantagens e desvantagens, as linguagens mais modernas tendem a mesclar alguns aspectos de cada uma.

Autor(a) do artigo

Elton Fonseca
Elton Fonseca

Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. @eltonfonsecadev

Todos os artigos

Artigos relacionados Ver todos