Buscar

E-book 1 - Paradígmas de Linguagens de Programação - Bruno Zolotareff dos Santos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 52 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 52 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 52 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PARADIGMAS DE 
LINGUAGENS DE 
PROGRAMAÇÃO
E-book 1
Bruno Zolotareff dos Santos
Neste E-Book:
INTRODUÇÃO ����������������������������������������������4
COMPREENDENDO OS 
PARADIGMAS E SUAS 
APLICAÇÕES; FORMAR UMA VISÃO 
ABRANGENTE E SISTÊMICA DO 
CENÁRIO CONTEMPORÂNEO DE 
DESENVOLVIMENTO DE SOFTWARE � 5
Paradigmas e suas aplicações �������������������������������5
O QUE É UM PARADIGMA? ��������������������� 7
LINGUAGENS DE PROGRAMAÇÃO 
E SUAS CATEGORIAS �������������������������������12
Linguagens de Baixo Nível ��������������������������������12
Linguagens de Médio Nível �������������������������������17
Linguagens de Alto Nível ����������������������������������20
Classificação das Linguagens de Programação 24
Critérios de Avaliação de Linguagens; 
Projetos de Linguagens ���������������������������������������� 27
Domínios de programação e ambientes de 
programação ��������������������������������������������������������� 29
APLICAÇÕES CIENTÍFICAS E 
MILITARES ���������������������������������������������������30
APLICAÇÕES COMERCIAIS ������������������� 32
2
INTELIGÊNCIA ARTIFICIAL ��������������������34
SISTEMAS DIVERSOS ������������������������������36
EVOLUÇÃO DAS PRINCIPAIS 
LINGUAGENS DE PROGRAMAÇÃO �����39
TIPO DE SISTEMA ��������������������������������������41
A LINGUAGEM DE PROGRAMAÇÃO 
PROLOG �������������������������������������������������������43
A LINGUAGEM DE PROGRAMAÇÃO 
JAVA ������������������������������������������������������������� 44
CONSIDERAÇÕES FINAIS ����������������������47
SÍNTESE ������������������������������������������������������ 48
3
INTRODUÇÃO
Em Paradigmas de Linguagens de Programação, 
conheceremos os principais conceitos relaciona-
do a esta disciplina, suas funcionalidades e seus 
domínios� Assim, vamos adquirir habilidades para 
escolher determinadas tecnologias de acordo com 
o paradigma específico para o projeto de software.
4
COMPREENDENDO OS PARADIGMAS 
E SUAS APLICAÇÕES; FORMAR UMA 
VISÃO ABRANGENTE E SISTÊMICA 
DO CENÁRIO CONTEMPORÂNEO DE 
DESENVOLVIMENTO DE SOFTWARE 
Paradigmas e suas aplicações
Muitos estudantes de computação precisam entrar 
nos métodos atuais de programação, principalmente 
no paradigma da programação orientada a objetos 
(SEBESTA, 2018), que é bem utilizado no mercado 
de trabalho atual� Entretanto, todos querem aprender 
da maneira mais rápida e fácil possível�
Para isso, o estudante de tecnologia (entre eles o de 
programação) precisa lidar com conceitos básicos 
da programação, mesmo que às vezes não pareça 
muito útil no começo de seu aprendizado�
Os conceitos relacionados à arquitetura e aos prin-
cipais aspectos das linguagens de programação for-
mam a base do conhecimento (TUCKER; NOONAN, 
2009)� Para entender qualquer tecnologia existente, 
bem como as novas linguagens que surgem, estu-
dar os paradigmas facilita a sua aprendizagem e 
atualização�
A área de programação de computadores relacio-
na-se com muitos cursos de nível superior, assim, é 
bastante comum que conceitos já estudados voltem 
a fazer parte de alguma tecnologia atual�
5
Portanto, conhecer os Paradigmas de Linguagem de 
Programação fará com que você tenha um conheci-
mento geral dos principais aspectos das linguagens�
Você pode decidir, de acordo com o projeto de sof-
tware, qual linguagem é a mais apropriada. Neste 
módulo, há dois tópicos referentes a metodologias 
e projetos de software. Além disso, você terá uma 
visão de muitas linguagens de programação ao es-
tudar os paradigmas de linguagem de programação�
Apesar de muitos terem o foco em linguagens como 
o Java, considerado o precursor da programação 
orientada a objetos no mercado de trabalho, há 
outras linguagens em uso que abordam os diversos 
conceitos da programação� Algumas de diferentes 
níveis: baixo, médio e alto�
A tendência de quem trabalha com programação 
é escrever os códigos da maneira mais simples e 
direta, independentemente da linguagem, com uma 
metodologia de programação baseada em técnicas 
declarativas, isto é, com código voltado direto para 
o objetivo�
Nesta disciplina, diversas técnicas serão abordadas 
gradualmente, a fim de que você possa entender e 
aplicar os conceitos relacionado ao estudo de progra-
mação� Aconselho que você preste bastante atenção 
nos estudos que sempre teste os conceitos com os 
códigos de seu material se necessário�
Agora que já sabemos que há um estudo mais apro-
fundado na linguagem de programação, abordaremos 
os conceitos dos paradigmas para entendê-los em 
detalhes� 
6
O QUE É UM 
PARADIGMA?
Paradigma é uma forma de dizer que há um pen-
samento em determinado assunto, que envolve o 
seu entendimento e que determina sua realidade 
de acordo com a ideia�
Os Paradigmas de Linguagem de Programação atuam 
na organização das ideias e envolvem modelos inter-
pretativos� Cada modelo tem uma conceitualização 
de uma realidade�
Como estudantes de tecnologias, aprenderemos que 
conceitos são esses e por meio dos quais podere-
mos determinar qual paradigma de programação se 
enquadra melhor com alguma realidade de projeto 
em que podemos atuar� A seguir, abordamos os vá-
rios tipos�
Programação procedural
Um programa é uma sequência de instruções que 
operam em uma memória passiva� O design do pro-
grama é igual ao do algoritmo� A programação pro-
cedural é então o método comum para implementar 
procedimentos algorítmicos�
Programação orientada a objetos
A programação orientada a objetos possui classes e 
interfaces� Para esse tipo de programação, a mani-
7
pulação das informações é realizada pelos objetos, 
ao utilizar encapsulamento de dados, polimorfismo, 
abstração e herança� Desse modo, o conteúdo das 
variáveis dos objetos define o estado do programa.
Em um programa, os métodos inerentemente passi-
vos dos objetos são executados no fluxo sequencial 
do programa�
Podcast 1 
Programação orientada a aspectos 
A programação orientada a aspectos é considerada 
uma extensão da programação orientação a obje-
tos, pois se baseia na formulação modular de as-
pectos para a hierarquia de classes (preocupações 
transversais)�
Este tipo de programação não é realmente um para-
digma abrangente, visto que ela é uma adição à orien-
tação do objeto, ou seja, entendida como insuficiente.
Programação concorrente 
Um programa contém várias execuções simultâne-
as, isto é, realiza várias tarefas computacionais� A 
ordem da execução das tarefas não é completamente 
definida, mas há uma coordenação dos recursos 
computacionais�
Programação funcional 
A programação funcional consiste na descrição da 
relação das funções matemáticas� Dito de outra for-
8
https://famonline.instructure.com/files/142260/download?download_frd=1
ma, ela enfatiza a aplicação de funções, não conhece 
estado� Além disso, os programas funcionais podem 
ser executados simultaneamente�
Programação lógica 
A execução de um programa consiste na resposta a 
uma pergunta� Assim, a programação lógica é basea-
da no cálculo da lógica de predicados, o que favorece 
estilos de programação declarativa (VIEBRANTZ, 
2019). Oferece ainda uma grande flexibilidade na 
busca de soluções inteligentes�
Os estilos de programação mostrados podem ser 
divididos em duas áreas:
 ● Programação imperativa: quando os comandos 
