Buscar

Cap 3 - Paradigmas - Concorrente, paralelo e imperativo

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 25 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 25 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 25 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 LINGUAGEM PARADIGMAS DE LINGUAGEM 
DE PROGRAMAÇÃODE PROGRAMAÇÃO
PARADIGMAS:PARADIGMAS:
CONCORRENTE,CONCORRENTE,
PARALELO EPARALELO E
IMPERATIVOIMPERATIVO
Autor: Esp. Douglas Salvador
Revisor : Rafae l Rehm
IN IC IAR
introduçãoIntrodução
Na sociedade moderna, podemos contar com inúmeras tecnologias da
informação. Nesse contexto em que a tecnologia tem papel de destaque, a
programação tem se revelado como algo de extrema importância no processo
educacional. É claro que a escolha da primeira linguagem de programação e
do paradigma de programação correspondente é essencial para o
desenvolvimento acadêmico e pro�ssional. Nos últimos cinquenta anos,
surgiram milhares de linguagens de programação pertencentes a vários
paradigmas de programação. No entanto, apesar do grande número de
linguagens de programação, existem apenas alguns conceitos de
programação verdadeiramente importantes e não há muitas linguagens que
sobreviveram por mais de dez anos. É essencial detectar quais são os
recursos adequados de uma linguagem de programação. Para tanto, vamos
abordar os conceitos, as aplicações e comparações entre os paradigmas de
linguagem de programação funcional, lógico, concorrente, paralelo e
imperativo.
O paradigma de programação imperativa é baseado na arquitetura de
computadores Von Neumann, introduzida na década de 1940. A arquitetura
de Von Neumann é a de hardware dominante nos computadores e consiste
em uma única CPU sequencial separada da memória e com dados canalizados
entre CPU e memória. Isso se re�ete no desenho das linguagens imperativas,
com:
Estados: representando células de memória com valores variáveis
Pedidos sequenciais: re�etindo a CPU sequencial única; e
Declarações de atribuição: re�etindo a tubulação.
EstudoEstudo
Comparativo:Comparativo:
ParadigmaParadigma
Funcional xFuncional x
ParadigmaParadigma
ImperativoImperativo
Programas imperativos são sequências de instruções (ou ordens) para
executar uma ação. Como a ordem das ligações afeta o valor de expressões,
uma questão importante é o sequenciamento adequado das ligações.
Portanto, a programação imperativa é caracterizada pela programação com
estados e comandos que modi�cam esses estados. Linguagens de
programação imperativas fornecem uma variedade de comandos para
estruturar o código e manipular os estados.
De acordo com o Gurbani et al.:
Programação imperativa é um paradigma de programação que
usa declarações que alteram um estado do programa. Da mesma
maneira que o humor imperativo nas línguas naturais expressa
comandos, um programa imperativo consiste em comandos para o
computador executar. A programação imperativa se concentra em
descrever como um programa opera. Toda linguagem de máquina
ou procedural se utiliza dos conceitos de programação estruturada
como Fortran, BASIC, Pascal, Linguagem COBOL, ALGOL e para
algoritmos matemáticos e linguagem C, bem como nos paradigmas
orientados a objetos como C++, JAVA, Perl, Ruby, C++ e Python.
Linguagens básicas também tem suporte a eventos imperativos
como Visual Basic e PHP que são linguagens de design da Web,
  também linguagens funcionais possuem compatibilidade com o
