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, 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 divUtilidade 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, 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 Categoria:Classificação de linguagens de programação