Você está na página 1de 7

Professora Isabel Harb Manssour

Paradigmas de Linguagens I

1. INTRODUO
A primeira Linguagem de Programao (LP) de alto nvel foi projetada durante a dcada de 50. Desde
ento, LP tm sido uma rea de estudo fascinante e produtiva. Simplificadamente, uma LP pode ser definida como
uma notao formal para descrever a execuo de algoritmos em computador. Sendo assim, as LP no podem ser
encaradas como entidades isoladas, pois elas so ferramentas utilizadas no desenvolvimento de software e com esse
objetivo que devem ser analisadas e estudadas. Por isso, necessrio entender a organizao das LP, com nfase
na compreenso dos seus conceitos abstratos e dos elementos de sua representao durante o processo de execuo
[SIL 88, WAT 90].
Entretanto, para entender o relacionamento entre uma linguagem de programao e um mtodo de projeto,
tambm importante compreender que as linguagens de programao podem forar um certo estilo de
programao, geralmente chamado paradigma de programao. Por exemplo, como ser visto nos prximos
captulos, Smalltalk uma linguagem orientada a objetos. Ela fora o desenvolvimento de programas baseados em
classes de objetos como a unidade de modularizao. Similarmente, Fortran e Pascal so linguagens procedurais,
obrigando o desenvolvimento de programas baseados em rotinas como a unidade de modularizao. Linguagens
que foram um paradigma de programao especfico podem ser chamadas orientadas a paradigma. Em geral no
h necessidade de um relacionamento um para um entre paradigmas e linguagens de programao. Algumas
linguagens, de fato, so neutras e suportam diferentes paradigmas. Por exemplo, C++ suporta o desenvolvimento
de programas procedurais e orientados a objetos.
Os paradigmas de linguagens de programao mais proeminentes, com nfase no estilo de decomposio
de programas que eles promovem, so:

Programao Procedural: estilo de programao convencional onde os programas so decompostos em


passos de processamento que executam operaes complexas. Rotinas so usadas como unidades de
modularizao para definir tais passos de processamento. Exemplos de linguagens com este paradigma so
Pascal e C.

Programao Funcional: estilo de programao que tem origem na teoria das funes matemticas. Enfatiza o
processamento de valores atravs do uso de expresses e funes. As funes so os blocos de construo
primrios do programa; elas podem ser passadas livremente como parmetro e podem ser construdas e
retornadas como parmetros resultantes de outras funes. Algumas LP que suportam este paradigma so ML,
Scheme e LISP.

Programao de Tipos Abstratos de Dados: reconhece tipos abstratos de dados como a unidade da
modularidade do programa. CLU foi a primeira linguagem projetada para suportar este paradigma.

Programao Orientada a Objetos: enfatiza a definio de classes de objetos. Instncias de classes so criadas
atravs do programa conforme a necessidade, durante a execuo dos programas. Este estilo baseado na
definio de hierarquias de classes e selees em tempo de execuo de unidades para executar. Smalltalk,
Eiffel e Java so linguagens representativas desta classe. C++ e Ada tambm suportam este paradigma.

Programao Declarativa: enfatiza a descrio declarativa de um problema, ao invs da decomposio do


problema em uma implementao algortmica. Tais programas so mais prximos de uma especificao do que
a implementao tradicional. Linguagens lgicas, como PROLOG, e linguagens baseadas em regras, como
OPS5 e CLIPS, so representativas desta classe de linguagens [GHE 97].

Sendo assim, aps uma introduo aos tpicos sobre classificao das LP e sobre seus elementos sintticos
e semnticos, feita nas prximas sees, alguns paradigmas de LP sero descritos. No captulo 2 so apresentadas
as caractersticas das linguagens imperativas (programao procedural). Na seqncia so introduzidos os conceitos
do paradigma de orientao a objetos e suas propriedades. Os paradigmas concorrente e funcional so discutidos
nos captulos 4 e 5, respectivamente. Finalmente, o ltimo captulo aborda um estudo de caso que visa possibilitar a
compreenso em detalhe das caractersticas das linguagens concorrentes e das linguagens funcionais de
programao.

Professora Isabel Harb Manssour


Paradigmas de Linguagens I

