Você está na página 1de 9

Universidade Federal do Rio Grande do Norte

Centro de Tecnologia
Departamento de Computao e Automao

Algoritmo e Lgica de Programao


Conceitos de Linguagens de Programao

DCA 800 Eng. Qumica

Abril / 2004

SUMRIO
1.

LINGUAGENS DE PROGRAMAO ..........................................................................................................3


1.1
CLASSIFICAO DAS LINGUAGENS DE PROGRAMAO ...............................................................................3
1.1.1
Linguagens de Alto Nvel Comparadas com Linguagens de Baixo Nvel..............................................4
1.2
HISTRICO DAS LINGUAGENS DE PROGRAMAO .......................................................................................5
1.2.1
Linguagens de primeira gerao...........................................................................................................5
1.2.2
Linguagens de Segunda Gerao ..........................................................................................................5
1.2.3
Linguagens de Terceira Gerao ..........................................................................................................5
1.2.4
Linguagens de quarta gerao ..............................................................................................................6
1.2.5
Linguagens desenvolvidas .....................................................................................................................6
1.2.6
Novas direes das linguagens de programao ..................................................................................7
1.2.7
Processadores de Linguagens ...............................................................................................................7
1.3
PROCESSAMENTO DE LINGUAGENS..............................................................................................................8
1.3.1
Interpretao .........................................................................................................................................8
1.3.2
Traduo................................................................................................................................................8

1. LINGUAGENS DE PROGRAMAO
Linguagens de programao so usadas para descrever algoritmos; isto , seqncias de
passos que levam soluo de um problema. Uma linguagem de programao precisa suportar a
definio de aes e prover meios para especificar operaes bsicas de computao, alm de
permitir que os usurios especifiquem como estes passos devem ser seqenciados para resolver um
problema. Uma linguagem de programao pode ser considerada como sendo uma notao que
pode ser usada para especificar algoritmos com preciso.

1.1 Classificao das Linguagens de Programao


As linguagens de programao podem ser agrupadas em dois grandes grupos: linguagens de
baixo nvel e linguagens de alto nvel.
As linguagens de baixo nvel so restritas a linguagem de mquina e tem uma forte relao
entre as operaes implementadas pela linguagem e as operaes implementadas pelo hardware.
As linguagens de alto nvel por outro lado, aproximam-se das linguagens utilizadas por
humanos para expressar problemas e algoritmos. Cada declarao numa linguagem de alto nvel
equivale a vrias declaraes numa linguagem de baixo nvel.
A vantagem principal das linguagens de alto nvel a abstrao. Isto o processo em que as
propriedades essenciais requeridas para a soluo do problema so extradas enquanto esconde os
detalhes da implementao da soluo adotada pelo programador. Com o nvel de abstrao
aumentado, o programador pode concentrar-se mais na soluo do problema ao invs de preocuparse como o hardware vai tratar do problema.
No incio da computao os programadores eram obrigados a programar usando linguagem
de mquina, que nada mais do que seqncias de dgitos binrios (0s e 1s). Por exemplo, a
instruo incremente o valor no acumulador deveria ser representada como:
10100100

Ou na melhor hiptese, escrito sob a forma de um nmero hexadecimal


A4

claro que esta representao tinha muitas desvantagens:


H uma grande probabilidade de erro em todos os estgios do processo de programao.
A programao mesmo sendo com algoritmos simples resulta em longos programas, o
que dificulta o processo de validao e deteco de erros.
O clculo de endereos de memria devem ser feitos manualmente, com um rduo
trabalho e uma grande probabilidade de erros.
Algumas das desvantagens podem ser superadas fazendo com que o computador seja o
responsvel pelo estgio de traduo. O programa ainda escrito em termos de operaes bsicas
de mquina, mas a traduo em cdigo binrio feita pelo computador. O programa que faz essa
traduo chamado de assembler. At mesmo o mais simples dos assemblers modernos podem
3

reconhecer endereamentos simblicos e mnemnicos representado operaes de mquina. Assim,


