Você está na página 1de 26

PARADIGMAS DE

LINGUAGEM DE
PROGRAMAÇÃO
AULA 1
Apresentar os principais paradigmas de programação.
Introduzir programação imperativa
Introduzir programação orientada a objetos
Introduzir programação funcional
Introduzir programação Lógica
Introduzir conceitos básicos de implementação de
linguagens de programação.
MOTIVAÇÃO


Já em 1969, SAMMET listou 120 LPs que eram
relativamente bem difundidas. Desde então muitas
centenas de outras Lps surgiram (e desapareceram).

A maioria dos programadores, todavia, nunca chega
a usar mais do que umas poucas linguagens. Muitos
não usam mais que uma ou duas em sua inteira vida
profissional.

Por que então estudar linguagens de programação?
Porque estudar Linguagem de P


Melhorar sua habilidade de desenvolver algoritmos
(ex., uso eficiente de recursividade)

Melhorar sua habilidade de usar a LP (ex., uso
eficiente dos recursos de gerenciamento de
memória)

Aumentar o seu vocabulário de construção úteis de
programação (ex., declarações repita até <repeat-
until> e chaveamento <case> ou <switch>)
Porque estudar Linguagem de P

Melhor escolher uma linguagem de programação por
conhecer seus pontos fortes e fracos ( ++ depende muito
do conhecimento dos programadores).

Torna mais fácil aprender novas LPs e acompanhar a
tecnologia (ex., quanto mais LPs você souber, mais fácil
se torna aprender uma nova LP).

Torna mais fácil projetar novas linguagens de
programação (ex.,algumas interfaces de usuário podem
adquirir contornos de uma“linguagem de programação”).

• E por último, abrangência de formação.
Definição de LP

Linguagem utilizada para enviar instruções


a um computador. Como qualquer
linguagem, apresenta símbolos e regras
para a combinação desses símbolos.
(adaptado de Downing et al. Dictionary of
computer and Internet terms).
Tipos de LP

Linguagem de alto nível Contador := 0;

Ex.: C, C#, Objective-C, Java, Ruby, Python, Erlang,


Clojure, Prolog, Processing.

Linguagem de montagem (assembly) LDA 4


STA A
Ex.: Microsoft Macro Assembler.

Linguagem de máquina
0010 0100
Ex.: conjunto de instruções para processadores 0001 1010
Intel.
Linguagem de alto nivel

São linguagens voltadas para o usuário (programador).

Os comandos das linguagens apresentam um nível mais alto de
abstração e próximos da linguagem humana.

Necessitam de programas especiais (compiladores ou
interpretadores) para traduzir o código para linguagem de
máquina.
Vantagens: têm maior portabilidade podendo ser executadas em
várias plataformas com pouquíssimas modificações; não exigem
conhecimento do código de máquina.
Desvantagens: as rotinas geradas são mais genéricas e portanto
mais complexas e por isso são mais lentas e ocupam mais
memória (o código não é tão otimizado).
Linguagem de montagem (assembly)

São linguagens voltadas para a máquina e para o usuário.

São linguagens intermediárias entre a linguagem de
máquina e a linguagem de alto nível.

As instruções são simplificações da linguagem de
máquina que usam código mnemônicos (em inglês).
Vantagens: comandos com sintaxe mais inteligível que
nas linguagens de máquina.
Desvantagens: alguns mnemônicos ainda são de difícil
compreensão; ainda dependente da arquitetura do
computador em questão.
Linguagem de alto nível Linguagem intermediária
Begin Begin
var op1, op2, r: integer; var op1, op2, r: integer;
r := 0;
r := 0;
while op2 > 0 do
laço : if op2 = 0 go to fim;
begin
r := r + op1;
r := r + op1;
op2 := op2 - 1;
op2 := op2 - 1;
go to laço;
end
fim: End.
End
Ling montagem (Assembly)

A forma geral de uma instruçao assembly e


mnemonica
[operando1[,operando2[,operando3]]]
programa assembly muda o tamanho do
cursor

.MODEL SMALL ;modelo de memória


.STACK ;espaço de memória para instruções do programa na pilha
.CODE ;as linhas seguintes são instruções do programa
mov ah,01h ;move o valor 01h para o registrador ah
mov cx,07h ;move o valor 07h para o registrador cx
int 10h ;interrupção 10h
mov ah,4ch ;move o valor 4ch para o registrador ah
int 21h ;interrupção 21h
.DATA
x db 1
END ;finaliza o codigo do programa
A memória é dividida em um
número arbitrário de segmentos

CODIGO

.MODEL SMALL
DADOS
.STACK

.CODE

.DATA

END PILHA
Registradores de Uso Geral
AX BX CX DX (16 bits)
AH/AL BH/BL CH/CL DH/DL (8 bits)

AX: Acumulador
Usado em operações aritméticas.
BX:Base
Usado para indexar tabelas de memória (ex.: índice de vetores).
CX:Contador
Usado como contador de repetições em loop e movimentação
repetitiva de dados.
DX:Dados
Uso geral.
Sobre Assembly