1.1. Motivao
As linguagens de programao fazem parte do corao da Cincia da Computao, pois correspondem s
ferramentas que so utilizadas para comunicao, no apenas com os computadores, mas tambm entre as pessoas,
e que so indispensveis para programao do computador. O desafio de projetar caractersticas de uma LP que
suportem uma declarao clara, a complexidade de colocar juntas diferentes caractersticas para construir uma
linguagem til, e o desafio de usar apropriadamente estas caractersticas para facilitar a construo dos algoritmos
fazem parte do estudo de linguagens de programao [GHE 97].
Na verdade existem muitas razes para se estudar linguagens de programao, desde que se considere mais
do que as caractersticas das linguagens e procure-se pesquisar os conceitos bsicos de projeto de LP e seus efeitos
na implementao da linguagem. Sendo assim, cinco razes principais podem ser identificadas rapidamente:

Para melhorar o entendimento da linguagem que est sendo utilizada: muitas linguagens oferecem recursos que
quando usados adequadamente trazem muitos benefcios ao programador, mas quando utilizados de maneira
incorreta podem levar a um grande e desnecessrio aumento do tempo de processamento ou gerao de erros
lgicos [PRA 75].

Para fazer um uso melhor da linguagem de programao: o estudo das estruturas das LP facilitar o
entendimento da funo e implementao de tais estruturas. Ento, quando o usurio for programar, ele estar
mais apto a usar a linguagem no grau mximo de sua funcionalidade de uma maneira eficiente. O entendimento
do poder de uma linguagem permite que se utilize este poder. Em outras palavras, quando um programador
busca dados e estruturas de programa adequados para a soluo de um problema, existe a tendncia dele pensar
apenas em estruturas que so expressas nas linguagens com as quais ele est familiarizado. Porm, estudandose as construes fornecidas por um grande nmero de linguagens, e a maneira na qual estas construes so
implementadas, um programador aumenta o seu vocabulrio de programao. O entendimento da
implementao de tais construes tambm muito importante, pois para usar uma determinada construo
enquanto se est trabalhando com uma linguagem que no a fornea diretamente, necessrio que o
programador a implemente utilizando os elementos disponveis na linguagem [PRA 75, DER 90].

Para permitir uma melhor escolha da linguagem de programao: a partir do conhecimento de uma variedade
de linguagens de programao possvel escolher a linguagem certa para um projeto particular, reduzindo
desta maneira a quantidade de cdigo necessria.

Para facilitar o aprendizado de uma nova linguagem: o conhecimento de uma variedade de construes de
linguagens de programao e tcnicas de implementao possibilita que o programador aprenda a trabalhar
com uma nova linguagem de programao mais facilmente. Alm disso, o programador rapidamente consegue
ver com maior clareza como a linguagem apropriadamente usada, quais construes so mais custosas para
usar e quais so relativamente baratas [PRA 75].

Para tornar mais fcil o projeto de uma nova linguagem: este benefcio mais importante do que parece
inicialmente. Poucas pessoas quiseram ou tiveram a oportunidade de projetar suas prprias LP. Entretanto,
considerando-se que a linguagem um meio de comunicao entre uma pessoa e um computador, ento cada
sistema de computador que desenvolvido deve ter uma linguagem incorporada para fornecer uma interao
homemmquina. Um bom entendimento dos princpios da LP pode auxiliar no projeto desta interface. Alm
disso, muitas LP modernas possuem a propriedade de serem extensveis de vrias maneiras. Isto significa que o
programador pode aperfeioar a linguagem atravs da adio de novos tipos de dados e operadores. Nestas
linguagens, cada programa, na verdade, consiste no projeto de uma nova linguagem no sentido de que o
programador tem o poder de aumentar a linguagem original [DER 90].

O estudo de LP importante para qualquer programador, uma vez que este aprender a entender e utilizar
mais eficientemente as facilidades encontradas nas LP atuais. Projetistas de LP, bem como projetistas de hardware
e gerenciadores de software, tambm beneficiam-se deste estudo. Ao entender as necessidades de implementao
de uma LP, projetistas de hardware podem aperfeioar a maneira na qual as mquinas suportam as linguagens. J
os gerenciadores podero tomar diferentes decises de acordo com as caractersticas da LP utilizada [MAC 87].