para controlar o cálculo são formulados, a progra-
mação processual é imperativa�
 ● Programação declarativa: são as declarações so-
bre objetos formulados� Quando o processo está em 
segundo plano, a programação funcional e lógica é 
declarativa�
Pode-se argumentar que o estilo imperativo-procedu-
ral está em um nível comparativamente baixo de abs-
tração� Podemos comparar isso em ambas seções 
(Java e Scala), que são subsequentes do programa 
que calculam a soma dos quadrados dos números 
ímpares de uma matriz (Tabela 1)�
9
Procedural em Java Funcional em Scala
public static double 
sumAdLados(double[] array) { 
int sum = 0�0; 
 for (int i = 0; i < array�
length; i++) { 
 if (array[i]% 2 == 1) 
 sum += array[i] * 
array[i] 
 } 
return sum; 
}
def sumAdLados(array: 
Array[Double]): Double = 
array.filter(x => x % 2 == 
1)�map(x => x * x)�sum
Tabela 1: Comparativo entre linguagem procedural e funcional 
Fonte: Elaboração própria.
Comparando o comprimento das duas formulações, 
você pode achá-las desiguais� É bom lembrar que, 
com maior modularização, você sempre pode obter 
programas mais curtos� Mas esse é exatamente o 
ponto aqui� A programação funcional suporta modu-
larização muito melhor do que a processual�
A expressão do exemplo funcional consiste em qua-
tro elementos: os dados (matriz) de uma operação 
de filtro que procura números ímpares, quadrados 
de números e, por fim, a soma. 
O programa permanece consistentemente neste alto 
nível de abstração, e os componentes básicos do 
cálculo são claramente visíveis�
A formulação concisa é possível porque, no Scala, 
você pode definir funções através de literais e, em 
seguida, passá-las para outras funções� 
10
A utilização de literais de função é dada como se 
fosse uma String ou um Object qualquer� Isso ofere-
ce mais possibilidades e permite construir códigos 
altamente compactos e reutilizáveis�
Em contraste, a forma processual não pode ser 
simplesmente dividida em blocos de função� Para 
entendê-lo, precisamos executá-lo no nível mais bai-
xo, elemento por elemento� Embora tenhamos uma 
sequência de instruções em Java, temos uma única 
expressão no Scala�
A programação da colateralidade também requer um 
afastamento do pensamento puramente imperativo, 
uma vez que as ações concorrentes não podem ser 
previstas com precisão� A orientação a objetos é um 
conceito que combina os pontos de vista imperativos 
e declarativos�
Basicamente, podemos dizer que programas comple-
xos podem ser mais bem compreendidos declarati-
vamente� O pensamento imperativo é mais adequado 
para o controle de processos�
11
LINGUAGENS DE 
PROGRAMAÇÃO E SUAS 
CATEGORIAS
Linguagens de Baixo Nível
Agora, estudaremos o desenvolvimento das lingua-
gens de programação, começando pela linguagem 
de máquina Assembly, uma linguagem de baixo nível� 
Assembly: significa “montagem”; é conhecida como 
a linguagem de máquina que utiliza códigos, além de 
ser reconhecida por dispositivos ligados ao hardware, 
como os microcontroladores�
A linguagem Assembly é uma forma legível de huma-
nos entenderem um tipo de linguagem de máquina 
ou um código de máquina que seja a sequência real 
de bits e bytes, lido pelo processador do computador�
Antes de entrar na programação do sistema, você 
deve lembrar alguns fatos básicos sobre a estrutura 
do computador na memória�
O computador consiste em um grande número de 
componentes individuais, como memória, disco rí-
gido, placa de vídeo e periféricos (teclado, monitor 
e impressora)�
O foco está no processador da CPU, que tem de co-
ordenar todos os dispositivos uns com os outros� 
12
Assim, o sistema de barramento está disponível para 
comunicação com as partes individuais (SCHMIDT, 
2008)�
A CPU é dividida novamente em unidade de controle 
e memória interna na forma de registradores� Em 
geral, fica mais fácil para as pessoas entenderem 
palavras e as converterem para o sistema binário, 
octais ou hexadecimais para ler e programar�
Portanto, as pessoas normalmente escrevem código 
na linguagem Assembly e, em seguida, o convertem 
com um ou mais programas no formato de linguagem 
de máquina compreendido pelo processador�
Há diversas linguagens Assembly para diferentes 
arquitetura de computadores, por isso, estudaremos 
alguns códigos de Assembly que funcionam em uma 
arquitetura 8086�
Estes registos foram dados após a tarefa de deter-
minados nomes, a partir dos quais as abreviaturas 
podem ser derivadas (Tabela 2):
classe contração significado notas adicionais 
Registros 
gerais 
AX Acumulador Divisão em byte alto 
(AH) e byte baixo (AL) 
BX Registrador de 
base 
Divisão em byte alto 
(BH) e byte baixo (BL) 
CX Contagem 
Register 
Divisão em byte alto 
(CH) e byte baixo (CL) 
DX Registo de 
dados 
Divisão em byte alto 
(DH) e byte baixo (DL) 
Registro de 
ponteiro 
SP Ponteiro de pilha Usado para endereçar 
a pilha 
13
classe contração significado notas adicionais 
BP Ponteiro de 
base 
Usado para endereçar 
a pilha 
IP Ponteiro de 
instrução 
Deslocamento do 
próximo comando 
Registrador 
de índice 
SI Índice de fonte Suporte para 
endereçamento 
DI Índice de 
destino 
Suporte para 
endereçamento 
Registro de 
segmento 
CS Segmento de 
código 
Aponta para o segmen-
to de código atual 
DS Segmento de 
dados 
Aponta para o segmen-
to de dados atual 
SS Segmento de 
pilha 
Aponta para o segmen-
to de pilha atual 
ES Segmento extra Aponta para outro 
segmento de dados
Tabela 2: A b r e v i a t u r a s d e c o m a n d o s d e A s s e m b l y 
Fonte: Adaptada de Schmidt (2008).
Em síntese, pode-se notar que os registros gerais são 
divididos em seções alta e baixa� Para algumas ope-
rações, um registro “metade” é suficiente. Portanto, 
você pode abordar essas seções individualmente�
Como já mencionado, há bandeiras além dos regis-
tros que são as células de memória individuais, cada 
uma com o valor 0 ou 1�
Esses sinalizadores (ou contadores) também têm 
designações específicas, das quais deduzimos seus 
significado e tarefa. Você precisa diferenciar os si-
nalizadores de status para eles serem definidos pelo 
processador, e os sinalizadores de controle podem 
ser definidos pelo programa.
14
Lembre-se de que o importante é você conhecer esse 
tipo de linguagem, na qual poderá se aprofundar mais 
em Assembly, caso assim deseje� Porém, esse não 
é o intuito desta disciplina; aqui teremos uma abor-
dagem geral e conheceremos o paradigma de cada 
linguagem de programação apresentada�
Na Tabela 3, temos alguns sinalizadores e controles 
de Assembly com que precisamos nos familiarizar�
Classe Contração Nome Significado
Sinalizadores 
de status
CF Leva Bandeira Carregam a 
bandeira
AF Bandeira de trans-
porte auxiliar
Ajudar a transferir 
bandeira
ZF Zero bandeira Bandeira zero
SF Bandeira de sinal Bandeira de sinal
PF Bandeira de 
paridade
Bandeira de 
paridade
DE Bandeira Overflow Bandeira estouro
Sinalizadores 
de controle
TF Bandeira 
armadilha
Ajudar a transferir 
bandeira
IF Sinalizador 
Interromper Ativar
Bandeira de 
interrupção
DF Bandeira de 
direção
Direcionalidade
Tabela 3: Abreviaturas de sinalizadores de controle em Assembly. 
Fonte: Adaptada de Schmidt (2008).
Se o resultado de uma operação for 0, o sinalizador 
zero será configurado. Isso significa que ele tem 
valor 1, o que pode ser verificado e usado em seu 
programa�
15
Com cada nova geração de processadores, novos 
sinalizadores são adicionados� No entanto, eles em 
geral não são documentados nem são importantes 
para a programação simples do montador�
Analisemos um exemplo (Tabela 4) de um código 
escrito em Assembly para escrever um “Olá Mundo.
section �text
 global _start ;must be declared for using gcc
