Linguagem fortemente tipada (Strong typing)
Fevereiro 28, 2008 at 2:19 am | In Desenvolvimento, Java, JavaScript, ruby | 11 CommentsEm uma conversa com uma professora da faculdade, surgiu uma pequena discussão.
O que é uma linguagem fortemente tipada?
Segundo a professora, linguagem fortemente tipada é aquela onde você precisa declarar o tipo da variável, por exemplo:
// código java
private String nome;
Na minha opinião, ela está enganada.
A principal característica de uma linguagem fortemente tipada (Strong typing), é que cada variável do programa representa um objeto de um tipo bem definido.
// codigo java
int x = 12.1; // erro, tipos incompatíveis
int j = (int) 12.1 // funciona, mas você perde as casas decimais
Java é uma linguagem formente tipada. Não é possível atribuir um double para um int.
Para executar tal operação, você terá que forçar a tranformação para o tipo definido pela variável. Chamamos isso de cast. Java também é uma linguagem com tipagem estática, ou seja, você precisa declarar qual o tipo de objeto a variável irá referenciar.
Vejamos um exemplo em Ruby.
x = ‘Marcelo’
y = 12
puts x + y
A principal diferença que podemos notar é a ausência do tipo da variável. Mas isso não torna ruby uma linguagem fracamente tipada. O que acontecerá se você tentar somar (+) um Fixnum (int) com uma String? Um belo erro no console:
can’t convert Fixnum into String (TypeError)
Ou seja, ruby também é fortemente tipada, porém de forma dinâmica. O interpretador “descobre” em tempo de execução o tipo da variável. Devido a essa característica, em ruby não existe cast. Caso os tipos envolvidos na operação sejam incompatíveis, você terá um belo erro pra se preocupar.
Veja um exemplo em javascript:
var x = “Marcelo”;
var y = 12;
alert(x + y);
JavaScript é fracamente tipada (weak typing), ou seja, este código será executado sem problemas. Você não precisa informar o tipo da variável e o intepretador do javascript sabe realizar algumas operações sobre os objetos dependendo do contexto.
Espero que a professora leia este POST.
11 Comentários »
Feed RSS dos comentários deste post URI do TrackBack
Deixe um comentário
Blog no WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.
Nossa, sua professora realmente precisa ler algo sobre tipagem. É um tópico confuso e até meio obscuro no mainstream mas porque ela não ode simplesmente dizer “não sei” o invés de falar algo assim?
[]s
Comentário por Phillip Calçado — Março 1, 2008 #
Olá Marcelo, boa tarde,
Acredito que as linguagens fortemente tipadas são todos as linguagens que são orientadas a objetos.
Quando estamos trabalhando com linguagens orientadas a objeto, temos a possibilidade de criar tipos, as classes são tipos.
Em linguagens procedurais, teremos apenas variáveis primitivas, neste caso entendo que são linguagens fracamente tipadas.
abraço,
Domingos Bernardo
Comentário por Domingos — Setembro 17, 2008 #
Olá, Marcelo.
Seus conceitos de tipagem estão corretos, é por aí mesmo. Forte/ Fraco se refere à permissividade da linguagem quanto à mudança implícita de tipos (a fortemente não deixa), e o estático/dinamico é com relação à mudança no primeiro momento, ou seja, quando não declaramos, o programa detecta em tempo de execução o PRIMEIRO TIPO assumido.
Comentário por Samy Soares — Dezembro 17, 2008 #
Sobre o comentário do Domingos Bernardo,
“(…)Acredito que as linguagens fortemente tipadas são todos as linguagens que são orientadas a objetos. Quando estamos trabalhando com linguagens orientadas a objeto, temos a possibilidade de criar tipos, as classes são tipos. Em linguagens procedurais, teremos apenas variáveis primitivas, neste caso entendo que são linguagens fracamente tipadas.(…)”
Domingos, a generalização que você citou não está correta. Entre outras linguagens procedurais, o Pascal (não o Delphi, o Pascal) é fortemente tipado. Não possui objetos, apenas tipos primitivos e você não pode atribuir um valor diferente do domínio daquele ao qual a variável foi declarada.
Salutos.
Comentário por Fernando — Fevereiro 3, 2009 #
Acrescentando,
O Deplhi também é fortemente tipado.
Abraços a todos e parabéns pelo post Marcelo.
Comentário por Fernando — Fevereiro 3, 2009 #
O Delphi não é linguagem, o delphi é uma IDE. A linguagem é Pascal Orientada a Objetos.
Comentário por Rafael — Março 18, 2009 #
Corrigindo, a linguagem UTILIZADA pelo Delphi é o Object Pascal.
Comentário por Rafael — Março 18, 2009 #
o C e uma linguagem fortemente tipada e não e orientado a objetos, contrariando a opinião do nosso colega, com relação ao topico ficou legal.
Comentário por Paulo — Abril 4, 2009 #
[...] linguagens são linguagens de alto nível, a grande maioria com tipagem dinâmica e com um Protocolo de Meta-Objeto (Meta-Object Protocol), ou MOP. Estas duas [...]
Pingback por Linguagens dinâmicas « Marcelo Madeira — Junho 19, 2009 #
Ótima conclusão! Parabens!
Comentário por Marcelo Trajano — Outubro 24, 2009 #
Tem um erro no post: Ruby é fracamente tipada!
Vou escrever um artigo sobre isso e posto aqui.
Comentário por Rafael Barbolo Lopes — Novembro 8, 2009 #