Professora Isabel Harb Manssour


Paradigmas de Linguagens I

A partir do que foi descrito, deduz-se que h muito mais para se estudar em LP do que simplesmente
compreender as caractersticas fornecidas por uma variedade de linguagens. Na verdade, muitas caractersticas
semelhantes das linguagens enganam, uma vez que a mesma caracterstica em duas linguagens diferentes pode ser
implementada de duas maneiras diferentes, e, consequentemente, as duas verses podem diferir grandemente no
custo de uso [PRA 75]. Assim, estudando-se paradigmas de linguagens, possvel se tornar um usurio inteligente
de LP. Isto inclui a habilidade de: escolher linguagens apropriadas para diferentes aplicaes, fazer uso efetivo e
eficiente de uma linguagem no desenvolvimento de software, e aprender rapidamente novas linguagens [DER 90].

1.2. Conceito de Linguagem de Programao


O meio mais eficaz de comunicao entre pessoas a linguagem (lngua ou idioma), que consiste num
conjunto de convenes e regras sistemtico para comunicao de idias ou troca de informaes. Com uma
linguagem natural, como portugus, esta comunicao ocorre entre pessoas e a linguagem usada tanto na forma
falada, como na forma escrita. Linguagens de programao, por sua vez, diferem das linguagens naturais de vrias
maneiras. Primeiro, a comunicao ocorre entre uma pessoa e uma mquina (computador). A segunda maior
diferena o contedo da comunicao, que, no caso da LP, conhecido como programa. Programas so
seqncias de instrues que descrevem as tarefas a serem realizadas para alcanar a soluo de um determinado
problema, e devem ser escritos numa LP para que possam ser executados num computador. Um terceiro exemplo
de caracterstica de comunicao atravs de uma LP, o meio utilizado. Desde que o computador o futuro
receptor, isto significa que os programas so representados simbolicamente como conjuntos de caracteres, em
oposio, por exemplo, aos sons.
Uma definio de trabalho para uma linguagem de programao : Uma linguagem de programao uma
linguagem com o objetivo de ser usada por uma pessoa para expressar um processo atravs do qual um computador
pode resolver um problema [DER 90]. Em outras palavras, a LP faz a ligao entre o pensamento humano (muitas
vezes de natureza no estruturada) e a preciso requerida para o processamento pela mquina. Os quatro
componentes chave nesta definio de linguagem de programao so:

Computador: a mquina que executar o processo descrito atravs do programa;

Pessoa: o programador que serve como a origem da comunicao;

Processo: a atividade que est sendo descrita atravs do programa;

Problema: o sistema atual ou ambiente onde o problema surgiu.

Outra definio usual : Linguagem de programao um conjunto de termos e de regras que permitem a
formulao de instrues a um computador. Desta forma, a LP composta por dois elementos: Vocabulrio, que
consiste num conjunto de smbolos, e Gramtica, que o conjunto de regras para usar o vocabulrio.
A descrio de uma linguagem geralmente dividida em duas partes, descritas detalhadamente na seo
1.5, que so:

Sintaxe: o conjunto de regras que determina quais construes so corretas para formao dos programas e
quais no so; em outras palavras, preocupa-se com a forma dos programas (como expresses, comandos,
declaraes, etc. so colocados juntos para formar programas).

Semntica: a descrio da maneira que um programa sintaticamente correto interpretado ou executado; em


outras palavras, preocupa-se com o significado dos programas (como o programa vai se comportar quando
executado no computador) [DER 90, WAT 90].

Torna-se interessante comentar que o principal objetivo de uma LP dar suporte ao programador no
desenvolvimento dos sistemas. Isto inclui assistncia no projeto, implementao, teste, verificao e manuteno
do software. Existe uma srie de caractersticas numa linguagem que contribuem para este objetivo. Entre as
caractersticas gerais que definem uma boa linguagem pode-se destacar:

Simplicidade: clareza e conciso semntica (linguagem com um mnimo nmero de conceitos e estruturas), e
clareza sinttica (sintaxe deve representar cada conceito de uma maneira apenas).

Professora Isabel Harb Manssour


Paradigmas de Linguagens I

Suporte para abstrao de dados: representao de um objeto deve incluir somente os atributos relevantes.