paradigma imperativo, como: VB.Net e C#, J# e F# (GURBANI et al.,
2017, p. 180, tradução nossa).
Geralmente, em linguagens de programação imperativas, uma sequência de
comandos pode ser nomeada, e o nome pode ser usado para chamar a
sequência de comandos. A sequência de comandos nomeada é chamada de
subprograma, procedimento ou função. Quando a programação imperativa é
combinada com subprogramas é chamada de programação procedural. O
paradigma imperativo é suportado por linguagens como Fortran (introduzido
em 1954), Cobol (1959), Pascal (1970), C (1971) e Ada (1979), entre outras.
Já o paradigma de programação funcional é baseado na teoria das funções
matemáticas, mais precisamente no cálculo lambda. Ele permite que o
programador pense sobre o problema em um nível mais alto de abstração,
incentivando o pensamento sobre a natureza do problema e não sobre a
natureza sequencial do mecanismo de computação subjacente.
Conforme Bird e Wadler,
Uma característica da programação funcional é que, se uma
expressão possui um valor bem de�nido, então a ordem em que
um computador pode transportar a aplicação não afeta o
resultado. Em outras palavras, o signi�cado de uma expressão é o
seu valor e a tarefa do computador é simplesmente obter tal
expressão e valor. As expressões em uma linguagem funcional
podem ser construídas manipulando e fundamentando funções,
como qualquer outro tipo de expressão matemática, usando leis
algébricas mais ou menos familiares. O resultado, é uma estrutura
conceitual para a programação que é ao mesmo tempo simples,
concisa, �exível e muito poderosa (BIRD; WADLER, 1988, p. 59,
tradução nossa).
As linguagens funcionais são motivadas e desenvolvidas pelas seguintes
perguntas: qual é a unidade apropriada de decomposição do programa e
como pode a linguagem melhorar e suportar a composição do programa a
partir de componentes independentes?
Uma linguagem de programação funcional geralmente possui três conjuntos
principais de componentes:
Objetos de dados: como uma lista ou uma matriz;
Funções internas: para manipular os objetos de dados básicos; e
Formas funcionais: também chamadas de funções de alta ordem,
para a construção de novas funções (como composição e redução).
A execução de programas funcionais é baseada em dois mecanismos
fundamentais: ligação e aplicação. A ligação é usada para associar valores aos
nomes. Dados e funções podem ser usados como valores. A aplicação de
função é usada para calcular novos valores. A programação funcional é
caracterizada pela programação com valores, funções e formas funcionais.
Uma característica importante da funcionalidade dos programas é a de
reduzir ou mesmo eliminar o impacto dos efeitos colaterais. Linguagens de
programação funcional são chamadas de aplicativas, pois as funções são
aplicadas a seus argumentos e não são processuais ou declarativas, pois as
de�nições especi�cam o que é calculado e não como é calculado. O
paradigma funcional é suportado por linguagens como LISP (1958), ML(1973),
Scheme (1975), Miranda (1982) e Haskell (1987).
praticarVamos Praticar
O paradigma funcional se difere em alguns pontos do paradigma imperativo. Por
exemplo: o paradigma funcional orienta que o código seja expresso por meio de
funções e evita a mutação de estado. Já o paradigma imperativo expressa o código
de uma forma diferente. Qual seria?
Assinale a alternativa correta com relação à forma de expressão do paradigma
imperativo.
a) O paradigma imperativo  expressa o código por meio da linguagem
estruturada, sem manipular os estados.
b) O paradigma imperativo é baseado e expressa o código por meio da teoria
das funções matemáticas.
c) O paradigma imperativo expressa o código somente com a linguagem
Fortran.
d) O paradigma imperativo expressa o código por meio de funções indiretas
ao computador.
e) O paradigma imperativo expressa o código por meio de comando diretos
ao computador.
O paradigma da programação lógica tem suas raízes no teorema
automatizado, do qual se originou a vertente de dedução. No processo de
dedução, alguns valores são computados. A criação desse paradigma de
programação é o resultado de uma longa história, que, na maior parte de seu
curso, decorreu dentro da lógica e, somente mais tarde, dentro da ciência da
computação.
O Prolog pode ser visto como uma realização prática da ideia de programas
lógicos. Começou como uma linguagem de programação para aplicativos de
processamento de idioma natural, mas, logo após, foi possível constatar que
ele podia ser usado como uma linguagem de programação de uso geral.
Originalmente, o Prolog foi implementado por Philippe Roussel, na forma de
um interpretador escrito em Algol-W. Um passo importante depois foi
alcançado por David H. Warren, que lançou, em 1983, uma máquina abstrata,
agora chamada WAM (WarrenAbstract Machine). Consiste em uma arquitetura
de máquina com um conjunto de instruções que serve como um alvo para
Paradigma Lógico:Paradigma Lógico:
Conceito eConceito e
AplicaçõesAplicações
máquinas independentes para compiladores de Prolog. O WAM tornou-se
uma base padrão para implementar o Prolog e outras programações lógicas.
O paradigma da programação lógica in�uenciou vários desenvolvimentos na
ciência da computação. Criou a noção de bancos de dados dedutivos que
estendem os bancos de dados relacionais, fornecendo recursos de dedução.
Um impulso adicional ao assunto veio inesperadamente dos japoneses, com o
Projeto de Quinta Geração para Sistemas de Computação Inteligentes (1982-
1991), em que o paradigma lógico de programação foi escolhido como base.
Mais recentemente, esse paradigma levou à programação lógica de restrições,
que realiza uma abordagem geral para computação em que o processo de
programação é limitado a uma geração de restrições (requisitos), de forma a
implementar uma programação lógica indutiva, que se torna uma abordagem
lógica para aprendizado de máquina.
O paradigma de programação lógica se difere substancialmente de outros
paradigmas de programação. Ele pode ser resumido pelos três recursos a
seguir:
A computação ocorre sobre o domínio de todos os termos de�nidos
em um alfabeto "universal".
Os valores são atribuídos às variáveis por meio de substituições
geradas automaticamente, denominadas uni�cadores gerais. Esses
valores podem conter variáveis, chamadas variáveis lógicas.
O controle é fornecido por um único mecanismo: retorno
automático.
A principal vantagem do paradigma de programação lógica reside em uma
enorme simplicidade e concisão; sua desvantagem tem a ver com as
restrições a um mecanismo de controle e o uso de um único tipo de dados.
Portanto, se uma estrutura tem a necessidade de ser modi�cada e
enriquecida para acomodá-la às necessidades habituais de programação,
devem-se fornecer várias construções de controle e introduzir outros tipos de
dados com as operações aritméticas habituais.
praticarVamos Praticar
O paradigma lógico de programação se difere bastante dos demais, ele possui
vantagens e desvantagens de uso, bem como é caracterizado por três recursos
essenciais. Com relação aos recursos e às vantagens e desvantagens do paradigma
lógico de programação, assinale a alternativa correta.
Figura 3.1 - Linguagens de programação agrupadas
Fonte: deniskot / 123RF.
a) Os três recursos essenciais do paradigma lógico são: domínio de dados
tipados, uni�cadores gerais e retorno automático. A principal vantagem é a
simplicidade e concisão. Sua desvantagem é o uso de um único tipo de
dados.
b) Os três recursos essenciais do paradigma lógico são: domínio de todos os
termos de�nidos, uni�cadores únicos e retorno automático. A principal
vantagem é a simplicidade e concisão. Sua desvantagem é o uso de um único
tipo de dados.
c) Os três recursos essenciais do paradigma lógico são: domínio de todos os
termos de�nidos, uni�cadores únicos e retorno sequencial. A principal
vantagem é a simplicidade e concisão. Sua desvantagem é o uso de um único
tipo de dados.
d) Os três recursos essenciais do paradigma lógico são: domínio de todos os
termos de�nidos, uni�cadores gerais e retorno automático. A principal
vantagem é a simplicidade e concisão. Sua desvantagem é o uso de um único
tipo de dados.
e) Os três recursos essenciais do paradigma lógico são: domínio de todos os
termos de�nidos, uni�cadores gerais e retorno automático. A principal
vantagem é a lógica e  a concisão. Sua desvantagem é o uso de um único tipo
de dados.
Um programa concorrente é uma ação de�nidora que pode ser executada
simultaneamente. Um programa sequencial especi�ca a execução de uma
lista de declarações; sua execução é chamada de processo. O programa que
se utiliza desse paradigma especi�ca dois ou mais programas sequenciais que
podem ser executados simultaneamente como processo paralelo. O
programa concorrente pode ser executado permitindo-se que os processos
compartilhem um ou mais processadores ou executando-se cada processo
em seu próprio processo. A taxa na qual os processos são executados
depende de qual abordagem é utilizada. Quando cada processo é executado
em seu próprio processador, cada um é executado em uma taxa �xa, mas de
forma desconhecida. Quando processos compartilham um processador, é
como se cada um fosse executado em um processador de velocidade variável.
A abordagem axiomática tem uma notável e�ciência em uma análise de caso
muito extensa. É, talvez, a técnica mais promissora para entender programas
ParadigmaParadigma
Concorrente:Concorrente:
Conceito eConceito e
AplicaçõesAplicações
concorrentes. Ela possui familiaridade com a lógica formal que é necessária
para o seu uso. No entanto, isso diminuiu a sua aceitação. Para resumir, há
três questões principais subjacentes ao design de uma notação, para
expressar um programa por meio da computação simultânea:
Como indicar execução simultânea?
Qual modo de comunicação entre processos usar?
Qual mecanismo de sincronização será utilizado?
Além disso, mecanismos de sincronização podem ser vistos como formas de
restringir a ordem de eventos ou como controle de interferência.
A di�culdade e ine�ciência de projetar programas concorrentes que usam a
espera ocupada levou à de�nição de semáforos. Os semáforos foram então
estendidos de duas maneiras:
(1) De�nidos como construtores que direcionam seu uso para um modo
estruturado, resultando em regiões críticas, monitores e expressões de
caminho;
(2) "Dados" que, quando adicionados à sincronização associada aos
semáforos, resultam da passagem de mensagens primitivas. Finalmente, a
interface processual dos monitores foi combinada com a passagem de
mensagens, resultando em uma chamada de procedimento remoto.
Os conceitos primordiais de programação sob a ótica do paradigma
concorrente nasceram a cerca de dez anos atrás. Toda essa experiência
prática aumentou o entendimento sobre como projetar tais programas, e o
desenvolvimento de técnicas formais aumentou a compreensão dos conceitos
básicos. Apesar de existir uma variedade de linguagens de programação,
existem apenas três tipos essencialmente diferentes: orientada a
procedimentos, orientada a mensagens e orientada a operações.
Um dos principais problemas da programação concorrente é o não
determinismo. Uma execução de um programa não é determinística se, em
algum momento, houver uma escolha do que fazer em seguida. O não
determinismo aparece naturalmente quando há simultaneidade: duas
atividades simultâneas são independentes, a especi�cação do programa não
pode dizer qual executa primeiro. Se houver vários encadeamentos prontos
para execução, em cada estado de execução, o sistema precisará escolher
qual thread executar a seguir. Essa escolha pode ser feita de diferentes
maneiras. Normalmente, há uma parte do sistema, chamada scheduler, que
faz a escolha. O não determinismo é muito difícil de lidar se puder ser
observado somente pelo usuário do programa. O não determinismo
observável, às vezes, é chamado de race condition.
praticarVamos Praticar
A di�culdade e ine�ciência de projetar programas concorrentes que usam a espera
ocupada levou à de�nição de semáforos. Assinale a alternativa que indica uma das
maneiras pela qual os semáforos foram então estendidos.
a) Como construtores que direcionam seu uso para um modo estruturado,
resultando em regiões críticas, monitores e expressões de caminho.
b) Como funções que direcionam seu uso para um modo estruturado,
resultando em regiões críticas, monitores e expressões de caminho.
c) "Dados" que, quando adicionados à sincronização associada aos
semáforos, resultam da passagem de noti�cações primitivas.
d) Como funções que direcionam seu uso para um modo paralelo, resultando
em regiões críticas, monitores e expressões de caminho.
e) Como funções que direcionam seu uso para um modo paralelo, resultandoem regiões críticas, dados e expressões de caminho.
O paradigma concorrente refere-se a um aplicativo que está executando em
mais de uma tarefa ao mesmo tempo. A simultaneidade é uma abordagem
usada para diminuir o tempo de resposta do sistema, utilizando uma única
unidade de processamento. A simultaneidade é a ilusão de paralelismo. No
entanto, na verdade, os blocos de uma tarefa não são processados
paralelamente. Dentro do aplicativo, há mais de uma tarefa sendo processada
por vez. Ele não encerra completamente uma tarefa antes de começar outra.
A simultaneidade é obtida por meio da operação de intercalação de processos
na unidade central de processamento (CPU) ou, em outras palavras, pela
alternância de contexto. Essa lógica é como o processamento paralelo:
aumenta a quantidade de trabalho concluído de cada vez.
EstudoEstudo
Comparativo:Comparativo:
ParadigmaParadigma
Concorrente xConcorrente x
Paradigma ParaleloParadigma Paralelo
Um conceito-chave para o estudo do paradigma concorrente e paralelo é a
independência: construir um programa com partes independentes. Isso é algo
complexo. Por exemplo: considere um programa que consiste em instruções
que são executadas uma após a outra. As instruções não são independentes,
pois são ordenadas por tempo. Para implementar a independência,
precisamos de um novo conceito de programação chamado simultaneidade.
Quando duas partes não interagem, dizemos que são simultâneas (quando a
ordem de execução de duas partes é dada, dizemos que são sequenciais).
Partes simultâneas podem ser estendidas para ter uma interação bem
de�nida.
A concorrência não deve ser confundida com o paralelismo. A concorrência é
um conceito de linguagem de programação, e paralelismo é um conceito de
hardware. Duas partes são paralelas se executarem simultaneamente em
saibamaisSaiba mais
O vídeo detalhando o conceito de
computação paralela traz alguns exemplos
de como são criados os clusters de
computadores para a realização do
processamento e múltiplos computadores,
de modo a aumentar a velocidade de
resposta.
Para saber mais, assista ao vídeo a seguir.
ACESSAR
https://youtu.be/wf0NCVrHFCk
vários processadores. Concorrência e paralelismo são ortogonais: é possível
executar programas simultâneos em um único processador (usando
agendamento preventivo e intervalos de tempo) e para executar programas
sequenciais em vários processadores (paralelizando os cálculos). O mundo
real é simultâneo: consiste em atividades que evoluem de forma
independente. O mundo da computação também é concorrente e possui três
níveis de simultaneidade:
O de computadores conectados por meio de uma rede. Essa é a
estrutura básica da Internet.
O sistema operacional, em que o software que gerencia um
computador. Uma atividade simultânea é chamada de processo. Os
processos têm memórias independentes. O sistema operacional lida
com a tarefa de mapear a execução dos processos e a alocação de
memória para o computador. Por exemplo: cada aplicativo em
execução normalmente é executado em um processo.
Atividades dentro de um processo, em que uma atividade simultânea
é chamada de encadeamento. São executados de forma
independente, mas compartilham o mesmo espaço de memória. Por
exemplo: as diferentes janelas em um navegador da Web geralmente
são executadas em threads separadas.
A diferença fundamental entre processos e threads é como a alocação de
recursos é feita. A simultaneidade no nível do processo, às vezes, é chamada
de simultaneidade competitiva: cada processo tenta adquirir todos os
recursos do sistema para si. A simultaneidade no nível do encadeamento, às
vezes, é chamada de simultaneidade cooperativa: threads em um processo
compartilham recursos e colaboram para alcançar o resultado do processo.
Os threads são executados no mesmo aplicativo e, portanto, são guiados pelo
mesmo programa.
Quadro 3.1 - Diferenças entre paradigma concorrente e paradigma paralelo
Fonte: Elaborado pelo autor.
Concorrente Paralelo
Concorrente é a tarefa de
executar e gerenciar os vários
cálculos ao mesmo tempo.
Paralelismo é a tarefa de
executar vários cálculos
simultaneamente.
O concorrente é obtido por meio
da operação de intercalação de
processos na unidade central de
processamento (CPU) ou, em
outras palavras, pela alternância
de contexto.
Alcançado por meio de várias
unidades de processamento
central (CPUs).
A concorrência pode ser feita
usando uma única unidade de
processamento.
Necessita de várias unidades de
processamento.
A concorrência aumenta a
quantidade de trabalho concluído
por vez.
Melhora a taxa de transferência e
a velocidade computacional do
sistema.
A concorrência lida com muitas
coisas simultaneamente.
Executa muitas coisas
simultaneamente.
A concorrência é a abordagem
não determinística do �uxo de
controle.
É uma abordagem determinística
do �uxo de controle.
Na concorrência, a depuração é
muito difícil.
A depuração também é difícil,
mas é mais simples do que na
simultaneidade.
O paradigma de programação paralelo está relacionado a um aplicativo no
qual as tarefas são divididas em subtarefas menores, que são processadas
simultaneamente ou paralelamente. É usado para aumentar a taxa de
transferência e a velocidade computacional do sistema usando os múltiplos
processadores. É a técnica que faz muitas coisas simultaneamente. O
paralelismo leva à sobreposição da unidade central de processamento e das
tarefas de entrada e saída em um processo com a unidade central de
processamento e as tarefas de entrada e saída de outro processo. Já no
paradigma concorrente, a velocidade é aumentada pela sobreposição das
atividades de entrada e saída de um processo com o processo da CPU de
outro processo.
praticarVamos Praticar
Um dos recursos do paradigma de programação paralela é a Interface de
transmissão de mensagens, mais conhecida como MPI - Memory passing interface,
que possui atualmente cerca de 125 funções para a programação. A MPI está
 implementada nas seguintes linguagens: C, C++ e Fortran. Utilizando as diretivas