por exemplo, o programador precisa somente escrever:
ADD ival

Para especificar uma instruo para adicionar o contedo de localizao ival para o
acumulador. O assembler ento faz a traduo para a string equivalente de 0s e 1s. O assembler
tambm trata do problema de clculo de endereo, usando nomes em formato de texto para
enderear os dados. A conseqncia desta automao de traduo que os programas em
linguagem Assembly so muito mais fceis de escrever e depurar que programas em linguagem de
mquina.
1.1.1 Linguagens de Alto Nvel Comparadas com Linguagens de Baixo Nvel
As linguagens de alto nvel podem oferecer muito mais vantagens que as linguagens de
baixo nvel. A principal motivao para o uso de linguagens de alto nvel que os problemas
podem ser solucionados muito mais rapidamente e com muito mais facilidade, pois apresenta um
considervel numero de tipos de dados definidos, alm das facilidades da programao estruturada.
Os programas em linguagem de alto nvel so muito mais fceis de serem desenvolvidos,
entendidos e depurados por diversas razes:
Elas so mais provveis de serem auto-documentadas.
A estrutura do programa pode ser desenvolvida para refletir a estrutura do problema
original.
Nomes significativos podem ser escolhidos para variveis e subprogramas.
A soluo do problema no necessita ser obscurecida pelo nvel de detalhes necessrios
em um programa em linguagem de baixo nvel.
O programa em linguagem de alto nvel normalmente fcil de seguir e entender cada
passo da execuo.
O compilador, nas linguagens de alto nvel, normalmente prov facilidades para a
depurao, como visualizao dos valores das variveis, dos registradores e da pilha.
Alm disso o compilador pode incluir instrues na gerao de cdigo para detectar erros
em tempo de execuo, como overflow numricos e violao de limites de vetores e
matrizes.
A utilizao de linguagens de baixo nvel indicada para funes que precisam
implementar instrues de mquina especficas que no so suportadas por linguagens de
alto nvel, embora a grande maioria das linguagens de alto nvel apresentam uma
biblioteca que permite implementar instrues de baixo nvel diretamente em seus
programas.
A grande eficincia e o reduzido tamanho dos programas desenvolvidos em linguagens
de baixo nvel so as principais vantagens dessas linguagens.

1.2 Histrico das Linguagens de Programao


Existem centenas de linguagens de programao, desenvolvidas desde o incio da
computao. Essas linguagens foram agrupadas de acordo com suas e caractersticas e poca em
que foram desenvolvidas em 4 geraes:
1.2.1 Linguagens de primeira gerao
A primeira gerao de linguagens remonta aos dias da codificao em linguagem de
mquina, surgidas com o incio da computao na dcada de 50, especificamente de 1950 a 1962. A
Linguagem de mquina e Assembly representam esta primeira gerao das linguagens de
programao.
Essas linguagens totalmente dependentes da mquina, exibem o mais baixo nvel de
abstrao que uma linguagem pode ser representada.
Essas linguagens somente devem ser usadas quando as linguagens de mais alto nvel no
satisfizerem as necessidades ou no forem suportadas.
1.2.2 Linguagens de Segunda Gerao
A segunda gerao de linguagens de programao foi desenvolvida de 1962 a 1974 e serviu
de base para o desenvolvimento das modernas linguagens de programao.
As caratersticas marcantes das linguagens de segunda gerao foram o amplo uso com
grande familiaridade e aceitao no mercado e a grande quantidade de bibliotecas de software,
permitiram a programao multi-usurio, sistemas de execuo em tempo real e desenvolvimento
de gerenciadores de base de dados.
As linguagens Fortran, Cobol, Algol e algumas extenses como Basic, foram os
representantes dessa segunda gerao.
Fortran uma linguagem ainda muito utilizada na rea de engenharia e pela comunidade
cientfica. Cobol uma linguagem que foi aceita e ainda continua em uso para aplicaes
comerciais. Algol foi o precursor de muitas linguagens de terceira gerao, por oferecer ricamente
estruturas de controle e tipos de dados. Basic foi uma linguagem originalmente criada para o
aprendizado e teve seu uso bastante reduzido j na dcada de 70.
1.2.3 Linguagens de Terceira Gerao
As linguagens de terceira gerao tambm chamadas de linguagens de programao
modernas ou estruturadas, so caracterizadas pela grande capacidade procedural e estrutural de seus
dados foram desenvolvidas de 1974 a 1986.
As linguagens de terceira gerao tiveram como principais caractersticas a possibilidade de
criar sistemas distribudos, incorporar recursos mais inteligentes, e exigir um hardware menos
robusto. Podem ser divididas em duas grandes categorias: linguagens de propsito geral e
linguagens especializadas.
As linguagens de propsito gerais foram desenvolvidas baseadas principalmente na
linguagem Algol e servem para uma infinidade de aplicaes envolvendo desde a rea cientfica, at
5

