BRZEN
Linguagem de programação multiparadigma
Texto da Wikipédia (pt), licença CC BY-SA. O BETARUBI mostra o verbete inteiro nesta página — a leitura não continua fora do site.
As referências deste artigo necessitam de formatação. (janeiro de 2023) |
A seção introdutória deste artigo é inexistente, incompleta, malformatada ou excessiva. (janeiro de 2023) |
Paradigma de programação é a forma de se classificar determinada linguagem de programação com base em seu funcionamento e sua estruturação. Segundo Normak[1], um professor da Universidade de Aalborg na Dinamarca, paradigma de programação é um padrão que serve como uma escola de pensamentos para a programação de computadores. Alguns exemplos de paradigmas de programação são a Programação orientada a objetos, Programação Estruturada e a Programação Imperativa.
Alguns exemplos de linguagens de programação multiparadigma são C++, Python, Groovy, Oz, Ruby, Scala, Swift e Lua (linguagem de programação).
Vantagens e desvantagens
Nenhum dos paradigmas pode ser considerado o ‘melhor paradigma’, pois cada um pode ser o mais viável dependendo do projeto em que será utilizado. O objetivo da programação multiparadigma é fazer uma junção de mais de um paradigma para melhor atender as necessidades do programador. A ideia de uma linguagem multiparadigma é fornecer um framework no qual o programador possa trabalhar com vários estilos, misturando livremente construtores de diferentes paradigmas, tendo em mente que um mesmo programa pode ser feito utilizando paradigmas diferentes. Assim podemos utilizar cada paradigma para solucionar um problema da forma mais elegante e simples possível, conforme o seu objetivo. Por ser um conceito amplo aceitando diversos paradigmas, essas linguagens são fracamente tipadas, sendo assim preferível uma solução viável à longo prazo a soluções temporárias que resolvem um problema por vez.
Exemplos de orientação a objetos
Python é tida como uma linguagem multiparadigma. O exemplo demonstra um tipo de calculadora, criada com o paradigma de orientação a objetos.
Em um arquivo separado, ou em um escopo global:
class Calculadora:
def __init__(self):
self.__var1 = None
self.__var2 = None
def lerValores(self):
self.__var1 = float(input('Digite um valor: '))
self.__var2 = float(input('Digite outro valor: '))
def adicao(self):
soma = self.__var1 + self.__var2
return soma
def subtracao(self):
sub = self.__var1 - self.__var2
return sub
def multiplicacao(self):
mult = self.__var1 * self.__var2
return mult
def divisao(self):
div = self.__var1 / self.__var2
return div
Utilidade no arquivo principal:
from Calculadora import Calculadora
c = Calculadora()
while True:
op = int(input('1 para setar valores\n2 para operações\n3 para sair\nOpção: '))
if op == 1:
c.lerValores()
elif op == 2:
while True:
op1 = int(input('\n1 para soma\n2 para subtração\n3 para multiplicação\n4 para divisão\n5 para sair\nOpção: '))
if op1 == 1:
print(c.adicao())
elif op1 == 2:
print(c.subtracao())
elif op1 == 3:
print(c.multiplicacao())
elif op1 == 4:
print(c.divisao())
else:
break
else:
break
Exemplo de programação estrutural
Programação estrutural segue uma estrutura sequencial, top-down, em que, ao contrario da orientação a objeto, o código só pode ser executado uma vez. O exemplo segue com a mesma premissa de uma calculadora, demonstrando a capacidade de diferentes paradigmas em criar o mesmo programa.
print('Calculadora...\n')
while True:
op = int(input('1 para inserir valores\n2 para efetuar operações\n3 para sair\nOpção: '))
if op == 1:
var1 = float(input('Digite um valor: '))
var2 = float(input('Digite outro valor: '))
elif op == 2:
while True:
op1 = int(input('\n1 para soma\n2 para subtrair\n3 para multiplicar\n4 para dividir\n5 para sair\nOpção: '))
if op1 == 1:
print('Soma: ', var1 + var2)
elif op1 == 2:
print('Subtração: ', var1 - var2)
elif op1 == 3:
print('Multiplicação: ', var1 * var2)
elif op1 == 4:
print('Divisão: ', var1 / var2)
else:
break
else:
break
Exemplo de programação imperativa
Programação imperativa segue o paradigma de que deve-se passar instruções explícitas para que haja mudança no estado do programa[2], passo-a-passo. Um dos exemplos mais comuns são encontrados em códigos assembly, como exemplo o código C abaixo:
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += 2;
}
Que pode ser mapeado 1:1 para (seguindo arquitetura x86-64, sintaxe GAS):
mov $0, %eax # sum = 0
mov $0, %ecx # i = 0
for_loop:
add $2, %eax # sum += 2
inc %ecx # i++
cmp $10, %ecx # i < 10
jl for_loop # Se a comparação acima compreender %ecx como menor que 10, o loop volta
- ↑ «Programming Paradigms». people.cs.aau.dk. Consultado em 9 de abril de 2019
- ↑ «Imperative programming: Overview of the oldest programming paradigm». ionos Digital Guide (em inglês). 21 de maio de 2021. Consultado em 15 de julho de 2026