básicas da MPI, crie dois comandos: um que inicializa um processo MPI e estabelece
o ambiente necessário para sua execução, de forma a sincronizar os processos para
o início da aplicação paralela; e outro que �naliza um processo MPI, sincronizando
os processos para o término da aplicação paralela. Vamos praticar?
indicações
Material
Complementar
FILME
O jogo da imitação
Ano: 2014
Comentário: o �lme explora o papel que os
criptologistas e matemáticos desempenharam na
Segunda Guerra Mundial. Liderando a equipe de
cientistas que tentam quebrar as mensagens
criptografadas pelo exército nazista está Alan Turing,
considerado o pai da computação. Ele desenvolve uma
máquina a �m de acelerar o processo de decodi�cação
das mensagens. Esse processo de decodi�cação é
considerado o primeiro ato de uso dos paradigmas
computacionais.
Para conhecer mais sobre o �lme, acesse o trailer
disponível no link a seguir.
TRA ILER
LIVRO
Programando para processadores paralelos
Editora: Elsevier
Autores: David Kirk e Wen-Mei Hwu
ISBN: 8535241884
Comentário: esse livro aborda os conceitos sobre a
programação para processadores paralelos e
complementa com estratégias para criar arquiteturas
de programação para sistemas que utilizam as GPUs. A
obra proverá insumos para  quem deseja trabalhar com
os recursos dos de processadores multicore.
conclusão
Conclusão
Como vimos, o paralelismo apresenta novos desa�os ao escrever um código
correto e e�ciente. Como a tendência de aumentar o paralelismo no nível do
hardware continuará no futuro próximo, o cálculo paralelo se tornará cada vez
mais importante na programação de aplicativos. Existem sistemas que
exploram uma única forma de paralelismo e concorrência, e sua e�ciência
está atingindo um nível satisfatório, embora ainda haja espaço considerável
para melhorias. Os sistemas que lidam com formas mais gerais de
paralelismo ainda estão na fase de testes. Existemrespostas para os
principais problemas que precisam ser enfrentados nesses dois paradigmas,
mas ainda não foram encontradas maneiras de projetá-los em uma
implementação real de uso. Existe um corpo muito ativo de pesquisas sobre
como tornar o paralelismo mais fácil e menos propenso a erros para os
programadores.
referências
Referências
Bibliográ�cas
BIRD, R.; WADLER, P. Introduction to functional programming. New York:
Prentice Hall, 1988. 310 p.
GURBANI, K. et al. Imperative programming. Mumbai: Himalaya Publishing
House, 2017.

Continue navegando