PARADIGMAS DE
PARADIGMAS DE
LINGUAGEM DE
LINGUAGEM DE
PROGRAMAÇÃO
PROGRAMAÇÃO
AULA 1
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
Ex.: C, C#, Objective-C, Java, Ruby, Python, Erlang,
Clojure, Prolog, Processing.
Linguagem de montagem (assembly)
Ex.: Microsoft Macro Assembler.
Linguagem de máquina
Ex.: conjunto de instruções para processadores
Intel.
Contador := 0;
LDA 4
STA A
0010 0100
0001 1010
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
Begin
var op1, op2, r: integer;
r := 0;
while op2 > 0 do
begin
r := r + op1;
op2 := op2 - 1;
end
End
Linguagem intermediária
Begin
var op1, op2, r: integer;
r := 0;
laço : if op2 = 0 go to fim;
r := r + op1;
op2 := op2 - 1;
go to laço;
fim: 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
.MODEL SMALL
.STACK
.CODE
.DATA
END
CODIGO
DADOS
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
Codigo fonte
entrada
Codigo objeto
compilador 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.

paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf

  • 1.
    PARADIGMAS DE PARADIGMAS DE LINGUAGEMDE LINGUAGEM DE PROGRAMAÇÃO PROGRAMAÇÃO AULA 1 AULA 1
  • 2.
    Apresentar os principaisparadigmas 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.
  • 3.
    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?
  • 4.
    Porque estudar Linguagemde 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>)
  • 5.
    Porque estudar Linguagemde 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.
  • 6.
    Definição de LP Linguagemutilizada 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).
  • 7.
    Tipos de LP Linguagemde alto nível Ex.: C, C#, Objective-C, Java, Ruby, Python, Erlang, Clojure, Prolog, Processing. Linguagem de montagem (assembly) Ex.: Microsoft Macro Assembler. Linguagem de máquina Ex.: conjunto de instruções para processadores Intel. Contador := 0; LDA 4 STA A 0010 0100 0001 1010
  • 8.
    Linguagem de altonivel ● 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).
  • 9.
    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.
  • 11.
    Linguagem de altonível Begin var op1, op2, r: integer; r := 0; while op2 > 0 do begin r := r + op1; op2 := op2 - 1; end End Linguagem intermediária Begin var op1, op2, r: integer; r := 0; laço : if op2 = 0 go to fim; r := r + op1; op2 := op2 - 1; go to laço; fim: End.
  • 12.
    Ling montagem (Assembly) Aforma geral de uma instruçao assembly e mnemonica [operando1[,operando2[,operando3]]]
  • 13.
    programa assembly mudao 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
  • 14.
    A memória édividida em um número arbitrário de segmentos .MODEL SMALL .STACK .CODE .DATA END CODIGO DADOS PILHA
  • 15.
    Registradores de UsoGeral 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.
  • 16.
    Sobre Assembly A linguagemde 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”.
  • 17.
    Linguagem de máquina ● Sãolinguagens 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.
  • 18.
  • 19.
    compilador Um programa decomputador 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 Codigo fonte entrada Codigo objeto compilador máquina saída
  • 20.
    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.
  • 21.
    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
  • 22.
    Termos usuais Código-Fonte: Criadovia 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.
  • 23.
    Evolução linguagens No começodos 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.
  • 24.
    Os mais veteranosna 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
  • 25.
    Paradigmas de linguagemde 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#)
  • 26.
    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 Pesquisee 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.