_start: ;tell linker entry point
 mov edx, len ;message length
 mov ecx, msg ;message to write
 mov ebx, 1 ;file descriptor (stdout)
 mov eax, 4 ;system call number (sys_write)
 int 0x80 ;call kernel
 mov eax, 1 ;system call number (sys_exit)
 int 0x80 ;call kernel
section �data
msg db ‘Olá Mundo!’, 0xa ;our dear string
len equ $ - msg ;length of our dear 
string
Tabela 4: Exemplo de código em Assembly. Fonte: Adaptado de 
Coding Ground (s. d.). 
saiba mais
Você pode testar esse código em um compilador 
(Assembler) online de Assembly, que se encontra 
disponível em:
https://www.tutorialspoint.com/compile_assem-
bly_online.php.
16
https://www.tutorialspoint.com/compile_assembly_online.php
https://www.tutorialspoint.com/compile_assembly_online.phphttps://www.tutorialspoint.com/compile_assembly_online.php
https://www.tutorialspoint.com/compile_assembly_online.php
Para executar códigos em Assembly, é necessário 
um programa chamado Assembler (Compilador 
de Assembly)� Uma boa opção para você testar o 
código anterior é instalando o programa NASM�
Agora que você já estudou do que trata o Assembly, 
é muito importante conhecer sua importância, van-
tagens e desvantagens e a qual paradigma da pro-
gramação pertence�
As linguagens de baixo nível têm vantagens e 
desvantagens:
 ● Vantagens: execução rápida e baixa ocupação 
de espaço em memória, bem como funcionalidade 
eficiente.
 ● Desvantagens: o código gerado por um determi-
nado processador não é utilizado em outra arquite-
tura, apresentando problemas de portabilidade, além 
disso, os códigos não são estruturados, tornando 
seu desenvolvimento mais difícil�
O Assembly é considerado uma linguagem pura-
mente imperativa, com procedimentos sequenciais� 
Por exemplo: execute tarefa1, tarefa2��� e assim 
por diante�
Linguagens de Médio Nível
As linguagens de médio nível são tipos de lingua-
gem intermediária voltados à interação entre ser 
humano e máquina; é considerada um tipo de pro-
17
gramação não muito fácil de desenvolver (SEBESTA, 
2018)�
A linguagem mais conhecida desse nível intermedi-
ário é a linguagem C, que foi desenvolvida principal-
mente para uma melhor interação que o Assembly�
A linguagem C é derivada de duas outras linguagens: 
Algol 68 e BCPL� Seu desenvolvimento se deve so-
bretudo aos sistemas operacionais e compilado-
res� Por exemplo, é utilizada na construção do UNIX, 
que em sua versão anterior era escrito por Assembly 
(SCHMIDT, 2008)�
A primeira versão da linguagem C saiu em 1972, es-
crita por Dennis Ritchie no Bell Laboratories, e depois 
houve uma evolução na padronização da linguagem 
C em 1989, a ANSI C�
Para conhecer melhor esse tipo de linguagem, algu-
mas de suas características são: ela é estruturada, 
imperativa e procedural; possui uma programação 
com sub-rotinas, laços de repetição e estrutura em 
blocos; apresenta comandos em sequência para a 
execução de rotinas e procedimentos�
A linguagem C suporta alguns tipos de variáveis 
(Tabela 5):
TIPO VALORES VÁLIDOS
Char letras e símbolos: ‘a’, ‘b’, ‘H’, ‘^’, ‘*’,’1’,’0’
Int de -32767 até 32767 (apenas números 
inteiros)
18
Float de -3�4 x 1038 até +3�4 x 10+38 com até 6 
dígitos de precisão
Double de -1�7 x 10308 até +1�7 x 10+308 com até 
10 dígitos de precisão
Tabela 5: Tipos de variáveis em C. Fonte: Adaptada de Excript. 
Note que o código de programação feito na lingua-
gem C é compilado, segue o exemplo de código na 
Tabela 6:
Código em C
#include <stdio�h>
int main()
{
 printf(“Olá Mundo”);
 return 0;
}
Tabela 6: Exemplo de código em C. Fonte: Elaborada pelo autor 
(2019).
As linguagens de médio nível têm vantagens e 
desvantagens:
 ● Vantagens: têm as mesmas características de uma 
linguagem de baixo nível e, ao mesmo tempo, utiliza 
operações de linguagens de alto nível� Por exemplo, 
podem utilizar operadores: if..else, for, while. É pos-
sível programar para diversas funções, como jogos 
e programas comerciais�
 ● Desvantagens: têm dificuldade na compreensão 
da sintaxe, pois não é possível utilizar objetos como 
em Java, além de não terem muitas bibliotecas avan-
çadas para desenvolvimento visual, como em C++�
19
http://excript.com/curso-c.html
Para executar o código no computador, é preciso ter 
um compilador de linguagem C; no Windows, pode-se 
executá-lo no Visual Studio com suporte a C/C++� 
Mas é possível instalar o MinGW e executar todos 
os códigos apresentados�
Linguagens de Alto Nível
As linguagens de alto nível são tipos de linguagens 
voltadas ao entendimento humano e que utilizam 
uma sintaxe estruturada mais fácil de entender� 
Assim, é considerada independente da arquitetura 
de computador� 
Esse tipo de linguagem utiliza uma sintaxe e semân-
tica mais perto do entendimento do programador, 
porém, é feita uma tradução para o código de má-
quina, tornando o processo lento�
Algumas linguagens de alto nível se destacam, como 
Java, Python, Swift, C#, C++, Lua. Lembre-se de que, 
para serem executadas, você precisará ter um com-
pilador, interpretador ideal para cada tecnologia�
A conversão para o código de máquina é feita com 
alguns processos diferenciados, de acordo com a 
tecnologia� Por exemplo, o Java utiliza um sistema 
de compilação e interpretação� Trata-se de uma tec-
nologia híbrida que funciona sobre uma Java Virtual 
Machine (JVM), cujos códigos são conhecidos como 
Bycode do Java, por ser considerável uma linguagem 
portátil�
20
SAIBA MAIS
Saiba mais sobre a JVM da Oracle, ao ler Intro-
dução ao Java Virtual Machine, que se encontra 
disponível em: https://www.devmedia.com.br/intro-
ducao-ao-java-virtual-machine-jvm/27624� Acesso 
em: 01 ago� 2019�
O �NET da Microsoft, diferentemente da JVM da 
Oracle, possui um outro sistema, no qual diversas 
linguagens de programação passam para uma 
Linguagem Intermediária em seu framework. Depois 
de vários processos, passa para a linguagem de 
máquina�
Ambas tecnologias utilizam linguagens de alto nível, 
por isso, é interessante saber o motivo de o processo 
de tradução para uma linguagem de máquina ser 
considerado lento em comparação a uma linguagem 
de baixo nível�
A pertinência de conhecer as máquinas virtuais é 
que elas são cada vez mais utilizadas, e uma das 
linguagens de alto nível que têm se destacado desde 
seu lançamento é a linguagem Python, a qual utiliza 
um processo semelhante ao Java, a Python Virtual 
Machine�
Ambas as linguagens (Java e Python) geram byteco-
de, que é o resultado da compilação e interpretação 
(Figura 1):
21
https://www.devmedia.com.br/introducao-ao-java-virtual-machine-jvm/27624
https://www.devmedia.com.br/introducao-ao-java-virtual-machine-jvm/27624
Código do 
ObjetoCompilador Execução SaídaCódigo
Figura 1: Sistema de compilação com bycode. Fonte: Elaboração 
própria.
O Java pode ser executado diretamente no prompt 
de comando ou no shell do Linux como qualquer 
outra linguagem de programação� Contudo, para ser 
executado, é preciso ter a Java Runtime Environment 
(JRE), que possui a JVM embutida no pacote dispo-
nível para instalação�
Escolher uma linguagem de alto nível requer uma 
avaliação dos domínios que essa tecnologia envol-
ve� Por exemplo, o Java é escolhido para aplicação 
de diversos projetos, porém, o Python é utilizado 
na maioria das aplicações em Ciência de Dados e 
tudo que envolva a Inteligência Artificial. Assim, sua 
escolha deve se pautar pela lógica e necessidade 
do projeto, pois as linguagens de programação têm 
sintaxes diferentes�
Vamos comparar a codificação de Java e Python, o 
código na Tabela 7 imprime em sua tela: “Olá Mundo; 
Oi Pessoal e 6”, a mesma saída nas duas linguagens. 
É muito importante comparar apenas a sintaxe, com 
isso, podemos perceber que o Python tem certa van-
tagem em relação à simplicidade do código com o 
mesmo resultado:
22
Código em Java Código em Python
public class Test {
 public static void 
main(String args[]) {
 String array[] = {“Olá 
Mundo”, “Oi pessoal”, 
“6”};
 for (String i : array) {
 System�out�
println(i);
 }
 }
}
stuff = [“Olá Mundo!”, “ Oi 
pessoal!”, 6]
for i in stuff:
 print(i)