Expressividade: refere-se a facilidade com que um objeto pode ser representado; a linguagem deve oferecer
estruturas de dados e de controle apropriadas.

Ortogonalidade: refere-se a interao entre conceitos, isto , o grau com que diferentes conceitos podem ser
combinados uns com os outros de uma maneira consistente; ortogonalidade reduz o nmero de excees das
regras de uma linguagem, tornando mais fcil o seu aprendizado e memorizao.

Suporte manuteno e portabilidade: habilidade de manter programas que devem ser fceis de entender e
alterar; afetada pelas caractersticas anteriores.

Eficincia: a avaliao precisa de uma linguagem, baseada em critrios pr-definidos, extremamente


importante; as medidas mais comuns so a eficincia da execuo do programa, da traduo do programa, e da
criao, teste e uso do programa [DER 90, PRA 75, SIL 88].

1.3. Classes e Geraes


possvel afirmar que um programa de computador uma abstrao da realidade, onde abstrao (seo
1.5.2) consiste no processo de identificar as qualidades ou propriedades importantes do fenmeno que est sendo
modelado, e ignorar todas as propriedades irrelevantes. Levando em considerao o nvel de abstrao, torna-se
possvel identificar trs classes de linguagens de programao, descritas a seguir e ilustradas na figura 1.1.

Linguagem de Mquina: uma linguagem usualmente baseada num cdigo binrio, especfico para cada tipo
de computador (ou microprocessador). Como a codificao das instrues feita na forma final de execuo
(endereos e opcode em binrio), esta linguagem pode ser usada diretamente pela mquina

Linguagem de Baixo Nvel: aqui comea a ser introduzida a abstrao, pois os cdigos binrios so
substitudos por mnemnicos. Neste caso necessrio usar um montador (assembler), que consiste num
programa que l o programa em baixo nvel e converte os cdigos mnemnicos para opcodes. O assembly,
como chamada a linguagem de baixo nvel, caracterstico para cada equipamento, podendo no entanto ser
manipulado com certa facilidade pelos programadores.

Linguagem de Alto Nvel: a LP mais prxima da linguagem do homem, no requer conhecimento da


arquitetura da mquina e portvel, isto , independente da mquina. Neste caso, o programa ou cdigo fonte
precisa ser traduzido para linguagem de mquina para poder ser executado. O cdigo ou programa objeto o
resultado da traduo quando utilizado um compilador ou interpretador (seo 1.7).

Para entender melhor as LP tambm interessante estudar um pouco da sua histria. Dershem e Jipping
[DER 90], ento, estruturaram o histrico das LP em trs perodos. O primeiro perodo que durou
aproximadamente uma dcada, iniciou em 1955 e abrangeu o desenvolvimento das linguagens de programao de
primeira gerao. O segundo perodo, de 1965 a 1971, foi um tempo de consolidao em torno do modelo de uma
linguagem, ALGOL 60, com o desenvolvimento de um grande nmero de linguagens derivadas dela, mas com
novas extenses atravs da adio de novas caractersticas importantes. No perodo final, 1972 em diante, os
resultados das pesquisas preliminares foram colocados juntos para introduzir novos modelos e abordagens para
linguagens de programao.
Linguagem de Alto
Nvel
Linguagem de Baixo
Nvel
Linguagem
de
Mquina

Figura 1.1 - Classes de linguagens de programao

Professora Isabel Harb Manssour


Paradigmas de Linguagens I

Entretanto, cronologicamente, as LP so usualmente classificadas em cinco geraes, que sero descritas a