a rea comercial. As linguagens C, Pascal, PL/1 e Modula-2 so as principais linguagens desta


categoria, sendo que as duas primeiras continuam bastante usadas atualmente.
As linguagens especializadas so caracterizadas pela forma sinttica no usual com que
foram desenvolvidas para uma aplicao distinta. Centenas de linguagens especializadas esto em
uso atualmente. Dentre as linguagens que encontram aplicaes na rea de engenharia de software
podemos destacar a linguagem Lisp desenvolvida especialmente para manipular smbolos e listas,
Prolog desenvolvida para tratar e representar conhecimentos,. Smalltalk criada para representar os
dados em forma de objetos, sendo a primeira a ser puramente orientada a objetos, APL
desenvolvida para manipular vetores, e a linguagem Forth desenvolvida para desenvolver softwares
para microprocessadores.
1.2.4 Linguagens de quarta gerao
A quarta gerao das linguagens de programao foram desenvolvidas a partir de 1986 e
teve como caractersticas principais a gerao de sistemas especialistas, o desenvolvimento de
inteligncia artificial e a possibilidade de execuo dos programas em paralelo.
No decorrer da histria temos percebido uma evoluo para uma abstrao maior na gerao
de programas, usando linguagens de mais alto nvel.
A primeira gerao de linguagens de programao trabalhavam com um reduzido conjunto
de instrues a nvel de mquina. A segunda e terceira gerao de linguagens de programao
foram desenvolvidas num nvel que representam os programas computacionais, distinta e
independentemente da arquitetura do processador, mas com completa descrio detalhada dos
procedimentos algortmicos do programa. Com o passar do tempo, as linguagens de quarta gerao
foram desenvolvidas com um nvel de abstrao ainda mais alto.
As linguagens de quarta gerao, conhecidas tambm como linguagens artificiais contm
uma sintaxe distinta para representao de estruturas de controle e dos dados. Essas linguagens por
combinarem caractersticas procedurais e no procedurais, representam estas estruturas com um alto
nvel de abstrao, eliminando a necessidade de especificar algoritmicamente esses detalhes.
As linguagens de quarta gerao podem ser classificadas em trs categorias: linguagens de
consulta, geradoras de programas e outras linguagens (4GL).
As linguagens de consulta foram desenvolvidas para manipular bases de dados, permitindo o
gerenciamento de um grande nmero de informaes armazenados em arquivos.
As linguagens geradoras de programas representam uma sofisticada classe das linguagens
4GL. Permitem ao usurio ou programador criar facilmente programas complexos em linguagens de
terceira gerao, utilizando bem menos declaraes e comandos. Estas linguagens possuem um
nvel bem mais alto que as de terceira gerao.
Enquadradas como outras linguagens de quarta gerao temos as linguagens usadas em
sistemas de apoio deciso, linguagens utilizadas para modelagem de sistemas, linguagens de
prototipao, e linguagens de especificao formal que produzem cdigo de mquina.
1.2.5 Linguagens desenvolvidas
No decorrer da histria da computao centenas de linguagens foram desenvolvidas. J em
1972 haviam mais de 200 linguagens desenvolvidas, sendo que a maioria era para objetivos
6