A linguagem de programação Assembly pode ser


considerada como uma família de linguagens já que
cada arquitetura de processador possui a sua.
Seu nome é frequentemente abreviado como ASM e é
muito comum o uso do termo Assembler para se
referir à linguagem embora isso seja errado, pois,
Assembler é a palavra usada para denominar o
programa que traduz o código Assembly, de fato, uma
possível tradução para o termo Assembler é
“montador”.
Linguagem de máquina


São linguagens voltadas para a máquina.

São baseadas no código binário utilizado diretamente pelo
computador.

Cadeias de 0s e 1s.

As instruções variam de processador para processador.
Vantagens: produz o único conjunto de instruções que um
computador entende sem um tradutor, criando códigos
concisos e eficientes além de serem consideravelmente
menores do que uma versão escrita em C.
Desvantagens: pouca portabilidade (em geral, um
programa para um processador não serve para outro);
programas não são estruturados e de difícil compreensão;
manutenção e correção de erros extremamente difícil.
Ling maquina
compilador

Um programa de computador que recebe um texto em


uma linguagem e gera texto equivalente em outra
linguagem. O texto usado na entrada é chamado de
código-fonte e o texto na saída é chamado de código-
objeto entrada

Codigo fonte compilador Codigo objeto máquina

saída
compilador

Durante a compilação, o código fonte é analisado
(análise léxica, sintática e semântica), é gerado um
código intermediário e são construídas tabelas de
símbolos, alocam-se as áreas de memória para
variáveis e atribui-se os registradores a serem
utilizados, e é finalmente gerado o código objeto em
linguagem binária de máquina.

Em alguns compiladores, é gerado um código
intermediário em Assembly (que pode ser visualizado
pelo programador) e que em seguida passa pelo
montador para gerar finalmente o código objeto em
linguagem de máquina.
Primeiro compilador: A-0 (1952)

Grace Hopper, programadora do Harvard Mark I


Em 1949 contratada para desenvolver software para o
UNIVAC
A-0: programas que calculam seno, coseno, etc.
gravados em fita.
Programa desvia execução para posição na fita. Não é
exatamente um compilador....mas deu grandes ideias
para serem refinadas depois
Evoluções: A1 até A-3 → pseudocódigo
Termos usuais

Código-Fonte: Criado via editor de textos, contém os comandos da


linguagem de programação (C++, Pascal...) e serve como entrada para
o compilador.
Código-Objeto (PO) ou Arquivo Objeto: Criado pela conversão do PF
em linguagem de máquina. É gerado pelo montador, compilador ou
interpretador, quando não há erros no PF (extensões do código-objeto
mais comuns: .OBJ, .o)
Ligador ou Linkeditor: Combina o PO com as bibliotecas necessárias
a geração do PE (por exemplo, extensões das bibliotecas .DLL ou .LIB).
Programa Executável: Código passível de execução pelo SO
(extensão do PE: .EXE)
Tempo de Compilação: Intervalo de tempo decorrido para conversão
do PF em PO.
Tempo de Execução: Começa após a ativação do PE.
Evolução linguagens

No começo dos anos 90, o Fortran e o Pascal renasceram e


voltaram a ser surpreendentemente populares, mesmo quando
a C++ e a C dominavam o cenário. No meio dessa década, o
JavaScript e o Java cresceram rapidamente, ao lado de
linguagens mais jovens como Perl, PHP ou Visual Basic.

Nos anos 2000, o C começou a perder protagonismo para


algumas das alternativas já citadas ou outras mais novas,
como C#, Python ou Objetive C. Esta última cresceu com o
auge do iOS, e se consolidou com a popularidade absoluta do
Java, JavaScript e Python (esta última crescendo no âmbito da
IA), enquanto que as demais alternativas lutando para manter
a sua relevância.
Os mais veteranos na programação são fiéis ao Fortran e
Cobol, e grandes empresas seguem com sistemas quase
insubstituíveis e baseados nessas linguagens. Sem falar nas
plataformas de nicho, como Scala, R, Clojure ou Rust, que
geram muito interesse na comunidade de desenvolvedores.

Linha de Tempo das linguagens


https://en.wikipedia.org/wiki/Timeline_of_programming
_languages
Paradigmas de linguagem de prog

Atualmente existem quatro paradigmas de linguagens


de programação em uso comum:

Imperativas (e.g. C, Pascal, Fortran)

Funcionais (e.g. LISP, Scheme)

Lógicas/Declarativas (e.g. Prolog)

Orientadas-a-Objetos (e.g. Java, C++, C#)
exercicio

Leia os artigos
https://codeberryschool.com/blog/ptbr/qual-linguagem-
de-programacao-e-a-ideal-para-voce/
https://www.isbrasil.info/blog/5-nichos-de-programacao
-para-ficar-de-olho-nos-proximos-anos.html

Pesquise e elabore um ranking da atual posição das


linguagens de programação mais populares no
momento, explique como você chegou a este ranking,
qual critério adotou.

Você também pode gostar