Embora praticamente todas as linguagens de programação usem variáveis para gerenciar dados, algumas são sem tipo, o que significa que não exigem que você especifique texto, números, datas ou outros tipos de dados junto com o nome da variável. No entanto, embora isso torne as linguagens sem tipo mais fáceis de aprender, também dificulta a manutenção e a depuração de programas.
Variáveis com e sem tipo
Em uma linguagem tipada tradicional, um programador cria variáveis especificando um nome e o tipo de dados que a variável contém. Por exemplo, em COBOL, uma variável para armazenar um nome de cliente pode ser chamada de "CUST-NAME". COBOL especifica o tipo de dados com a cláusula "PICTURE" e um tipo de dados de texto alfabético é um "X". A especificação inteira pode ser "05 CUST-NAME PICTURE X(30)" para reservar 30 caracteres de armazenamento para o campo. Outros tipos de dados incluem inteiros, datas e números com pontos decimais flutuantes. Uma variável sem tipo, por outro lado, tem apenas um nome.
Mais fácil de aprender
Um aluno que está escolhendo sua primeira linguagem de programação pode achar uma linguagem sem tipo, como TCL, mais fácil de lidar do que uma linguagem tradicional de tipos, como Java. Ela não precisa perder tempo aprendendo as diferenças entre os diferentes tipos de dados; a linguagem gerencia automaticamente os tipos de dados internamente; e funções como "expr" também determinam o que o programa faz com as variáveis.
Falta de clareza
Alguém lendo o programa de outra pessoa pode ter dificuldade em entender uma linguagem sem tipo. Como as variáveis não são definidas com um tipo, o uso de variáveis para texto e aritmética se torna mais ambíguo e potencialmente confuso. Um programador pode atenuar um pouco isso incluindo comentários bem escritos no código que descrevem como ele usa as variáveis para realizar uma tarefa. Melhores escolhas para nomes de variáveis também fazem diferença; nomes vagos como "x", "cust1" ou "d" têm menos significado do que "nome_cliente", "venda_total" e "aniversário".
Mudanças mais rápidas
Sem a necessidade de definir e redefinir tipos, os programadores podem fazer alterações no código existente em menos tempo. Você pode atualizar um módulo ou função específica sem precisar alterar as definições de variáveis ou outro código que use as mesmas variáveis. Em geral, linguagens sem tipo têm tempos de ida e volta mais rápidos entre a alteração do código e a visualização da alteração. Esta é uma vantagem para programas utilitários simples escritos em tempo real para resolver problemas imediatos, bem como projetos maiores destinados a tarefas de longo prazo.
Erros em tempo de execução
Embora criar variáveis com tipos de dados seja mais trabalhoso, tem o benefício de maior confiabilidade. Os tipos de dados impõem regras que a linguagem usa para sinalizar possíveis erros. Em uma linguagem digitada, por exemplo, você não pode multiplicar uma string de texto por outra; a linguagem lhe dá um erro de sintaxe, forçando você a corrigir o erro. Em uma linguagem sem tipo, você pode atribuir erroneamente texto a variáveis destinadas a números, fazendo com que o programa em execução falhe.