Tabela 7: E x e m p l o d e c ó d i g o e m J a v a e P y t h o n . 
Fonte: Elaboração própria.
As linguagens de alto nível têm vantagens e 
desvantagens:
 ● Vantagens: não dependem da arquitetura do pro-
cessador, bem como têm maior portabilidade e es-
calabilidade; podem ser compiladas, interpretadas 
ou híbridas como o Java e o Python; sua sintaxe e 
semântica possuem um nível complexo, porém, mais 
fácil de se entender devido ao maior ou menor grau 
de estruturação�
 ● Desvantagem: têm um processo de codificação 
para traduzir em linguagem de máquina que ocupa 
maismemória e que, na maioria dos casos, é mais 
lenta�
23
Classificação das Linguagens 
de Programação
1ª Geração
 ● A linguagem de programação era a nível binário 
para máquinas� Por exemplo:
 ● Binário = 1001 1001 100 110
 ● Equivale ao decimal = 7746
 ● Comunicação direta com o hardware.
 ● Programação realizada para esse nível é uma se-
quência de uns e zeros, um esquema difícil de se 
elaborar�
2ª Geração
 ● Conhecidas como linguagens de programação 
Assembly (Montagem)�
 ● Cada Assembly utiliza seu Assembler (compilador 
específico para cada arquitetura de processadores).
 ● Utiliza linguagem simbólica para representar as 
sequências dos números binários:
 ● msg label mov goto
3ª Geração
 ● Conhecida como orientada ao usuário nos anos 
1960, utiliza Compiladores e Interpretadores�
24
 ● Desenvolvida principalmente para estudos cien-
tíficos e, mais tarde, para aplicações na iniciativa 
privada, ou seja, uso comercial�
 ● Linguagens como C, PL/I, ADA e ALGOL já supor-
tavam algumas instruções para cálculos lógicos e 
aritméticos, instruções de controle de Entrada/Saída 
e fluxo de execução condicionais e incondicionais.
 ● Dividida em duas classes de linguagens que são 
consideradas declarativas:
 ● Funcionais: que utilizam funções de recursividade 
(Linguagem LISP)�
 ● Lógica: aplicada à lógica matemática (Prolog)�
4ª Geração
 ● São tipos de linguagem menos complexos que as 
linguagens da 3ª geração; projetada para resolver 
problemas dos usuários parcialmente ou para apli-
cações completas�
 ● Apresentam menos erros e custos mais baixos de 
manutenção�
 ● Códigos com níveis mais altos sem muitos proble-
mas de depuração�
 ● Algumas das linguagens são utilizadas em ferra-
mentas para a geração de pacotes gráficos, como 
Scilab, MATLAB�
 ● Alguns exemplos de linguagens dessa geração são 
SQL, VHML, LOTUS 1-2-3 e PHP�
25
5ª Geração
 ● Linguagens conhecidas principalmente na utiliza-
ção de aplicações em Inteligência Artificial.
 ● Eficiência em algoritmos genéricos e apresentação 
de alta complexidade�
 ● Utilização para simulação e representação do 
conhecimento�
 ● Algumas linguagens conhecidas, como Prolog, 
Jason, Cartago, Moide, OpenCV e Netlogo�
Diferentemente de outras linguagens de programa-
ção, esse tipo de linguagem consegue guardar e 
processar informações de modo que represente o 
conhecimento� Algumas dessas informações são 
baseadas em gerações anteriores, como o JaCaMo, 
que é a junção dessas três linguagens utilizadas 
no departamento de pesquisa da Politécnica da 
Universidade de São Paulo�
SAIBA MAIS
Conheça mais sobre a JaCaMo, lendo Welcome 
to the JaCaMo Project Website, artigo disponível 
em: http://jacamo.sourceforge.net/� 
26
http://jacamo.sourceforge.net/
Critérios de Avaliação de 
Linguagens; Projetos de 
Linguagens
Alguns critérios são utilizados para avaliar os riscos 
de um projeto de software. Há diversas maneiras de 
medir a qualidade assegurada de um software, como 
a técnica do ponto de função, na qual os códigos 
precisam ser testados e avaliados de acordo com 
contratos e normas estabelecidos para determinado 
projeto�
Não há projetos de software 100% seguros, visto que 
todos podem conter falhas� Entretanto, as institui-
ções utilizam cada vez mais as normas internacio-
nais, metodologias que aumentem a confiabilidade 
e maturidade no processo de desenvolvimento de 
softwares.
As empresas buscam alguns fatores em projetos de 
software: Confiabilidade, Legibilidade, Redigibilidade, 
Custos, Portabilidade, Tempo de vida (SEBESTA, 
2018). Os softwares também desgastam com o 
tempo, o que é uma das principais preocupações 
das empresas�
As linguagens com sintaxe e de aprendizado mais 
rápido são bastante utilizadas pelas empresas, de-
vido à mão de obra e aos custos envolvidos�
As empresas utilizam softwares com tecnologias 
novas principalmente pela facilidade de usar e aplicar 
em diferentes produtos� A manutenção e padroniza-
27
ção também são critérios considerados importantes 
nos projetos de software (TUCKER; NOONAN, 2009).
A confiabilidade está ligada ao número de vezes 
que a linguagem ou tecnologia envolvida falhou ao 
executar certas aplicações� Isso envolve tanto a ar-
quitetura quanto o conhecimento dos paradigmas 
de programação�
Os custos do processo de desenvolvimento de sof-
tware envolvem diversos fatores, dentre os quais po-
demos citar o treinamento e a aplicação de normas�
SAIBA MAIS
Há metodologias específicas aplicadas ao de-
senvolvimento de software, dentre elas se desta-
cam: CMMI; ISO/IEC 15504 e MPS�BR�
Os critérios de qualidade envolvem vários tipos de 
projeto e devem ser aplicados principalmente a sof-
tware que envolvam outras empresas a nível inter-
nacional, as quais exigem níveis altos de maturidade 
das empresas do Brasil�
Você deve estar ciente de que o desenvolvimento de 
softwares recorre a técnicas da Engenharia e de que 
há padrões e normas a serem seguidos�
A Programação Orientada a Objetos (POO) é ba-
seada em metodologias como a Unified Modeling 
Language (UML), mantida pela Object Management 
Group (OMG), que é responsável por manter os pa-
drões internacionais�
28
Padronizar a programação leva o desenvolvimento a 
um alto nível de serviços, o que é um grande critério 
na escolha do tipo de linguagem a ser escolhida� A 
UML possui modelos de programação para POO, al-
guns muito conhecidos e aplicados pela Engenharia 
de Software (TUCKER; NOONAN, 2009).
As metodologias adotadas nos projetos são de extre-
ma importância, visto que os critérios de qualidade, 
segurança e, principalmente, custos são determinan-
tes em algumas escolhas�
Você talvez já tenha escutado a respeito da arqui-
tetura SOA, uma programação em camadas MVC, 
DAO, ORM, FDD e SCRUM� Trata-se de metodologias 
utilizadas em projetos que estudaremos detalhada-
mente em tópicos finais desta disciplina.
Domínios de programação e 
ambientes de programação
Esta parte de nosso estudo é para conhecermos me-
lhor as principais aplicabilidades das linguagens de 
programação� Resumidamente temos: Aplicações 
Científicas e Militares; Aplicações Comerciais; 
Inteligência Artificial; e Sistemas diversos.
29
APLICAÇÕES 
CIENTÍFICAS E 
MILITARES
Em muitas universidades do mundo, desenvolvem-
-se e utilizam-se linguagens de programação para 
fins acadêmicos e, muitas vezes, trabalham em pro-
jetos com os militares� Por exemplo, nos Estados 
Unidos da América há centros de pesquisa, como 
o Massachusetts Institute of Technology (MIT), que 
trabalha junto com o Pentágono, o Departamento de 
Defesa norte-americano�
Mesmo aqui no Brasil, que há uma interação com 
o Instituto de Pesquisas Energéticas Nuclear (Ipen) 
da Universidade de São Paulo junto com a Marinha 
do Brasil�
Dentre suas aplicações, estão:
 ● Estrutura de dados simples e avançadas�
 ● Funcionais e lógicas�
 ● FORTRAN�
 ● ALGOL, C, C++, JAVA, dentre outras�
Apesar de utilizar diversas linguagens de programa-
ção, dependendo do projeto, apenas algumas lin-
guagens podem ser adotadas, isso acontece devido 
ao paradigma que é adotado e, principalmente, por 
normas do governo, sendo que algumas linguagens 
30
são homologadas especialmente para aquele tipo 
de aplicação (SEBESTA, 2018)�
Por exemplo, em um projeto crítico, no qual se coloca 
a vida de pessoas em risco, normalmente não se usa 
o paradigma de programação orientada a objetos, 
porque não se encaixa nas normas estabelecidas 
para esse tipo de projeto�
As linguagens orientadas a objetos utilizam compila-
dores, interpretadores e bibliotecas com Inteligência 
Artificial, como a máquina virtual do Java. Em uma 
aplicação de risco, uma mudança pode ser fatal na 
execução�
31
APLICAÇÕES 
COMERCIAIS
Para organizar o alto número de dados e proces-
samento, usa-se a linguagem Common Business 
Oriented Language (Cobol)� Essa linguagem foi de-
senvolvida, em 1959, especialmente para negócios; 
desde então, tem sido utilizada em muitos compu-
tadores mainframes, sobretudoem instituições fi-
nanceiras (TUCKER; NOONAN, 2009)�
A linguagem tem a capacidade de gerar relatórios 
bem definidos, armazena números e caracteres e 
realiza operações aritméticas� Por ser ainda mui-
to utilizada, há versões da linguagem estruturada e 
orientada a objetos�
Apesar de ser uma tecnologia antiga, é bem-conceitu-
ada, pois tem sido modificada aos poucos no merca-
do devido à falta de mão de obra� Outras tecnologias 
são utilizadas nesse processo, dentre elas o Java�
SAIBA MAIS
Aprofunde seus conhecimentos em Cobol, aces-
sando um artigo da Exame, que está disponível 
em: https://exame.abril.com.br/tecnologia/usada-por-
-bancos-e-esquecida-por-programadores-linguagem-
-de-programacao-ganha-folego-com-tecnologia/� 
32
https://exame.abril.com.br/tecnologia/usada-por-bancos-e-esquecida-por-programadores-linguagem-de-programacao-ganha-folego-com-tecnologia/
https://exame.abril.com.br/tecnologia/usada-por-bancos-e-esquecida-por-programadores-linguagem-de-programacao-ganha-folego-com-tecnologia/
https://exame.abril.com.br/tecnologia/usada-por-bancos-e-esquecida-por-programadores-linguagem-de-programacao-ganha-folego-com-tecnologia/
Você deve estar pensando, mas por que o Cobol? 
Há grandes empresas envolvidas e milhões de dados 
sendo processados nessa tecnologia, além do fato 
de que ela funciona muito bem, mesmo sendo antiga�
De fato, muitas empresas não querem fazer isso, 
pois existem diversos mainframes da IBM que ainda 
utilizam essa tecnologia e, por essa razão, há um 
grande suporte� A própria empresa oferece treina-
mentos e instalou polos no Brasil que exploram essa 
tecnologia�
Trata-se de uma linguagem nativa no paradigma im-
perativo e estruturado; é considerada antiga, mas não 
ultrapassada� Foi criada para um único propósito: o 
comercial�
REFLITA
Você trocaria algo que está funcionando mui-
to bem por outra que envolve riscos e muitos 
gastos?
33
INTELIGÊNCIA 
ARTIFICIAL
A Inteligência Artificial (IA) é um domínio de lingua-
gem inicialmente científica, que ainda não possui 
conceitos totalmente definidos. Apesar de muitos 
falarem desse conceito, é considerado antigo, pois 
começou na Segunda Guerra Mundial�
Algumas tecnologias e linguagens envolvem a IA, 
tais quais a Machine Learning (Aprendizado de 
Máquina) e a Data Mining (Mineração de Dados) 
(JONES, 2018)�
Comercialmente, já é utilizada por grandes empresas 
como a IBM com o Watson, computador cognitivo, 
pela Apple com o Siri e o Google AI�
SAIBA MAIS
Saiba mais sobre o tema, lendo o artigo His-
tória da Inteligência Artificial� Disponível 
em:https://www.institutodeengenharia.org.br/
site/2018/10/29/a-historia-da-inteligencia-artificial/� 
A Inteligência Artificial é utilizada em diversas lin-
guagens de programação, porém, as que mais se 
destacaram inicialmente foram as linguagens LISP 
e Prolog�
34
https://www.institutodeengenharia.org.br/site/2018/10/29/a-historia-da-inteligencia-artificial/
https://www.institutodeengenharia.org.br/site/2018/10/29/a-historia-da-inteligencia-artificial/
A linguagem LISP colaborou com diversas funções 
no passado para linguagens utilizadas para AI� Em 
1968, Terry Winograd desenvolveu uma ferramenta 
para interagir com o usuário, na época considerado 
revolucionário (JONES, 2018)�
A linguagem Prolog foi criada em 1972, visando so-
bretudo à representação do conhecimento, e utilizada 
para processamento de linguagem natural� Esse tipo 
de tecnologia tinha um foco de IA, mais tarde, tanto 
o LISP quanto o Prolog foram substituídos por novas 
linguagens que fazem as mesmas funções (ARALDI, 
2018)� 
A Inteligência Artificial é utilizada desde celulares, 
websites com chatbot, jogos e medicina. Há aplica-
ções em androides reais, como a Shophia, o primeiro 
robô a ter uma cidadania e a utilizar a IA (NISHIKIORI, 
2018)� 
Os conceitos de aplicações de IA em linguagens de 
programação podem ser utilizados respeitando os 
paradigmas� Entretanto, linguagens de programação 
desenvolvidas para programação com multiagen-
tes com foco apenas em AI não são muitas até o 
momento� Dentre essas linguagens, podemos des-
tacar o Jade, Jason e Netlogo que são baseadas 
na linguagem Java� Há outras linguagens, como o 
AgentSpeak e o JaCaMo, todas com objetivo de pro-
gramar para AI�
35
SISTEMAS DIVERSOS
Há muitas linguagens de programação construídas 
para diversos propósitos, não apenas para uma deter-
minada aplicação, ou seja, são aplicadas tanto para 
fins científicos quanto comerciais (SEBESTA, 2018).
As linguagens C/C++ ficaram muito famosas graças 
às aplicações em sistemas operacionais como o 
UNIX, mais tarde o uso da programação orientada 
a objetos�
O C++ por muito tempo dominou o mercado, apesar 
de haver outras tecnologias (Delphi, Visual Basic)� O 
C++ dominou a preferência até a chegada do Java, 
quando houve uma mudança mundial de paradigma 
em relação à programação orientada a objetos�
Aplicações financeiras e multimídias poderiam ser re-
alizadas pela web. O Java realmente parou o mundo 
da computação em 1994; quando entrou no mercado, 
foi a principal tecnologia e uma das principais lingua-
gens de programação mais aceitas comercialmente�
Com o advento do Java da antiga empresa Sun 
MicroSystems, adquirida pela Oracle, outras empre-
sas aproveitaram seus conceitos, servindo como 
base para tecnologias como o �NET da Microsoft e 
as ferramentas da Adobe Microsystems�
Você pode até pensar “Não é possível que o Java seja 
tão magnífico assim”, pois há coisas novas como 
Rails, Swift e Python. Há sim, mas o Java foi baseado 
36
em C++ e Smalltalk, apresentou estabilidade, portabi-
lidade e outras coisas que a maioria das tecnologias 
da época não tinha ou eram considerados ruins�
Vamos lá, por que estamos falando de Java? Apenas 
para entendermos que as aplicações com linguagens 
orientadas a objetos utilizam padrões da Engenharia 
de Software que estudaremos em outros tópicos, 
mas que é de grande importância para alguns 
softwares.
Se você escolheu Python ou Swift de acordo com o 
paradigma, excelente� Agora está pensando como um 
Engenheiro de Software. Os sistemas devem possuir 
metodologias para o seu desenvolvimento�
A seguir, abordamos algumas aplicações com lingua-
gens de programação diversas no mundo comercial:
 ● Visual Basic 6 / Delphi: Relatório em Bancos em 
