Linguagens e paradigmas de programação \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 18 Horas 

 50 Min 

 35 Seg 

   Tempo restante da oferta: 18 50 35 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Linguagens e paradigmas de programação  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

# Linguagens e paradigmas de programação

 Saiba um pouco mais sobre as linguagens de programação e seus principais paradigmas.

 [ Kennedy Tedesco ](https://www.treinaweb.com.br/blog/autor/kennedy-tedesco) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/linguagens-paradigmas.jpg)  

No passado escrevia-se programas utilizando apenas linguagens de *baixo nível*. A escrita é engessada, complexa e muito específica, sendo pouco acessível para os desenvolvedores no geral. Esse tipo de linguagem exige muito conhecimento de quem a programa (inclusive relacionado à forma com que o processador opera uma instrução-máquina).

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/ebook-logica-de-programacao.jpg) ](https://www.treinaweb.com.br/ebook/logica-de-programacao/)

Recentemente foi liberado o código-fonte utilizado no computador que guiou a missão *Apollo* que teve como principal objetivo levar o homem à lua (na tão famigerada corrida espacial entre a União Soviética e os EUA), o *Apollo Guidance Computer*.

> https://github.com/chrislgarry/Apollo-11

Se você navegar no repositório acima encontrará diversos códigos-fonte com instruções como essas:

```assembly
PROGLARM	CS	DSPTAB +11D
		MASK	OCT40400
		ADS	DSPTAB +11D

MULTEXIT	XCH	ITEMP1		# OBTAIN RETURN ADDRESS IN A
		RELINT
		INDEX	A
		TC	1

MULTFAIL	CA	L
		AD	BIT15
		TS	FAILREG +2

		TCF	MULTEXIT

```

São instruções da linguagem [*AGC Assembly Language*](https://www.ibiblio.org/apollo/assembly_language_manual.html), uma variante da *Assembly*, que por sinal, é de *baixo nível*.

Um programa escrito em uma dessas linguagens, chamadas de *baixo nível*, é composto por uma série de *instruções de máquina* que determinam quais operações o processador deve executar. Essas instruções são convertidas para a linguagem que o processador entende, que é a linguagem binária (sequência de bits `0` e `1`), que é categorizada como *First-generation programming language (1GL)*, em livre tradução: *linguagem de programação de primeira geração*.

## Linguagens de alto nível

Com a popularidade dos computadores criou-se um “problema”: alta demanda por software e, consequentemente, por programadores. Talvez você esteja pensando que isso não é exatamente um problema, e sim uma coisa boa, uma tendência, um novo mercado. Faz sentido, até certo ponto. O problema era encontrar mão de obra qualificada para codificar àquelas instruções tão complicadas.

Com isso, novas linguagens surgiram e, cada vez mais, aproximavam-se da linguagem humana. Isso abriu “fronteiras” para que uma enorme gama de novos desenvolvedores se especializassem. Tais linguagens são denominadas como sendo de *alto nível*. As linguagens modernas que hoje conhecemos e usamos são de *alto nível*: C, [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "PHP"), [Java](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-java/ "Java"), [Rust](https://www.treinaweb.com.br/blog/o-que-e-rust/ "Rust"), [C#](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-c-sharp/ "C#"), [Python](https://www.treinaweb.com.br/blog/o-que-e-python/ "Python"), [Ruby](https://www.treinaweb.com.br/blog/o-que-e-a-linguagem-de-programacao-ruby/ "Ruby") etc.

> Quanto mais próxima da linguagem da máquina, mais *baixo nível* é a linguagem. Quanto mais próxima da linguagem humana, mais *alto nível* ela é.

## Paradigmas das linguagens de programação

Quando uma linguagem de programação é criada, a partir das suas características, ela é categorizada em um ou mais paradigmas.

A definição do dicionário Aurélio para “paradigma”:

> 1. Algo que serve de exemplo geral ou de modelo.

2. Conjunto das formas que servem de modelo de derivação ou de flexão.
3. Conjunto dos termos ou elementos que podem ocorrer na mesma posição ou contexto de uma estrutura.

O *paradigma* de uma linguagem de programação é a sua identidade. Corresponde a um conjunto de características que, juntas, definem como ela opera e resolve os problemas. Algumas linguagens, inclusive, possuem mais de um paradigma, são as chamadas *multi paradigmas*.

Alguns dos principais paradigmas utilizados hoje no mercado:

- Funcional
- Lógico
- Declarativo
- Imperativo
- [Orientado a objetos](https://www.treinaweb.com.br/blog/os-pilares-da-orientacao-a-objetos/ "Orientado a objetos")
- Orientado a eventos

[  ![Xamarin.Forms - MVVM com MVVMCross](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/xamarin.svg)   Curso Xamarin.Forms - MVVM com MVVMCross Conhecer o curso ](https://www.treinaweb.com.br/curso/xamarin-forms-mvvm-com-mvvmcross)

### Paradigma funcional

O foco desse paradigma está na avaliação de funções. Como na matemática quando temos, por exemplo, uma função `f(x)`:

```
f(x) = x + 2

```

`x` é um parâmetro (o valor de entrada) e, após a expressão ser avaliada, obtêm-se o resultado.

Se o valor de entrada for `2`, o resultado da avaliação da nossa função será `4`.

Algumas das linguagens que atendem a esse paradigma: *F#* (da Microsoft), *Lisp*, *Heskell*, *Erlang*, *Elixir*, *Mathematica*.

É possível desenvolver de forma “funcional” mesmo em linguagens não estritamente funcionais. Por exemplo, no *PHP*, que é uma linguagem multi paradigma, teríamos:

```php