partir de agora. A estrutura das linguagens de primeira gerao so baseadas na estrutura dos computadores do
incio da dcada de 60. Isto notrio especialmente nas estruturas de controle, que correspondem s instrues de
mquina. As instrues condicionais no so aninhadas e dependem fortemente do goto para construir qualquer
estrutura de controle. Uma exceo o comando de iterao definida, como por exemplo o lao do do Fortran,
que hierrquico nesta primeira gerao. Procedimentos recursivos no so permitidos na maioria das linguagens,
Basic uma exceo, e h geralmente s um modo de passagem de parmetro, tipicamente por referncia.
Tambm pode-se observar que esta gerao de LP orientada para mquina nos tipos de estrutura de dados
fornecidos. As estruturas de dados primitivas encontradas so nmeros de ponto flutuante e fixo de vrias
precises, caracteres e valores lgicos. Os construtores de estruturas de dados so vetores e registros. Assim como
nas estruturas de controle, h pouca facilidade para organizao de dados hierrquica, isto , as estruturas de dados
no podem ser aninhadas, sendo a estrutura de registro do Cobol uma exceo. Nomes de variveis, por sua vez,
so amarradas diretamente e estaticamente s localizaes de memria, pois no h gerenciamento dinmico de
memria. As estruturas sintticas so caracterizadas atravs de comandos lineares, orientados a carto. Alm disso,
a maioria destas linguagens de primeira gerao possui labels numricos que sugerem endereos de mquina. As
convenes lxicas usuais, so ignorar espaos em branco e reconhecer palavras chave no contexto. Resumindo, as
caractersticas marcantes so a orientao para mquina e as estruturas lineares.
A primeira linguagem da segunda gerao foi o Algol-60, e suas caractersticas so tpicas de toda
gerao. Inicialmente pode-se dizer que as estruturas desta gerao constituem aperfeioamentos e generalizaes
das equivalentes na primeira gerao. As estruturas de dados so muito prximas da primeira gerao, tendo
algumas generalizaes, tais como vetores dinmicos, porm continuam lineares. As linguagens de segunda
gerao geralmente no possibilitam tipos definidos pelo usurio, e uma das suas grandes contribuies so as
estruturas de nome, que so hierarquicamente aninhadas. Isto permite um melhor controle do espao do nome e
uma alocao de memria dinmica e eficiente. Outra caracterstica a introduo das estruturas de bloco e de
controle estruturado, que eliminam a necessidade do uso de goto. Vrias estruturas de controle tambm foram
aperfeioadas, permitindo o uso de procedimentos recursivos e a opo de escolha do modo de passagem de
parmetro. Nesta gerao surgiu a distino entre variveis locais e globais e nas suas estruturas sintticas houve o
avano em direo s linguagens livre de formatos, com convenes lxicas independentes de mquina.
Construes caras e no muito eficientes tambm proliferaram na segunda gerao. Um exemplo de linguagem
PL/I.
A terceira gerao caracterizada por compensar os excessos da segunda gerao, enfatizando a
simplicidade e a eficincia, e simbolizada pelo Pascal. As estruturas de dados mostram a troca da nfase da
mquina para a aplicao. Isto pode ser observado atravs do fornecimento de tipos de dados definidos pelo
usurio, que permitem que programadores criem os tipos de dados necessrios para as suas aplicaes, e atravs
dos construtores de tipos orientados aplicao, tais como conjuntos e enumeraes. A terceira gerao tambm
caracterizada por permitir que estruturas de dados sejam aninhadas, isto , organizadas hierarquicamente. As
estruturas de nome constituem uma simplificao do Algol-60, e as linguagens desta gerao geralmente possuem
novas amarraes e construtores de tipos compostos, tais como conjuntos. Estruturas de controle so simplificadas,
como pode-se observar no lao for do Pascal, e criadas com nfase nas aplicaes, como por exemplo o case
do Pascal.
Algumas caractersticas da quarta gerao constituem apenas uma consolidao e correo das
caractersticas da terceira gerao. Entretanto, novas facilidades importantes, tal como o suporte para programao
concorrente, tambm so fornecidas. A contribuio mais importante desta gerao est no domnio das estruturas
de nome, cuja principal caracterstica o fornecimento do encapsulamento, que suporta a separao da
especificao e da definio e ocultar informaes (abstrao de dados). A maioria das linguagens de quarta
gerao permitem que mdulos encapsulados sejam genricos (ou usem polimorfismo). Outra contribuio
significativa est nas estruturas de controle, desde que h o suporte a programao concorrente. Vrias linguagens
usam alguma forma de troca de mensagens como meio de sincronizao e comunicao entre tarefas concorrentes,
e possuem um mecanismo de tratamento de excees para gerenciar erros do sistema e do usurio. Por outro lado, o
framework bsico destas linguagens ainda seqencial. Os construtores de estruturas de dados so similares

Professora Isabel Harb Manssour


Paradigmas de Linguagens I