geral eram utilizados principalmente com uma fer-
ramenta de relatório conhecida como CristalReport� 
Há ainda instituições que utilizam essas tecnologias�
 ● C: Utilizado para programação de baixo nível, pro-
gramação de microcontroladores e em Sistemas 
Operacionais como o Unix, Linux, FreeBSD e 
Windows.
 ● C++: Tem as mesmas aplicações do C, porém, é 
muito utilizado para programação de Jogos� Há di-
versas aplicações com essa linguagem, sistemas 
para lojas, bancos, dentre outros�
 ● Java: Possui praticamente todos os tipos de apli-
cações, muito semelhante à linguagem C++, porém, 
37
há portabilidade e adaptabilidade muito alta� Por 
exemplo: desenvolvimento de aplicativos para ce-
lulares, desenvolvimento desktop, desenvolvimento 
Web, módulos e sistemas para carros e aeronaves, 
satélites e Inteligência Artificial.
 ● C#/VB.NET: Linguagens bastante utilizadas comer-
cialmente, consideradas um forte concorrente da 
linguagem Java; têm uma grande semelhança com 
as aplicações comerciais utilizadas com o Java, po-
rém, não têm portabilidade como no Java ou Python�
 ● Python: Uma linguagem muito utilizada na ciência 
de dados e Inteligência Artificial, tem se tornado cada 
vez mais ativa no mercado, possui características 
de portabilidade como o Java, é considerada uma 
linguagem com a sintaxe mais limpa e com menos 
códigos para executar a mesma tarefa em compara-
ção com a linguagem do Java� O Google utiliza muito 
essa linguagem em seus produtos�
 ● Swift: É uma linguagem desenvolvida pela Apple 
para produtos da própria empresa e para o Linux� 
Sua linguagem é feita para ter uma sintaxe simples, 
por isso é considerada mais rápida que o Python em 
seu processamento�● Ruby: Uma linguagem de programação utilizada 
com foco na web; considerada de fácil aprendizado, 
ficou popular nas mídias por um tempo. Essa lingua-
gem possui algumas semelhanças com o Java e o 
Python em suas funcionalidades�
38
EVOLUÇÃO DAS 
PRINCIPAIS LINGUAGENS 
DE PROGRAMAÇÃO
Historicamente, os conceitos de linguagem têm 
sido frequentemente direcionados para otimizar o 
desempenho do computador� Você pode ler isso e 
concordar que eles realmente foram moldados pela 
arquitetura do computador, apesar de ser parcial-
mente verdade�
As linguagens de programação nem sempre são 
orientadas a hardware, pois, nos primeiros compu-
tadores, era praticamente impossível fazer alguma 
programação de hardware. Os computadores eram 
mecânicos, como o modelo Piloto ACE de Alan Turing 
construído no período da Segunda Guerra Mundial 
(SEBESTA, 2018)� 
Os computadores atuais ainda correspondem em 
grande parte à arquitetura de von Neumann� O ma-
temático, físico e pioneiro da computação John von 
Neumann explorou a utilização de linguagem de com-
putação para ser utilizada em arquitetura de hardware 
em sua época, porém, não foi muito favorável no 
começo, apresentando muitas limitações�
O protótipo das línguas de von Neumann reflete-se 
em linguagens e conceitos da programação procedu-
ral� Um exemplo clássico são as linguagens de pro-
gramação C e Pascal, o desenvolvimento de um pro-
grama é orientado na formulação de procedimentos� 
 
