Uma linguagem de programação é uma linguagem que possui sintaxe (formato) e semântica (significado), e é usada para expressar uma sequência de ações computacionais que formam um programa.
Existem milhares de linguagens de programação e novas linguagens surgem frequentemente, trazendo novos paradigmas e estabelecendo novos padrões para programadores. Por isso, é importante conhecer as diferenças principais entre as linguagens e quando o uso de cada uma delas é mais adequado.
Tipo estático ou dinâmico
As linguagens de programação podem ser classificadas de acordo com o tipo de sistema que elas usam. O tipo de sistema define como são os métodos e as variáveis da linguagem.Em uma linguagem de tipo estático, o compilador deve conhecer o tipo de uma variável ou método antes da execução do programa (por isso, o tipo de uma variável normalmente é explicitamente declarado). Em uma linguagem de tipo dinâmico, o tipo de uma variável ou método é desconhecido até a execução do programa.
Exemplo prático de declaração de uma variável inteira com valor 10:
Java (Tipo estático):
Ruby (Tipo dinâmico):
Exemplos de linguagens de tipo estático: Java, Pascal, C, C# e C++.
Exemplos de linguagens de tipo dinâmico: Python, Javascript, Perl e Ruby.
Exemplos de linguagens de tipo dinâmico: Python, Javascript, Perl e Ruby.
Fortemente ou fracamente tipada
Um conceito que muita gente confunde com tipo dinâmico ou estático é se uma linguagem é fortemente ou fracamente tipada. A definição de fortemente ou fracamente tipada tem relação com qual profundamente um sistema verifica as operações que podem ser feitas sobre uma estrutura de dados.
Em linguagens fortemente tipadas, as operações são aplicadas para estruturas de dados bem definidas e cada operação define os tipos de dados que deve receber.
Em linguagens fracamente tipadas, as operações são aplicadas para qualquer estrutura de dados; porém, essas operações podem falhar em tempo de execução caso a estrutura não suporte a operação.
Em uma linguagem fortemente tipada o sistema tem garantias sobre o comportamento do programa. Em uma linguagem fracamente tipada, essa garantia não existe porque uma estrutura de dados pode receber novas funcionalidades em tempo de execução.
Exemplo de uma função que realiza a soma de dois números, um inteiro e um ponto flutuante, e devolve um resultado em ponto flutuante:
Java (Fortemente tipada):
Ruby (Fracamente tipada):
Em Java, os tipos de dados que a operação soma suporta estão bem definidos (a é float e b é int) e o tipo de dado que a operação devolve também (resultado é float).
Em Ruby, a função soma pode receber quaisquer tipos de dados para a e b, e a operação será aplicada sobre esses tipos, devolvendo um resultado de tipo desconhecido:
- se a e b forem String, o resultado será uma String concatenada de a e b;
- se a e b forem inteiros, o resultado será um inteiro que representa a soma a+b;
- se a for um float e b um inteiro, o resultado será um float que representa a soma a+b.
Vale a pena observar que em linguagens fracamente tipadas, a possibilidade de erros em tempo de execução é muito maior. Por isso, é muito recomendável o uso de testes para verificar erros antes de colocar um sistema em produção.
Exemplos de linguagens fortemente tipadas: Java, Pascal, C e C++.
Exemplos de linguagens fracamente tipadas: Perl e Ruby.
Em linguagens fracamente tipadas, as operações são aplicadas para qualquer estrutura de dados; porém, essas operações podem falhar em tempo de execução caso a estrutura não suporte a operação.
Vale a pena observar que em linguagens fracamente tipadas, a possibilidade de erros em tempo de execução é muito maior. Por isso, é muito recomendável o uso de testes para verificar erros antes de colocar um sistema em produção.
Exemplos de linguagens fracamente tipadas: Perl e Ruby.
Linguagens compiladas ou de script
Outro modo de classificar uma linguagem é se ela precisa de um passo de compilação antes de executar. Se ela precisa deste passo, ela é chamada de linguagem compilada. Senão, é chamada de linguagem de script.
Um compilador de uma linguagem compilada gera um código executável a partir do código fonte escrito pelo programador. O código executável não possui o conteúdo do código fonte, portanto programas de linguagens compiladas são melhores de distribuir quando o programador não quer que seu código seja público.
Uma linguagem de script normalmente não necessita de um passo específico de compilação para executar um programa. O código fonte escrito pelo programador pode ser executado diretamente por um intepretador. Esse interpretador lê trechos do código fonte em tempo de execução, converte em um formato que o computador consegue ler (compilação em tempo de execução) e realiza sua execução.
Linguagens de script costumam ter performance inferior a linguagens compiladas pois exigem mais passos para rodar um programa em tempo de execução. Porém, elas são muito mais produtivas, pois eliminam a necessidade de compilar o código fonte toda vez que uma alteração é feita.
Quem já mexeu no código fonte de uma aplicação web sabe como é muito melhor trabalhar com linguagem interpretada: você faz uma alteração no código, salva e pode verificá-la de imediato.
Quando usa uma linguagem compilada, como Java, você tem que compilar o código fonte (que pode levar um tempo considerável, dependendo do sistema), fazer o upload do código para o servidor web e só então verificar a alteração.
Exemplos de linguagens compiladas: Java, C, C++ e C#.
Exemplos de linguagens de script: PHP, Perl, Python e Ruby.
Exemplos de linguagens de script: PHP, Perl, Python e Ruby.
Considerações finais
Este artigo apresenta conceitos básicos sobre linguagens de programação que podem ser decisivos para a escolha de uma.
Para ambientes corporativos, em que uma das exigências principais é a estabilidade e performance do sistema, uma linguagem de tipo estático, fortemente tipada e compilada, como Java, é uma boa escolha.
Para uma aplicação que sofre muitas alterações e que exige alta performance (como por exemplo o Twitter), uma combinação de linguagens de script e compiladas é uma boa escolha. Por exemplo, combinar Ruby ou Python com C, ou usar uma linguagem que suporta tanto interpretação quanto compilação, como Scala.
Para cada situação existe um tipo de linguagem de programação mais adequada. O ideal é não ficar preso aos mesmos paradigmas e nunca achar que a linguagem de programação preferida é a melhor para resolver qualquer problema.
Deixo a dica de um amigo meu, Edmar Miyake, para ficar atualizado com os novos paradigmas de programação: estudar uma nova linguagem de programação por ano.
Linguagens Tipadas
Linguagens tipadas, são conhecidas também como linguagens fortemente tipadas, pois estabelecem regras obrigatórias. Todas as variáveis têm um tipo específico que tem que ser atribuído. Java, C♯, Fortran e Cobol são exemplos deste tipo de linguagem. Linguagens tipadas necessitam que você obrigatoriamente informe o tipo de valor que a variável receberá. Isso garante que, se originalmente você quer um valor inteiro, não receberá uma String.
Exemplo
Var
aluno: string; //atribui a uma variável o valor de string
numero: int; //atribui a uma variável o valor de inteiro
A partir do momento que uma variável é declarada com esse novo tipo, este não pode ser modificado. Além disso, quando o programador quiser atribuir um valor a uma variável, ele deve especificar qual é o tipo que ele está atribuindo através da seleção definida na própria declaração do tipo.
Exemplo
Var
numero: int; //atribui a uma variável o valor de inteiro
Console.WriteLine("Digite um número:"); //linha de interação com o usuário onde ele digitará um número
numero = Int.Parse( Console.ReadLine() ); //armazena valor digitado na variável "numero", como o comando "Console.WriteLine" só recebe valores em string (textos), é obrigatório converte para int, como foi atribuído na variável.
Vantagens desse tipo de Linguagem
Maior confiabilidade e facilidade na detecção de erros
Desvantagem desse tipo de linguagem
Linguagens tipadas tendem a ter mais código para suas aplicações e seu aprendizado pode ser maior.
Linguagens Fracamente ou Dinamicamente Tipadas
Linguagens fracamente tipadas ou Dinamicamente tipadas são aquelas em que durante a execução do programa podem alterar o tipo de dados contido em uma variável. Permitem que o programador não tenha de fazer conversões de tipos (cast). Exemplos destas linguagens são PHP, Javascript, Ruby, Python.Linguagens Não Tipadas
Linguagens não tipadas, são aquelas em que existe apenas um tipo genérico ou mesmo nenhum tipo de dados. Entre estas estão a Linguagem de montagem ou Assembly.Vantagens desse tipo de Linguagem
Maior flexibilidade (agilidade) e facilidade no aprendizado.
Desvantagem desse tipo de linguagem
Linguagens não-tipadas são mais simples em sua implementação, mas caso atribua algo errado, seu código pode fazer algo que você não esperava e será mais difícil encontrar o erro.
Fonte:
http://www.bitabit.eng.br/2009/11/09/a-natureza-de-uma-linguagem-de-programacao/
0 Reviews:
Post Your Review