especficos ou acadmicos, sendo que dessas apenas 12 podem ser consideradas como importantes e
significativas.
Relao das linguagens de programao com o ano em que foram desenvolvidas:
1957
1958
1960
1960
1962
1962
1964
1964
1966
1970
1972

FORTRAN
ALGOL
LISP
COBOL
APL
SIMULA
BASIC
PL/1
ISWIM
Prolog
C

1975
1975
1977
1978
1978
1980
1983
1983
1983
1984
1986

Pascal
Scheme
OPS5
CSP
FP
dBase II
Smalltalk
80
Ada
Parlog
Standard ML
C++

1986
1986
1988
1988
1988
1990
1995
1995

CLP(R)
Eiffel
CLOS
Mathematica
Oberon
Haskell
Delphi
Java

1.2.6 Novas direes das linguagens de programao


As novas direes das linguagens de programao, especialmente das linguagens de quarta
gerao a sua aplicao com metodologias orientadas a objetos. Essas linguagens so baseadas
nos conceitos de objetos, que agrupam comandos de programao com dados em objetos que
podem ser usados o tempo todo durante a execuo do programa, o que muito til em ambientes
de execuo paralela.
Outra tendncia dos ambientes de desenvolvimento de programas fornecer alm das
linguagens de programao, um ambiente de gerao automtica de cdigo, onde o programador
especifica atravs de ferramentas visuais as caractersticas do programa e a ferramenta se encarrega
de gerar a codificao na linguagem especfica. Estas ferramentas so muito difundidas na
programao para Windows, e so tambm chamados de RAD (Desenvolvimento Rpido de
Aplicativos).
A nova gerao das linguagens de programao, que j chamada por muitas pessoas de
quinta gerao, baseada em mtodos de consulta e utilizam comandos escritos em linguagens
naturais, permitindo uma fcil comunicao com o computador.
1.2.7 Processadores de Linguagens
As linguagens de alto nvel so as linguagens que possuem uma certa independncia da
mquina, pois no so desenvolvidas utilizando instrues especificas do processador (linguagem
de mquina), mas um conjunto de comandos que so transformados em linguagens de mquina.
As linguagens de programao so implementadas por compilao de programas em
linguagem de mquina, por interpretao das mesmas, ou por alguma combinao de compilao e
interpretao.
Qualquer sistema para processamento de programas executando-os ou preparando-os para
a execuo chamado processador de linguagem. Processadores de linguagem incluem
compiladores, interpretadores, e ferramentas auxiliares como editores dirigidos sintaxe.
7

1.3 Processamento de Linguagens


Embora seja teoricamente possvel a construo de computadores especiais, capazes de
executar programas escritos em uma linguagem de programao qualquer, os computadores
existentes hoje em dia so capazes de executar somente programas em uma linguagem de nvel
baixo, a linguagem de mquina. Linguagens de mquina so projetadas em funo da rapidez de
execuo de programas, do custo de sua implementao e da flexibilidade com que permitem a
construo de programas de nvel mais alto. Por outro lado, linguagens de programao so
freqentemente projetadas em funo da facilidade na construo e da confiabilidade de programas.
Um problema bsico, ento, como uma linguagem de nvel mais alto pode ser implementada em
um computador cuja linguagem de mquina bastante diferente, e de nvel bem mais baixo.
Existem basicamente duas alternativas para esta implementao: interpretao e traduo.
1.3.1 Interpretao
Nesta soluo, as aes indicadas pelos comandos da linguagem so diretamente
executadas. Em geral existe para executar cada ao possvel um subprograma (escrito na
linguagem de mquina do computador hospedeiro). Assim, a interpretao de um programa feita
pela chamada daqueles subprogramas, em uma seqncia apropriada.
Mais precisamente, um interpretador um programa que executa repetidamente a seguinte
seqncia:
1. Obter o prximo comando do programa.
2. Determinar que aes devem ser executadas.
3. Executar estas aes.
Esta seqncia bastante semelhante quela executada por computadores tradicionais, a
saber:
1. Obter a prxima instruo (aquela cujo endereo especificado no indicador de
instrues da mquina).
2. Deslocar o indicador de instrues (obtendo o endereo da prxima instruo a ser
executada).
3. Decodificar a instruo.
4. Executar a instruo.
Esta semelhana mostra que a interpretao pode ser encarada como a simulao, em um
computador hospedeiro, de uma mquina especial cuja linguagem de mquina a linguagem de
nvel mais alto.
1.3.2 Traduo
Nesta soluo, programas escritos em linguagem de alto nvel so traduzidos para verses
equivalentes em linguagem de mquina, antes de serem executados. Esta traduo feita em vrios
passos. Por exemplo, subprogramas podem ser inicialmente traduzidos para cdigo Assembly, este
pode depois ser traduzido para cdigo relocvel (objeto), em linguagem de mquina; em seguida,
unidades em cdigo relocvel (objeto) podem ser ligadas em uma nica unidade relocvel (um
nico cdigo objeto); e, finalmente, o programa inteiro carregado na memria principal, como
cdigo executvel de mquina. Os tradutores usados em cada um destes passos tem nomes
especiais: compilador, montador, ligador (linker) e carregador, respectivamente.
8