A programação orientada a objeto já se desvia do 
39
pradrão utilizado em programação procedural� Ela 
determina a estrutura de um programa por meio de 
suas interfaces e classes, ou seja, a natureza dos 
dados e suas operações�
No entanto, a programação procedural está sem-
pre inseridas onde as sequências são apresenta-
das, ou seja, em métodos e funções de classe� Em 
particular, as funções de classe em Java são uma 
relíquia do paradigma procedural (SEBESTA, 2018)� 
A experiência com orientação a objetos levou à per-
cepção de que a eficiência de uma linguagem de 
programação não deve ser o único critério decisivo�
Outra experiência histórica também afirma que a 
melhor exploração de hardware não pode ser alcan-
çada fazendo-se os processos computacionais� A 
arquitetura de hardware apresenta interfaces de co-
municação modular, sendo mais acessível a algumas 
linguagens de programação abstratas�
Conheceremos algumas linguagens de programação 
e alguns códigos para nos familiarizarmos com as 
linguagens de programação� Diferentemente de uma 
disciplina de Algoritmos de Programação, o intuito 
do nosso estudo é conhecer os paradigmas, além 
de como e onde aplicar�
A fim de compilar a maioria dos códigos, é preciso 
ter instalado ou utilizar compiladores online, que 
é recomendável� 
40
TIPO DE SISTEMA
Há também outra característica distintiva para lin-
guagens de programação, que tem mais a ver com 
formulação do que com a execução de um programa�
Para linguagens de programação tipadas dinamica-
mente, a verificação de tipo ocorre exclusivamente no 
tempo de execução� Variável, parâmetros de função 
e resultados não são fornecidos com uma especifi-
cação de tipo neste conceito� Isso permite um alto 
grau de polimorfismo.
Para linguagens estaticamente tipadas, a verificação 
de tipo é concluída (por exemplo, Pascal) ou parcial-
mente (por exemplo, Java) pelo compilador� Isso 
permite mensagens de erro antecipadas e geração 
de códigos eficientes. Por outro lado, tem menor 
flexibilidade e menos regras, de tipo mais complexas 
são aceitas�
Sistemas com inferência de tipos (derivação automá-
tica do tipo de dados) são tipificados estaticamente 
no núcleo� No entanto, eles facilitam a programa-
ção, permitindo que o compilador determine o tipo 
de variável, se possível� Como os exemplos de pro-
gramação funcional mostram, isso pode melhorar 
consideravelmente a legibilidade de um programa�
Para linguagens fortemente tipados, como C, não 
há verificação de tipo completo. Alta flexibilidade e 
eficiência são alcançadas pelo preço da incerteza. 
Basicamente, essa distinção pode ser combinada 
41
com todos os paradigmas de programação superior 
(Orientação a objetos, programação lógica e progra-
mação funcional)�
Nota-se que Java é de certa forma um híbrido� Isso 
também se aplica ao teste de tipo� Os desenvolve-
dores de linguagem favorecem o teste estático, con-
forme refletido no conceito de tipos genéricos.
Assim, todas as linguagens de programação de nível 
superior têm conceitos de gerenciamento automático 
e segurança de memória�
42
A LINGUAGEM DE 
PROGRAMAÇÃO 
PROLOG
Prolog significa programação em lógica. Isso quer 
dizer que o Prolog constrói uma ponte entre os con-
ceitos de linguagens de programação� Portanto, per-
tence ao contexto geral�
O princípio básico da programação lógica consiste 
em descrever declarativamente as relações necessá-
rias. O controle do processo fica em segundo plano. 
A ordem de execução pode afetar significativamente 
a eficiência de um programa, mas não deve ter influ-
ência sobre o significado e a correção do programa.
O Prolog é o mais importante representante da pro-
gramação lógica, foi criado na França na década de 
1970� Depois de experimentar um verdadeiro boom 
nos anos 1980, ele recuou para o segundo plano� 
É ainda o principal exemplo de uma linguagem de 
programação baseada na ideia de programação ló-
gica e um objeto e uma ferramenta para pesquisa 
no campo da Inteligência Artificial.
A programação tem aplicação prática na forma de 
conhecimento baseado em diversos sistemas e utili-
zados por sistemas especialistas� Há uma variedade 
de sistemas Prolog comercialmente disponíveis de 
forma gratuita� Embora sejam diferentes em alguns 
detalhes, quase todos são baseados em um núcleo 
comum (Edinburgh Prologue)�
43
A LINGUAGEM DE 
PROGRAMAÇÃO 
JAVA
Linguagem que foi inicialmente desenvolvida para 
dispositivos móveis, como liquidificador, geladeiras 
e outros objetos (KUSZKA, 2019)� O nome era OaK 
(SBROCCO; MACEDO, 2012), mas foi trocado para 
Java porque já havia uma empresa com esse nome�
O Java foi utilizado em aparelhos portáteis, por ser 
uma linguagem baseada no Smalltalk e principal-
mente na linguagem C++� No começo, o Java não 
fez muito sucesso, porém, a equipe do Java, que per-
tencia à Sun MicroSystems, teve a ideia de embutir 
o Java no Browser, tecnologia que ficou conhecido 
como Applets�
As possibilidades de utilização de transações finan-
ceiras pela internet trouxeram grande atenção mun-
dial aos investidores� Além disso, o Java embutido 
na Web possibilitou a exploração de recursos mul-
timídia online�
Mais tarde, o Java ficou conhecido por sua porta-
bilidade, escalabilidade, segurança e alto grau de 
acoplação de dispositivos móveis� Surgiram novas 
tecnologias para o Java, principalmente ferramentas 
para Web, conhecidas como Servlets, e aplicações 
poderosas com EJBs�
44
O Java trouxe conceitos e melhorias em muitas tec-
nologias e, o mais importante para o público, era uma 
tecnologia grátis com licenças semelhantes a GPL 
utilizada pelo Software Livre.
Milhares de desenvolvedores migravam do C, C++, 
Delphi, Visual Basic para o Java� Em pouco tempo, 
era a tecnologia que estava nos celulares, na TV, nos 
carros, nos satélites e onde mais poderia imaginar�
Os concorrentes não aguentaram a grandeza do 
Java e seu poder, a Microsoft, que não acreditava 
na Internet, voltou atrás e fez uma versão semelhante, 
conhecida como .NET com o C#.
A programação orientada a objetos já era conhecida 
do público programador, porém, pouco difundida� 
Graças ao Java, esse padrão foi adotado no mundo 
todo, um legado à humanidade�
O Java foi construído em 1991, porém ficou co-
nhecido alguns anos mais tarde com a equipe de 
James Gosling, conhecido como o “Pai do Java” 
(GUIMARÃES, 2012)�
O Java nunca parou de evoluir; os aparelhos celulares 
sempre utilizaram o Java, no começo uma tecnologia 
conhecida como JME� Muitas tecnologias surgiram 
ou foram influenciadas peloJava, como .NET, Python, 
Ruby, Jade e Jason�
Podcast 2 
45
https://famonline.instructure.com/files/142261/download?download_frd=1
Hoje, o Java é ensinado em faculdades e se mostra 
firme, enquanto algumas linguagens que prometiam 
ser um forte concorrente sumiram com o tempo� 
Mas apesar de parecer perfeita, não é bem assim� 
Há alguns tipos de aplicação em que os paradigmas 
do Java não são bem aceitos�
O Java funciona junto com linguagens como o C/
C++, Python e outras e pertence à Oracle, que está 
mudando alguns conceitos do Java�
O JDK, a partir da versão 11, já será pago, algumas 
IDEs (como o Netbeans) não serão mais mantida 
pela Oracle� Como será o futuro do Java, ninguém 
sabe ainda� Porém, ainda haverá versões OpenJDK 
e IDEs como o Apache Netbeans e Eclipse gratuitas�
46
CONSIDERAÇÕES FINAIS
Neste módulo, conhecemos algumas linguagens 
de programação, o que é um paradigma e os domí-
nios e critérios de escolhas para desenvolvimento 
de software.
Você deve ter notado que o texto é uma introdução 
ao conhecimento dos paradigmas de programa-
ção, e que teve um grande foco nas linguagens de 
programação�
Conhecemos a sintaxe e as diferenças de linguagens 
que possibilitaram um novo horizonte da importân-
cia de saber os tipos e as ideias relacionadas aos 
paradigmas de programação�
Além disso, os paradigmas não são os únicos crité-
rios para projetos de software, há muitos conceitos 
envolvidos que, conforme explicado, estudaremos 
posteriormente�
Todo conhecimento adquirido ajuda a compreen-
der melhor as linguagens de programação e a fazer 
escolhas, ter opinião mais elaborada a respeito das 
tecnologias�
47
SÍNTESE
Paradigmas de Linguagem 
de Programação
1) Paradigmas e suas aplicações.
O estudo dos paradigmas de linguagens de programação 
vem da necessidade de conhecer o objetivo de cada técnica 
utilizada nas linguagens:
• Entendendo o que são.
• Tipos de paradigmas de linguagem de programação.
2) Linguagens e Projeto.
Conforme já explicado, há diversas linguagens de 
programação construídas para ideias e aplicações 
diferenciadas:
• Tipos de linguagem de programação.
• Por que os paradigmas são importantes para projeto de 
software.
3) Critérios e Domínios.
Os projetos de software têm alguns requisitos para a escolha 
de determinada tecnologia e linguagem de programação, em 
que os domínios fazem parte desse processo:
• Requisitos que envolvem aspectos da arquitetura e custos 
de projetos de software.
• Arquitetura da linguagem de programação.
4) Evolução das linguagens.
Conceitos históricos e sabedoria de que não é a linguagem 
de programação da moda que é a coisa mais importante, 
mas sim quais paradigmas utilizar em projetos de software:
• Histórico das linguagens.
• Evolução das linguagens e atualizações.
Referências 
Bibliográficas 
& Consultadas
ARALDI, A� A� R� Linguagem de Programação� 
Revista Ensino & Informação, 2018� Disponível 
em: https://www.ensinoeinformacao.com/computacao-
-linguagem-prolog� Acesso em: 16 jul� 2019�
GUIMARÃES, G� História da Computação� P@t 
News, 2012� Disponível em: http://www.dsc.ufcg.edu.
br/~pet/jornal/dezembro2012/materias/historia_da_
computacao.html� Acesso em: 18 jul� 2019�
JONES, M� T� As linguagens da IA� 19 jan� 2018� 
Disponível em: https://www.ibm.com/develo-
perworks/br/library/cc-languages-artificial-intelligence/
index.html� Acesso em: 22 jul� 2019�
KUSZKA, B� A evolução do Java até a era da nuvem� 
Canaltech 04 jul� 2019� Disponível em: https://www.
msn.com/pt-br/noticias/ciencia-e-tecnologia/a-evolu%-
C3%A7%C3%A3o-do-java-at%C3%A9-a-era-da-nuvem/
ar-AADREUK#page=2� Acesso em: 16 jul� 2019�
https://www.ensinoeinformacao.com/computacao-linguagem-prolog
https://www.ensinoeinformacao.com/computacao-linguagem-prolog
http://www.dsc.ufcg.edu.br/~pet/jornal/dezembro2012/materias/historia_da_computacao.html
http://www.dsc.ufcg.edu.br/~pet/jornal/dezembro2012/materias/historia_da_computacao.html
http://www.dsc.ufcg.edu.br/~pet/jornal/dezembro2012/materias/historia_da_computacao.html
https://www.ibm.com/developerworks/br/library/cc-languages-artificial-intelligence/index.html
https://www.ibm.com/developerworks/br/library/cc-languages-artificial-intelligence/index.html
https://www.ibm.com/developerworks/br/library/cc-languages-artificial-intelligence/index.html
https://www.msn.com/pt-br/noticias/ciencia-e-tecnologia/a-evolu%C3%A7%C3%A3o-do-java-at%C3%A9-a-era-da-nuvem/ar-AADREUK#page=2
https://www.msn.com/pt-br/noticias/ciencia-e-tecnologia/a-evolu%C3%A7%C3%A3o-do-java-at%C3%A9-a-era-da-nuvem/ar-AADREUK#page=2
https://www.msn.com/pt-br/noticias/ciencia-e-tecnologia/a-evolu%C3%A7%C3%A3o-do-java-at%C3%A9-a-era-da-nuvem/ar-AADREUK#page=2
https://www.msn.com/pt-br/noticias/ciencia-e-tecnologia/a-evolu%C3%A7%C3%A3o-do-java-at%C3%A9-a-era-da-nuvem/ar-AADREUK#page=2
MANZANO, J� A� N� G� Algoritmos: lógica para de-
senvolvimento de programação de computadores� 
28� ed� São Paulo: Érica, 2016 [Biblioteca Virtual].
MANZANO, J� A� N� G� Java 7: programação de 
computadores: guia prático de introdução, orien-
tação e desenvolvimento� São Paulo: Érica, 2011 
[Biblioteca Virtual].
MELO, A� C� V�; SILVA, F� S� C� Princípios de 
Linguagem de Programação� São Paulo: Edgar 
Blücher LTDA, 2003 [Biblioteca Virtual]�
NISHIKIORI, I� Nove curiosidades sobre Sophia, 
a primeira robô cidadã do mundo� Tech Tudo, 11 
ago� 2018� Disponível em: https://www.techtudo.
com.br/listas/2018/08/nove-curiosidades-sobre-
-sophia-a-primeira-robo-cidada-do-mundo.ghtml� 
Acesso em: 22 jul� 2019�
PAULA FILHO, W. P. Engenharia de software: funda-
mentos, métodos e padrões� 3� ed� São Paulo: LTC, 
2009 [Biblioteca Virtual]�
PRESSMAN, R� S�; MAXIM, B� R� Engenharia de 
Software: uma abordagem profissional. 8. ed. 
Porto Alegre: McGraw-Hill, 2016 [Biblioteca 
Virtual]�
PROGRAMADOR� História da Programação. 
Disponível em: http://www.programador.com.br/his-
toria-da-programacao.html� Acesso em: 18 jul� 2019�
https://www.techtudo.com.br/listas/2018/08/nove-curiosidades-sobre-sophia-a-primeira-robo-cidada-do-mundo.ghtml
https://www.techtudo.com.br/listas/2018/08/nove-curiosidades-sobre-sophia-a-primeira-robo-cidada-do-mundo.ghtml
https://www.techtudo.com.br/listas/2018/08/nove-curiosidades-sobre-sophia-a-primeira-robo-cidada-do-mundo.ghtml
http://www.programador.com.br/historia-da-programacao.html
http://www.programador.com.br/historia-da-programacao.html
SBROCCO, J� H� T� C�; MACEDO, P� C� Metodologias 
ágeis: engenharia de software sob medida. São 
Paulo: Érica, 2012 [Biblioteca Virtual]�
SCHMIDT, G� Introdução para o iniciante à 
Linguagem Assembly dos Microprocessadores 
ATMEL AVR (2008) Disponível em: http://www.avr-
-asm-download.de/beginner_pt.pdf� Acesso em: 25 
jul� 2019�
SEBESTA, R� W� Conceitos de linguagens de pro-
gramação� 11� ed� Porto Alegre: Bookman, 2018�
SOUZA, A� F� et al� Algoritmos e lógica de progra-
mação: um texto introdutório para a engenharia� 3� 
ed� Cengage, 2019 [Biblioteca Virtual]�
TUCKER, A� B�; NOONAN, R� E� Linguagens de 
Programação: Princípios e Paradigmas� 2� ed� 
McGraw-Hill, 2009.
VIEBRANTZ, A� Introdução a linguagem Scala� 
Disponível em: http://high5devs.com/2015/05/
intro-linguagem-scala-parte-1/� Acesso em: 25 jul� 
2019�
http://www.avr-asm-download.de/beginner_pt.pdf
http://www.avr-asm-download.de/beginner_pt.pdf
http://high5devs.com/2015/05/intro-linguagem-scala-parte-1/
http://high5devs.com/2015/05/intro-linguagem-scala-parte-1/
	_Hlk14325107
	_Hlk14321924
	_Hlk14325353
	_Hlk14322984
	_Hlk14324817
	_Hlk14325290
	_Hlk14326975
	_Hlk14161887
	_Hlk14332416
	_Hlk14327909
	_Hlk14327940
	_Hlk14327977
	_Hlk14338376
	Introdução
	CompreendeNDO os paradigmas e suas aplicações; formar uma visão abrangente e sistêmica do cenário contemporâneo de desenvolvimento de software 
	Paradigmas e suas aplicações
	O que é um Paradigma?
	Linguagens de Programação e suas categorias
	Linguagens de Baixo Nível
	Linguagens de Médio Nível
	Linguagens de Alto Nível
	Classificação das Linguagens de ProgramaçãoCritérios de Avaliação de Linguagens; Projetos de Linguagens
	Domínios de programação e ambientes de programação
	Aplicações Científicas e Militares
	Aplicações Comerciais
	Inteligência Artificial
	Sistemas diversos
	Evolução das principais linguagens de programação
	Tipo de Sistema
	A linguagem de programação Prolog
	A linguagem de programação Java
	Considerações finais
	Síntese

Outros materiais