terceira gerao, porm alguns problemas, tal como a passagem de parmetros de vetores, foram corrigidos. As
estruturas de dados primitivas tendem a ser mais complicadas do que antes, devido ao controle e preciso de tipos
numricos. Finalmente, as estruturas sintticas da quarta gerao so mais abrangentes, tendo como exceo a
preferncia por estruturas completamente agrupadas entre parnteses. Exemplos de linguagens desta gerao so
Ada, Modula-2, e Clu.
Na quinta gerao, marcada pela execuo de vrios experimentos, no foi identificada uma idia
predominante de programao. Entretanto, trs paradigmas em especial so identificados: linguagens funcionais,
lgicas e orientadas a objetos. As linguagens funcionais enfatizam o uso de funes puras e a reduo de operaes
de atribuio. Isto leva ao uso da recurso como mtodo de iterao e da notao polonesa como estrutura sinttica
bsica. Sua estrutura de dados principal a lista, e as estruturas de controle bsicas so as expresses condicionais
e a recurso. Estas linguagens possuem um alto nvel de abstrao, permitem a avaliao dos programas em vrias
ordens diferentes, o que as tornam adequadas para uso em computadores paralelos, e so adequadas para aplicaes
matemticas. Um exemplo deste tipo de linguagem LISP. As linguagens lgicas, por sua vez, so de alto nvel e
orientadas a aplicao. A programao com este tipo de linguagem clara, rpida, precisa e simples, pois os
programas so descritos em termos de predicados e h uma separao da lgica e do controle durante a
programao. Prolog um exemplo de linguagem lgica. J a programao orientada a objetos fornece um modelo
de programao diferente, onde os objetos possuem propriedades semelhantes aos objetos do mundo real.
Linguagens orientadas a objetos concentram-se diretamente no comportamento dos objetos no tempo. Um exemplo
deste tipo de linguagem o Smalltalk [MAC 87].

1.4. Escolha de uma Linguagem de Programao


Devido a existncia de um grande nmero de LP o programador deve escolher qual a mais adequada para
ele usar em cada aplicao. Existem vrias consideraes que devem ser levadas em conta, tcnicas e no tcnicas,
estratgicas e tticas. Resumidamente, pode-se dizer que a escolha da linguagem mais adequada est intimamente
ligada a trs fatores: complexidade do sistema a ser desenvolvido; caractersticas peculiares da aplicao (por
exemplo, sistemas de tempo real); e facilidades que as linguagens oferecem ao suporte de metodologias de
desenvolvimento [SIL 88, WAT 90].
Para pequenos programas, feitos e mantidos por uma pessoa, provvel que a linguagem mais adequada
seja aquela melhor dominada pela pessoa. No entanto, para grandes sistemas com programao em tempo real,
vrios tipos de excees a serem tratadas e muitas pessoas envolvidas, a escolha da linguagem mais adequada deve
ser feita criteriosamente [SIL 88]. Assim, Dershem e Jipping [DER 90] apresentaram sete critrios importantes que
devem considerados quando se est decidindo qual LP utilizar. Estes critrios so:

Implementao: Refere-se ao tradutor da linguagem que utilizado. Neste caso, existem duas consideraes
importantes relacionadas implementao, sua disponibilidade e sua eficincia. A disponibilidade tem impacto
na deciso de quando usar a LP dada uma aplicao e a plataforma onde ele dever ser utilizada. A eficincia
refere-se velocidade de execuo de programas objetos criados pelo tradutor. Por exemplo, Fortran muito
utilizado porque o seu compilador contm vrias caractersticas de otimizao e produz um cdigo objeto
extremamente eficiente.

Conhecimento do Programador: Apesar de ser interessante assumir que todos os programadores esto
igualmente aptos a programar em qualquer linguagem, na prtica no funciona bem assim. Primeiramente,
como resultado da educao e experincia do programador, ele/ela tem uma maior facilidade para uma ou duas
linguagens e mais eficiente quando usa estas linguagens. Apesar de que aprender a usar uma nova e mais
apropriada linguagem para uma determinada aplicao uma tima experincia, o empregador raramente est
disposto a dar o suporte financeiro, principalmente porque tambm envolve o treinamento de vrios
programadores que iro fazer a validao, teste e manuteno dos programas. Para exemplificar, por isso que,
apesar da disponibilidade de muitas linguagens mais eficientes, ainda encontram-se vrios programas
desenvolvidos em Cobol.