Em alguns casos, a mquina onde a traduo feita (a mquina hospedeira) diferente


daquela onde o cdigo gerado executado (a mquina objetivo). Neste caso o processo chamado
traduo cruzada. Tradutores cruzados so a nica opo de traduo quando a mquina objetivo
muito pequena para conter o tradutor.
A interpretao pura e a traduo pura so dois extremos. Na prtica, muitas linguagens so
implementadas por uma combinao destas tcnicas. Um programa pode ser traduzido para um
cdigo intermedirio, que ento interpretado. Este cdigo intermedirio pode ser simplesmente
uma representao formatada do programa-fonte, de onde foi removida informao irrelevante
(como comentrios e espaos) e onde os componentes de cada comando esto armazenados em
formato fixo, de maneira a simplificar a decodificao de instrues que se segue. Neste caso, a
soluo basicamente interpretativa. Alternativamente, o cdigo intermedirio poderia ser o cdigo
de mquina (de baixo nvel) de uma mquina virtual que seria depois interpretada por programas.
Esta soluo, que depende mais fortemente de traduo, pode ser adotada na gerao de cdigo
porttil, isto , cdigo mais facilmente transfervel para outras mquinas do que cdigo em
linguagem de mquina.
Em uma soluo puramente interpretativa, a execuo de um comando pode requerer um
processo de decodificao bastante complicado, para determinar as operaes a serem executadas e
seus operandos. Na maioria dos casos, a mesma decodificao executada cada vez que o comando
encontrado. Conseqentemente, se o comando aparece em um trecho de programa executado com
freqncia (por exemplo, em uma repetio interna), a decodificao idntica afeta sensivelmente a
rapidez de execuo do programa.
Por outro lado, na traduo pura, o cdigo de mquina gerado para cada comando de alto
nvel. Neste caso o tradutor decodifica cada comando somente uma vez. Os componentes usados
com freqncia so ento decodificados, na sua representao em linguagem de mquina, vrias
vezes; como isto feito eficientemente por circuitos internos, a traduo pura pode economizar
tempo de execuo em comparao interpretao pura.
Por outro lado, possvel que a interpretao pura economize memria. Na traduo pura,
cada comando de alto nvel pode ser traduzido para dezenas ou centenas de instrues de mquina.
Em uma soluo puramente interpretativa, os comandos de alto nvel so mantidos em sua forma
original, e as instrues necessrias sua execuo so guardadas em um subprograma do
interpretador. A economia de memria evidente se o programa grande e usa a maioria dos
comandos da linguagem. Por outro lado, se todos os subprogramas do interpretador so mantidos na
memria principal durante a execuo, o interpretador pode desperdiar memria na execuo de
programas pequenos, que usam somente alguns comandos da linguagem.

Você também pode gostar