Paradigmas de programação: perspectivas do mundo para a elaboração de softwares
Por Klayton Conceição de Brito | 12/06/2012 | TecnologiaParadigmas de programação: Perspectivas do mundo para a elaboração de softwares
Desenvolvedores e analistas em todo o mundo precisam estar preparados para os problemas que podem ocorrer no dia a dia do desenvolvimento de sistemas, sejam em qualquer nível de complexidade, conquistados de uma maneira eficaz, enfatizando a simplicidade para o desenvolvimento de sistemas por meio destes que trabalham e dedicam o seu tempo para tornar a tarefa de resolver problemas e facilitar o cotidiano de diversas empresas.
Hoje, os desenvolvedores e analistas possuem ferramentas de desenvolvimento que os auxiliem no projeto e codificação de software, possuem diversas linguagens para diversas plataformas que visam um ou mais paradigmas de desenvolvimento. Mas o que realmente torna estes especialistas tão necessários no mundo atual é sua capacidade abstrair o problema para que possam solucionar o problema totalmente, assim, quanto maior o grau de abstração do desenvolvedor e do analista, o sistema final torna-se algo muito bem distribuído e eficaz com um desempenho sem igual. E estes especialistas precisam “enxergar” o problema de alguma perspectiva, isto depende da linguagem que o desenvolvedor utiliza para desenvolver softwares. Neste artigo eu irei citar os paradigmas de desenvolvimento principais para que você leitor, possa entender as diferenças de cada um.
Inicialmente, o que significa a palavra “paradigma”? Paradigma trata-se de um padrão que deve ser seguido, um modelo que possui uma estrutura própria.
Paradigma funcional:
Neste paradigma, o problema é abstraído, isto é, o problema geral é dividido em partes menores, sendo estas mesmas serem partes divididas novamente até que a complexidade que existia em um problema como um todo, torna menos problemático e mais viável para se desenvolver. Assim, cada parte do problema que foi divido é solucionada, até que todas sejam solucionadas. Em seguida, todas as partes solucionadas são integradas, tornando-se um sistema completo.
Este paradigma tem sua aplicação principal em sistemas de cálculos matemáticos, em que cada parte de um problema é uma função, e cada função é uma formula matemática.
Na prática, a programação funcional baseia-se funções matemáticas que recebe algum (uns) dado(s) como entrada e fornecem alguma resposta como saída, e esta saída pode ser passada para outras funções matemáticas de acordo com o problema geral que foi solucionado. Mas estas funções possuem algumas diferenças quanto a outros tipos de programação, elas não realizam atribuições, e não alteram argumentos passados a elas. O conceito que entendemos de mudança de estado por meio das variáveis é que ao alterar qualquer argumento, o argumento antigo é destruído, e o argumento alterado é criado e posto no lugar do antigo, mas no caso da programação funcional não é bem assim, por exemplo, uma função matemática que altere algum valor cria um novo valor sem alterar o antigo.
Algumas linguagens de programação que utilizam do paradigma funcional são: Scheme, LISP, Prolog, etc..
Paradigma de orientação a objetos:
Este paradigma se assemelha com o paradigma procedural, mas com uma diferença, este tem como objetivo abstrair conceitos que mais se aproxima do que existe no mundo real. Assim, tornando o desenvolvimento de um sistema mais conciso.
A estrutura da orientação objeto baseia-se na modelagem de classes, sendo estas classes objetos do mundo real. As classes contêm atributos e métodos, sendo os atributos são variáveis que mudam de estado a cada vez que uma classe é instanciada, sendo esta instancia um objeto, os métodos representam o comportamento da classe e/ou do objeto, elas realizam alguma tarefa quando solicitarem.
Para explicar o que são classes, objetos, atributos e métodos, irei dar um exemplo: um projeto para construção de casas. O projeto possui características como: telhado, porta, janela, banheiro, garagem, etc.. Com este projeto é possível construir varias casas com as mesmas características do projeto. Mas cada casa é semelhante em relação com as outras, isto é, não são iguais, por exemplo, uma casa tem um telhado vermelho, a outra tem um telhado azul e assim por diante. Na orientação a objetos, o projeto para construção de casas seria uma classe, as casas construídas seriam os objetos e as características seriam atributos e métodos. O conceito baseia-se nas seguintes afirmações:
¾ Tudo no mundo real é considerado objetos;
¾ Cada objeto possui características e comportamentos próprios;
¾ Os objetos são classificados hierarquicamente em uma classe especifica;
¾ As classes representam um grupo de objetos;
¾ As classes possuem associações entre si;
¾ As associações formam interações entre objetos;
¾ As interações ocorrem por meio da troca de mensagens;
¾ Mensagens podem ser requisições de serviços ou o retorno de algum dado solicitado.
E de acordo com estas afirmações é desenvolvido um sistema todo constituídos de objetos, e o comportamento geral de um sistema se baseia na troca de mensagens.
O paradigma de orientação a objetos é o paradigma mais utilizado atualmente por ser de fácil abstração de objetos, sendo que este paradigma surgiu no campo da cognação, que rapidamente teve influencia na área de IA (Inteligência Artificial) e da linguística, no campo de abstração de conceitos do mundo real propriamente dita anteriormente.
Algumas linguagens de programação que utilizam deste paradigma são: Java, C++, C Sharp, Simula etc..
Paradigma Imperativo:
O paradigma imperativo, também chamado de paradigma procedural, porque permite o uso de procedimentos, foi o primeiro paradigma de programação existente, e tem como objetivo analisar o problema geral até que se encontre uma solução. Este paradigma trata de ver uma solução em uma sequência de ações (procedimentos), isto é, o desenvolvedor baseando-se neste paradigma, fará um sistema que executará uma sequencia de comandos, em que ocorrerá a alteração de dados e a troca de estado das variáveis a fim de alcançar um resultado esperado.
Algumas linguagens de programação que utilizam deste paradigma são: Basic, Fortran, Pascal, C, Ada, etc..
Paradigma declarativo:
O paradigma declarativo é inicialmente complexo para entender, pois diferentemente de outros paradigmas, como o paradigma imperativo que soluciona um problema em uma sequencia de passos, isto é, uma sequência de comandos para se chegar a uma resposta, mas diferentemente o paradigma declarativo utiliza-se de regras e fatos para definir qual é o problema a ser solucionado, e o que precisa ser feito, sendo o software responsável por procurar uma solução aceitável para o problema a ser solucionado.
Algumas linguagens de programação que utilizam deste paradigma são: Prolog, Mercury, etc..
Conclusão
É visto neste artigo que cada paradigma tem como objetivo resolver problemas de “panoramas” diferentes, a vários outros paradigmas menos conhecidos, mas o objetivo deste artigo é falar sobre os principais paradigmas que são utilizados atualmente, sendo que alguns costumam ser menos utilizados a cada dia, e outros fazendo mais parte do cotidiano dos desenvolvedores. Mas entendam que não há o paradigma que resolverá todos os tipos de problemas, e sim um paradigma especifico que resolverá com mais facilidade um problema especifico, cabe ao desenvolvedor escolher em qual paradigma ele se adapte de maneira confortável, assim o problema em que trabalhar terá uma dificuldade menor e desenvolverá uma solução eficiente.