Portabilidade: se a possibilidade de executar uma aplicao em uma grande variedade de computadores


importante, ento a portabilidade um critrio significativo na escolha da linguagem. Linguagens que aderem a
padres, como Fortran, Cobol e Ada, so escolhas mais seguras em situaes onde h linguagens cujas

Professora Isabel Harb Manssour


Paradigmas de Linguagens I

implementaes so dependentes da mquina e resultam em mais tempo e custo quando portadas para um novo
sistema.

Sintaxe: algumas aplicaes adaptam-se melhor sintaxe de uma linguagem do que as outras. Por exemplo, a
sintaxe de Fortran foi projetada para atender s exigncias de programas matemticos, enquanto linguagens
mais novas como Pascal e Ada possuem uma sintaxe que facilita a declarao de estruturas de controle.

Semntica: pode ser um fator significativo na escolha da linguagem dada uma aplicao especfica, pois se uma
aplicao requer ou facilitada por uma certa caracterstica da linguagem, ento a linguagem que fornece
esta(s) caracterstica(s) deve ser escolhida. Por exemplo, se a programao concorrente necessria, deve-se
escolher uma LP concorrente, como Ada.

Ambiente de Programao: a disponibilidade de um rico ambiente de programao para suportar o


desenvolvimento de sistemas pode influenciar na escolha da linguagem. Se a linguagem est disponvel em um
ambiente que fornece um bom editor, um debugger simblico, um sistema de controle de cdigo fonte, janelas,
ou outras ferramentas de desenvolvimento, o esforo necessrio para produzir sistemas pode ser
significativamente reduzido. Apesar de algumas destas ferramentas estarem disponveis em ambientes
independentes da linguagem, tal como o sistema operacional, freqentemente elas so especficas
implementao de uma linguagem. A disponibilidade de bibliotecas tambm um fator que deve ser
considerado.

Modelo de Processamento: Uma considerao final na seleo de uma LP o modelo de processamento no


qual a linguagem baseada. For exemplo, se uma aplicao requer uma quantidade significativa de busca
heurstica, uma linguagem que segue o modelo orientado a lgica seria apropriada. Simulaes, por sua vez,
so geralmente mais facilmente implementadas usando uma LP orientada a objetos.

Watt [WAT 90] tambm fez um levantamento das questes que devem ser levadas em considerao na
escolha da LP, dividindo-as em questes estratgicas e tticas. As questes estratgicas, que envolvem projeto e
integrao de software, so:

Abstrao: o quanto a linguagem d suporte ao conceito de abstrao, que permite separar o que um mdulo
deve fazer de como ele ser implementado;

Desenvolvimento de grandes programas: se a linguagem permite que programas sejam construdos a partir de
mdulos escritos e verificados separadamente;

Reutilizao de software: se a linguagem permite a reutilizao de cdigo, e o quanto isto pode acelerar o
desenvolvimento de novos projetos.
As questes tticas, que referem-se a detalhes de programao na linguagem proposta, so:

Modelagem: se a linguagem fornece tipos e operaes associadas que so adequadas para modelagem de
objetos na rea de aplicao do projeto;

Nvel: o quanto uma linguagem alto ou baixo nvel, encorajando o programador a pensar em termos
relacionados rea de aplicao, ou a pensar em detalhes de cdigo;

Segurana: se a linguagem foi projetada de tal maneira que facilita a deteco de erros de programao,
preferencialmente em tempo de compilao;

Eficincia: se a linguagem capaz de ser implementada eficientemente;

Compilador: se existe um compilador de boa qualidade disponvel para a linguagem;

Familiaridade: o quanto o programador est familiarizado com a linguagem, ou se tem disponvel um


treinamento adequado.

interessante comentar que nenhuma destas questes so especficas para uma rea de aplicao
particular. Isto indica que qualquer linguagem razovel que passa por estas questes pode ser bem aceita na maioria
das reas de aplicaes. Isto tambm explica porque Pascal to satisfatrio (e insatisfatrio) em uma grande
variedade de aplicaes [WAT 90].