1.2 Paradigmas de Programação
A palavra paradigma tem origem na palavra grega παράδειγμα, que significa “padrão” ou “exemplo”, e que, por sua vez, vem de παραδεικνύναι, que significa “demonstrar”. A partir dessa observação, Thomas S. Kuhn definiu paradigma como "toda a constelação de crenças, valores, técnicas etc., partilhadas pelos membros de uma comunidade determinada" . Assim, pode-se dizer que um paradigma expressa um padrão de pensamento de uma comunidade.
Uma vez que existem diferentes comunidades de programadores, bem como diferentes domínios de aplicação, é natural que haja diferentes paradigmas também dentro da área de programação. Esses paradigmas de programação proporcionam aos programadores formas mais naturais de expressar suas idéias e pensamentos ao computador, utilizando estruturas de dados, técnicas e abstrações que fazem mais sentido dentro de sua comunidade, tipo de negócio ou contexto.
O uso de um paradigma de programação adequado ao domínio de aplicação permite que o programador desenvolva sistemas com maior produtividade, pois os códigos podem ser escritos de uma forma mais natural, mais legível e mais fácil de se manter ao longo da vida útil do sistema.
De forma geral, um paradigma de programação fornece e determina a visão que o programador possui sobre a estruturação e execução do programa, permitindo ou proibindo a utilização de algumas técnicas de programação.
Por exemplo, alguns dos paradigmas mais conhecidos (e algumas linguagens com suporte aos mesmos) são apresentados na Tabela 1:
Paradigma | Linguagem | Ano de Criação |
---|---|---|
Procedimental | COBOL | 1959 |
Pascal | 1970 | |
C | 1972 | |
Orientado a Objetos | Simula | 1967 |
Smalltalk | 1972 | |
C++ | 1979 | |
Java | 1995 | |
C# | 2001 | |
Funcional | LISP | 1958 |
Erlang | 1986 | |
Haskell | 1990 | |
F# | 2005 | |
Lógico | Planner | 1969 |
Prolog | 1972 | |
Oz | 1995 | |
Declarativo | SQL | 1974 |
Prolog | 1972 | |
Mercury | 1995 | |
Tabela 1 – Principais paradigmas de programação e algumas linguagens com suporte aos mesmos
Há ainda linguagens híbridas (ou, multiparadigma), ou seja, linguagens que dão suporte total ou parcial a mais de um paradigma de programação.
A ideia de uma linguagem híbrida é motivada pelo fato de que nenhum paradigma isoladamente pode resolver todos os problemas da maneira mais elegante ou eficiente possível. Sendo assim, é necessário dar ao programador a liberdade de misturar princípios, conceitos e técnicas de diferentes paradigmas, ao resolver um problema particular.
Dessa forma, um sistema pode ser desenvolvido utilizando vários paradigmas ao mesmo tempo, com cada trecho de código obtendo apenas as vantagens do paradigma no qual foi escrito, levando assim o sistema a ter uma melhor desempenho e confiabilidade.
Alguns exemplos de linguagens híbridas são apresentados na Tabela 2.
Paradigma | Linguagem | Ano de Criação |
---|---|---|
Orientado a Objetos, | CLOS | 1958 |
Declarativo, Lógico | Prolog | 1972 |
Orientado a Objetos, | Python | 1991 |
Orientado a Objetos | JavaScript | 1995 |
Lógico, | Oz | 1995 |
Orientado a Objetos, | Ruby | 1995 |
Tabela 2 – Principais Linguagens híbridas e os paradigmas que suportam