Você está na página 1de 17

Universidade Estadual de Campinas

Faculdade de Engenharia Eltrica e de Computao

Linguagens de Programao

Notas de aula para a disciplina EA877

Mini e Microcomputadores: Software

Ricardo R. Gudwin

Departamento de Engenharia de Computao e Automao Industrial

1997

Gudwin

Linguagens de Programao

ndice
1. INTRODUO ..................................................................................................................1
2. LINGUAGENS DE BAIXO NVEL .................................................................................1
2.1 ASSEMBLY ..........................................................................................................................1
3. LINGUAGENS NO-ESTRUTURADAS........................................................................2
3.1 COBOL ................................................................................................................................2
3.2 BASIC ..................................................................................................................................3
4. LINGUAGENS PROCEDURAIS .....................................................................................3
4.1 C.........................................................................................................................................3
4.2 PASCAL ...............................................................................................................................4
4.3 FORTRAN ............................................................................................................................4
4.4 ADA ....................................................................................................................................4
4.5 MODULA-2..........................................................................................................................5
4.6 MODULA-3..........................................................................................................................5
5. LINGUAGENS FUNCIONAIS .........................................................................................6
5.1 PROLOG ..............................................................................................................................6
5.2 LISP ...................................................................................................................................6
5.3 SCHEME ..............................................................................................................................7
6. LINGUAGENS ORIENTADAS A OBJETOS.................................................................7
6.1 SIMULA ...............................................................................................................................7
6.2 SMALLTALK ........................................................................................................................8
6.3 C++ ....................................................................................................................................8
6.4 OBJECTIVE-C ......................................................................................................................8
6.5 JAVA ...................................................................................................................................9
6.6 CLOS ...............................................................................................................................10
6.7 EIFFEL ...............................................................................................................................10
7. LINGUAGENS PARA APLICAES ESPECFICAS ...............................................10
7.1 LINGUAGENS PARA BANCOS DE DADOS ............................................................................10
7.1.1 Clipper......................................................................................................................10
7.1.2 SQL...........................................................................................................................10
7.2 LINGUAGENS PARA SIMULAO ........................................................................................11
7.2.1 MATLAB...................................................................................................................11
7.3 LINGUAGENS DE SCRIPTS ..................................................................................................11
7.3.1 Tcl/Tk........................................................................................................................11
7.3.2 Perl...........................................................................................................................12
7.4 LINGUAGENS DE FORMATAO DE TEXTOS ......................................................................12
7.4.1 TeX/LaTeX................................................................................................................12
7.4.2 HTML .......................................................................................................................12
7.4.3 Postscript..................................................................................................................13
7.4.4 PDF ..........................................................................................................................13
8. LINGUAGENS DE PROGRAMAO VISUAL .........................................................13
8.1 FERRAMENTAS DE PROGRAMAO VISUAL ......................................................................14
8.2 LINGUAGENS DE PROGRAMAO VISUAL HBRIDAS .........................................................14
8.3 LINGUAGENS DE PROGRAMAO VISUAL PURAS ..............................................................14
8.3.1 Khoros ......................................................................................................................14
8.3.2 Simulink....................................................................................................................15

1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

1. Introduo
Para se implementar um algoritmo em um computador, necessrio
descrev-lo de uma forma que o computador esteja apto a execut-lo. Essa
descrio feita por intermdio de uma linguagem de programao. O prprio
conjunto de instrues de um processador pode ser entendido como uma
linguagem de programao . Entretanto, essa linguagem normalmente no a
mais adequada para a descrio de um programa, uma vez que os algoritmos
necessrios podem ser sofisticados, e essa linguagem primitiva, tambm chamada
de linguagem de mquina no nem um pouco amigvel ao programador,
demandando um esforo muito grande na elaborao de programas mais
complexos. Sendo assim, foram desenvolvidas, ao longo da histria da
computao, diversas linguagens de programao, cada qual, a seu tempo,
introduzindo facilidades e recursos que foram tornando a tarefa de programar mais
fcil e menos suceptvel a erros. Atualmente, com as linguagens visuais (tambm
chamadas por alguns de linguagens de quarta gerao), programar deixou de ser
uma arte restrita a um grupo de indivduos, para tornar-se uma ferramenta a mais
dentro do escopo do usurio comum.
Neste texto, apresentamos um tutorial histrico sobre as linguagens de
programao, ressaltando aquelas que foram mais proeminentes dentro de cada
categoria. As linguagens de programao podem ser divididas dentro da seguinte
taxonomia:
Linguagens de Baixo Nvel
Linguagens No-Estruturadas
Linguagens Procedurais
Linguagens Funcionais
Linguagens Orientadas a Objeto
Linguagens Especficas a Aplicaes
Linguagens Visuais

2. Linguagens de Baixo Nvel


Linguagens de baixo nvel so linguagens cujas instrues correspondem
quase que diretamente ao cdigo de mquina que ser enviado ao processador para
execuo. Na verdade, existem tantas linguagens de baixo nvel quantos so os
conjuntos de instrues dos diferentes processadores. Essas linguagens so
conhecidas de uma maneira unificada como Linguagem Assembly, sendo que na
verdade deve existir uma linguagem Assembly para cada processador. Sendo
assim, deve haver um Assembly 8086, um Assembly 68000, um Assembly 80386,
um Assembly Pentium e assim por diante.

2.1 Assembly
A linguagem Assembly corresponde a uma linguagem em que cada
instruo de um determinado processador associada a um termo, cuja semntica
corresponde operao efetuada pela instruo. Sendo assim, para cada
processador, pode existir pelo menos uma linguagem Assembly correspondente.
Para um mesmo processador, podem existir tambm mais de uma linguagem
Assembly. Uma linguagem Assembly mais simples, vai apenas nomear as
1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

instrues do processador, substituindo-se as instrues numricas por termos


lingusticos. Linguagens Assembly mais sofisticadas permitiro tambm a
associao de termos s posies de memria apontadas pelas instrues, dando
maior flexibilidade ao programador. Entretanto, apesar de serem mais flexveis,
estas linguagens esto ainda bem longe da flexibilidade permitida pelas linguagens
de alto nvel.

3. Linguagens No-Estruturadas
Linguagens no-estruturadas so linguagens mais sofisticadas que as
linguagens de baixo nvel. So linguagens mais flexveis, pois seus comandos no
esto to vinculados ao processador e sistema utilizados, tornando seu uso possvel
em diferentes plataformas. Do mesmo modo, a semntica de seus termos torna-se
mais genrica, estando desassociada do conjunto de instrues que iro
efetivamente implement-la durante a execuo do programa. Isso permite que
operaes mais sofisticadas sejam emuladas por sequncias de instrues mais
simples em linguagem de mquina. As linguagens no estruturadas corresponderam
a um grande salto qualitativo em termos de programao, quando comparadas com
as linguagens de baixo nvel. Entretanto, tornaram-se gradualmente obsoletas, com
a introduo de linguagens estruturadas mais sofisticadas, tais como as linguagens
procedurais, as linguagens funcionais e as linguagens orientadas a objetos.

3.1 Cobol
O COBOL (COmmon Business Oriented Language), foi designado
especificamente para a construo de aplicaes comerciais, tais como folhas de
pagamento, inventrio de produtos, contabilidade, operando tipicamente em
grandes volumes de dados. Sua estrutura no adequada, portanto, para problemas
cientficos, onde clculos complexos so necessrios. Encontra-se disponvel em
vrias plataformas, desde mquinas PC at mainframes. O mesmo programa
COBOL pode ser compilado e executar em uma grande variedade de mquinas,
com apenas pequenas mudanas no cdigo.
A linguagem COBOL foi desenvolvida em 1959 por um grupo chamado
Comit CODASYL (Conference on Data Systems Languages), que inclui
representantes de origem acadmica, bem como fabricantes de computadores. O
objetivo desse grupo foi o de desenvolver uma linguagem padro para o
desenvolvimento de programas comerciais, de tal forma que todos os fabricantes
pudessem oferecer compiladores para tal linguagem. A conferncia foi patrocinada
pelo Departamento de Defesa dos Estados Unidos (DOD). Como resultado do
CODASYL, o primeiro compilador COBOL veio ao mercado em 1960. Entretanto,
devido diversidade entre os compiladores COBOL que surgiram, decidiu-se
elaborar uma norma para regulamentar a linguagem. Em 1968, a primeira verso do
ANSI-COBOL foi desenvolvida e aprovada. A maioria dos grandes fabricantes de
computadores e distribuidores de software comearam a distribuir compiladores
utilizando o ANSI-COBOL. Em 1974, uma segunda verso foi elaborada e em
1985, uma terceira, conhecida como COBOL-85. Atualmente, esforos vm sendo
empregados na elaborao de uma nova reviso na linguagem, com vistas uma
futura verso, possivelmente a ser anunciada em 1997 (COBOL-97). Algumas das
caractersticas anunciadas para o novo COBOL incluem orientao a objeto e
programao visual.

1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

3.2 Basic
A linguagem BASIC (Beginners All-purpose Symbolic Instruction Code)
foi desenvolvida por Thomas E. Kurtz e John G. Kemeny, membros do
departamento de matemtica de Dartmouth, em 1963. O BASIC foi desenvolvido
com o intuito de ser uma linguagem fcil e interativa, de modo a possibilitar seu
uso por cientistas da computao, que rapidamente pudessem criar programas e
execut-los. Ela se tornou popular nos primeiros microcomputadores. Uma de suas
caractersticas mais marcantes o fato de ser uma linguagem interativa, ou seja, d
facilidades ao programador para ir programando ao mesmo tempo em que executa.
uma linguagem frequentemente interpretada, havendo entretanto, compiladores
para ela. No uma linguagem padro entre computadores, apesar de existir uma
norma ANSI que define a linguagem, existindo mais de 80 diferentes variantes,
com diferenas s vezes significativas entre elas. Algumas implementaes mais
recentes incorporam recursos de programao visual e orientao a objeto (Visual
Basic).

4. Linguagens Procedurais
As linguagens procedurais so um dos sub-tipos das linguagens chamadas
estruturadas. Essas linguagens se diferenciam das linguagens no estruturadas,
pela existncia de estruturas de controle, que entre outras coisas promovem o teste
de condies (if-then-else), controlam a repetio de blocos de cdigo (for, while,
do), fazem a seleo de alternativas (switch, case), e dividem o cdigo do programa
em mdulos chamados de funes ou procedimentos. As linguagens procedurais
so caracterizadas pela existncia de algoritmos, que determinam uma sequncia de
chamadas de procedimentos, que constituem o programa. Essa caracterstica
colocada em contraposio s linguagens funcionais, onde se descrevem expresses
que caracterizam um certo tipo de conhecimento.
As linguagens procedurais mais comuns so o C, o Pascal e o Fortran.
Algumas linguagens mais sofisticadas, tais como o Ada, Modula-2 e Modula-3
foram desenvolvidas para corrigir deficincias e explorar novos contextos onde o
C, Pascal e Fortran no eram totalmente adequados.

4.1 C
O desenvolvimento da linguagem C est intimamente conectado ao
desenvolvimento do sistema operacional Unix. Durante o desenvolvimento do
Unix, foi necessria a criao de uma linguagem de alto nvel para a programao
do sistema, uma vez que o esforo de programao em linguagem assembly era
muito grande. Sendo assim, um grupo de pesquisadores do Bell Labs, incluindo
Ken Thompson e Dennis Ritchie, desenvolveram uma linguagem de alto nvel a
qual batizaram de linguagem B. A linguagem B foi posteriormente substituda
por outra que a sucedeu, a linguagem C. Com o desenvolvimento de um
compilador C porttil (por Steve Johnson, do Bell Labs), o Unix pde ser
transportado facilmente para diversas plataformas, tornando tanto a linguagem C
como o sistema operacional Unix um sucesso para diferentes plataformas
computacionais.
O grande sucesso da linguagem C est intimamente ligado ao sucesso do
sistema operacional Unix, sendo que quase todas as implementaes do Unix (para
diferentes arquiteturas) possuem um compilador C nativo. Posteriormente, devido a

1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

esse sucesso, a linguagem C passou a ser utilizada tambm fora do ambiente Unix,
como por exemplo em PCs (DOS, Windows e OS/2), com a introduo dos
compiladores da Borland e Microsoft.
Atualmente, a linguagem C descrita pela norma ISO - ISO/IEC
9899:1990.

4.2 Pascal
O Pascal uma linguagem que foi originada no Algol, tendo sido
desenvolvida por Niklaus Wirth para o CDC 6600, por volta de 1967-68, como
uma ferramenta de instruo para programao elementar. Apesar de ter sido
desenvolvida inicialmente apenas com propsitos educacionais, tornou-se
posteriormente uma linguagem de propsitos gerais, tendo-se tornado inclusive o
ancestral de diversas outras linguagens, tais como o Modula-2 e o Ada. uma
linguagem que enfatiza bastante sua sintaxe, evitando artifcios encontrados em
outras linguagens, tais como casts, para efetuar converso de tipos, ou outros
artifcios que poderiam tornar a linguagem mais flexvel. Neste sentido, o Pascal
foi perdendo lugar para o C, que tem uma estrutura semelhante, e ao mesmo tempo
d ao programador a flexibilidade necessria para resolver problemas onde a
sintaxe rgida do Pascal no permite muita elaborao.
4.3 Fortran
O IBM Mathematical FORmula TRANslating system, ou FORTRAN,
foi a primeira linguagem de alto nvel (ou seja, superior ao assembly).
Desenvolvida por Backus, dentre outros, a linguagem foi introduzida em 1958,
direcionada primeiramente para clculos cientficos, de tal forma que facilidades
como manipulaes de strings eram quase inexistentes, e a nica estrutura de
dados existente era o array. Entretanto, tratou-se de um grande salto qualitativo,
quando comparado ao Assembly. Tornou-se uma linguagem de grande aceitao,
sendo utilizada at hoje em aplicaes numricas.
A primeira norma regulamentando a linguagem veio entretanto somente
em 1966, quando a American National Standards Institute (ANSI) publicou uma
norma que unificou a linguagem, sendo referenciada como FORTRAN66. Depois
disso, a linguagem passou por diversas revises, de modo a incorporar idias da
programao estruturada. As mais notveis revises, foram o FORTRAN77 e o
FORTRAN90, introduzidas em 1978 e 1991 , respectivamente. O FORTRAN90
incorpora diversas caractersticas das linguagens modernas de programao, dentre
estas o uso de arrays dinmicos, records, mdulos e apontadores, derivao de
tipos e overload de operadores, um melhor sistema de declaraes e o uso de
prottipos e modernas estruturas de controle (SELECT CASE, EXIT, ...).
O FORTRAN90 descrito pela norma internacional ISO/IEC 1539:1991
(E). O comit X3J3 da ISO, que dedicado exclusivamente ao desenvolvimento do
FORTRAN, est, no momento, preparando uma nova verso da linguagem, que
dever incluir, dentre outros, suporte para processamento paralelo e programao
orientada a objetos.
4.4 Ada
Ada uma linguagem de programao moderna e avanada, planejada e
padronizada de modo a encorajar alguns princpios fundamentais da engenharia de
software: confiabilidade, portabilidade, modularidade, reusabilidade, eficincia,
1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

facilidade de manuteno, ocultamento de informao, tipos abstratos de dados,


generalidade, programao concorrente e mais recentemente programao
orientada a objetos.
O Ada foi introduzido em 1978, desenvolvida por um grupo de projeto
internacional, como resposta aos requisitos levantados pelo Departamento de
Defesa dos Estados Unidos. Seu desenvolvimento foi inspirado originalmente pelo
Pascal e pelo Fortran 77. Em 1983, a linguagem foi transformada em uma norma, a
ANSI/MIL-STD-1815A. Em 1995, uma nova norma, a ISO/IEC 8652:1995(E)
introduziu o chamado Ada 95, onde uma srie de inovaes foram incorporadas.
Dentre outras, o Ada 95 inclui suporte para programao orientada a objetos,
sincronizao orientada a dados, programao in-the-large e sistemas de tempo
real.
Uma das principais vantagens do Ada em relao s outras linguagens
procedurais mais usuais seu suporte para programao em tempo real, o que
inclui primitivas para sincronizao de processos e programao concorrente.

4.5 Modula-2
O Modula-2 uma linguagem de programao desenvolvida por Niklaus
Wirth (o mesmo que desenvolveu o Pascal), no final dos anos 70. uma das
linguagens descendentes do Pascal, assim como o Oberon e o Modula-3. Suas
principais caractersticas so a existncia de um rgido sistema de tipos, mdulos,
uma rica variedade de tipos diferentes, um poderoso conjunto de estruturas de
controle, tipos de procedimentos, tipos opacos e co-rotinas.
At a pouco tempo atrs, no existia uma norma formal para a linguagem
Modula-2. O texto clssico descrevendo a linguagem pode ser encontrado no livro
Programming in Modula-2 3a. edio, publicado pela Springer-Verlag em 1985.
Um comit da ISO, o ISO/JTC1/SC22/WG13 vem, desde 1987, estendendo a
linguagem a cada ano. O resultado dos esforos desse comit resultou na norma
ISO IS10514, que foi votada recentemente e agora a norma oficial para a
linguagem. O WG13 estuda no momento duas normas adicionais, uma que define o
Modula-2 orientado a objetos e outra que determina facilidades genricas para a
linguagem.
4.6 Modula-3
O Modula-3 outra linguagem descendente do Pascal e do Modula-2,
desenvolvida no final dos anos 80, pela Digital Equipment Corporation e a Olivetti.
O Modula-3 corrige diversas deficincias do Pascal e do Modula-2, no que
concerne s prticas modernas de engenharia de software. Em particular, o
Modula-3 mantm a simplicidade e segurana no uso dos tipos, ao mesmo tempo
que prov facilidades no manuseio de excees, concorrncia, programao
orientada a objetos e garbage collection automtico. O Modula-3 ao mesmo
tempo uma linguagem prtica para a implementao de projetos de software e uma
excelente linguagem para o ensino de linguagens de programao.
Assim como o C, o Modula-3 permite que o programador tenha acesso
direto ao hardware, por meio de instrues especiais (programao em baixo
nvel), ao mesmo tempo em que tem mecanismos que protegem o acesso a esses
recursos (tais como memria, acesso a discos, etc), durante as instrues
normais. A implementao SRC do Modula-3 conta com diversos recursos
modernos, tais como o uso de threads e streams . A implementao SRC conta
1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

ainda com um completo conjunto de bibliotecas para os mais diversos usos, tais
como funes de GUI e construo de aplicaes grficas. Conta ainda, com a
definio de objetos de rede, que permitem a criao de programas concorrentes
com grandes vantagens sobre os esquemas tradicionais de programao distribuda.

5. Linguagens Funcionais
Linguagens funcionais so linguagens que evidenciam um estilo de
programao diferente das linguagens procedurais, chamado de programao
funcional. A programao funcional enfatiza a avaliao de expresses, ao invs da
execuo de comandos. As expresses nessas linguagens so formadas utilizandose funes para combinar valores bsicos.
As linguagens funcionais mais conhecidas so o LISP e o Prolog. A
linguagem Scheme tambm frequentemente citada, por ser uma variante
simplificada do LISP. Diversas outras linguagens funcionais so encontradas na
literatura, por exemplo, ASpecT, Caml, Clean, Erlang, FP, Gofer, Haskell, Hope,
Hugs, Id, IFP, J, Miranda, ML, NESL, OPAL,e Sisal.

5.1 Prolog
O Prolog uma linguagem de programao prtica e eficiente, introduzida
em 1973 por Alain Colmerauer e seus associados na Universidade de Marseille,
com o propsito inicial de traduzir linguagens naturais. Em 1977, David Warren da
Universidade de Edimburgo, implementou uma eficiente verso do Prolog,
batizada de Prolog-10. A partir da, tornou-se uma escolha natural para a resoluo
de problemas que envolvem a representao simblica de objetos e relaes entre
objetos. O fundamento bsico por trs do Prolog a noo de programao em
lgica, onde o processo de computao pode ser visto como uma sequncia lgica
de inferncias. Esta noo desenvolve-se ento de modo a resultar em um
mecanismo automtico de prova de teoremas. Atualmente, o Prolog utilizado em
diversas aplicaes na rea de computao simblica, incluindo-se a: bases de
dados relacionais, sistemas especialistas, lgica matemtica, prova automtica de
teoremas, resoluo de problemas abstratos e gerao de planos, processamento de
linguagem natural, projeto de arquiteturas, logstica, resoluo de equaes
simblicas, construo de compiladores, anlise bioqumica e projeto de frmacos.
O Prolog uma linguagem diferente, mas de uma simplicidade marcante.
Essa diferena decorre do fato de o Prolog ser uma linguagem funcional, e no uma
linguagem procedural. Sua estrutura conceitual est intimamente ligada com a
lgica matemtica, o que a torna uma ferramenta indispensvel para o estudo de
lgica. Verses diferentes do Prolog podem ser encontradas nas mais diversas
plataformas, tanto na forma de compiladores como de interpretadores.
5.2 LISP
O LISP (LISt Processor) uma linguagem de programao que foi
desenvolvida utilizando-se idias oriundas do estudo da inteligncia artificial. Sua
constituio tal que programas escritos em LISP tendem a ser um modelo que
emula as habilidades cognitivas do ser humano. O elemento bsico utilizado pelo
LISP so os smbolos, eminentemente smbolos alfanumricos.
A partir de 1984, o LISP comeou a desenvolver-se em diversos dialetos,
sem que um deles dominasse marcadamente os outros. Em um esforo conjunto de

1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

um seleto grupo de pesquisadores em linguagens de programao, representando


diversas instituies, desenvolveu-se o Common Lisp, integrando com sucesso
diversas caractersticas positivas das diferentes verses do Lisp que circulavam na
poca.
O Common Lisp um dialeto do LISP, sucessor do MacLisp e
influenciado marcadamente pelo Zetalisp e de certa forma tambm pelo Scheme e
pelo Interlisp. O Common Lisp hoje utilizado como um padro comercial para a
linguagem Lisp, sendo suportado por um grande nmero de companhias.
Posteriormente, o Common Lisp foi enriquecido pela adio de funes genricas,
dando origem a uma variante sua com capacidade de programao orientada a
objetos chamada CLOS (Common Lisp Object System).

5.3 Scheme
A linguagem Scheme um dialeto do LISP que enfatiza a elegncia
conceitual e a simplicidade. definida pelo padro IEEE P1178, sendo
substancialmente menor que o Common Lisp. Sua especificao tem
aproximadamente 50 pginas, quando comparadas s 1300 pginas do Common
Lisp. O Scheme frequentemente utilizado no estudo de linguagens de
programao, devido sua habilidade em representar vrias abstraes de
programao com um conjunto bem limitado de primitivas.

6. Linguagens Orientadas a Objetos


As linguagens orientadas a objeto foram originadas a partir da necessidade
de se organizar o processo de programao em uma linguagem. A programao
orientada a objetos por si, s uma tcnica. Uma linguagem dita uma linguagem
orientada a objetos, se ela suporta o estilo de programao orientada a objetos.
Um dos objetivos da engenharia de software particionar o projeto de um
programa em diversos mdulos, de tal forma que o desenvolvimento do software e
sua manuteno possam ser implementados com baixo custo. No passado, os
paradigmas da engenharia de software derivavam os mdulos baseados na
funcionalidade de um sistema. Esses mdulos correspondiam basicamente a
mdulos procedimentais, que eram alimentados por dados, gerando novos dados. O
paradigma de orientao a objeto mudou essa concepo, idealizando a idia de
objetos, como mdulos que se comunicam por meio de mensagens, encapsulando
ao mesmo tempo dados e funes, por meio de um mecanismo conhecido como
tipo de dados abstratos.
A primeira linguagem orientada a objetos que se tem notcia foi o Simula,
desenvolvido em 1967. Posteriormente veio o Smalltalk em 1970. Atualmente,
existe uma enorme diversidade de linguagens orientadas a objeto, abrangendo
desde linguagens de propsito geral, at linguagens para multimdia e programao
em lgica.

6.1 Simula
A linguagem Simula foi desenvolvida por O-J Dahl, B. Myhrhaug e K.
Nygaard, no Centro Noruegus de Computao, em Oslo, em 1967, como uma
extenso do ALGOL 60. A linguagem Simula mantm algumas propriedades do
ALGOL 60, alm de extenses tais como os conceitos de classe e co-rotina, bem

1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

como os conceitos associados de varivel de referncia, manipulao de textos e


facilidades de entrada/sada.
Um dos problemas com o Simula que ela no prov proteo para uma
classe, o que foi resolvido posteriormente no Smalltalk.

6.2 Smalltalk
A linguagem Smalltalk foi desenvolvida em 1970. No Smalltalk, no se
chama uma funo, mas manda-se uma mensagem para um objeto. Dessa maneira,
nada do mundo externo pode enxergar a definio de uma classe, o que protege
essa classe de qualquer interferncia.
Um fator caracterstico do Smalltalk que qualquer dado visto como um
objeto, mesmo um nmero. Assim, at mesmo clculos aritmticos simples
beneficiam-se da tcnica de orientao a objeto.
Entretanto, mandar mensagens para objetos pode significar um aumento
de custo computacional que as vezes se torna um desperdcio. Algumas
otimizaes foram efetuadas, portanto, para evitar a passagem de mensagens em
funes simples, tais como operaes aritmticas.
6.3 C++
O C++ uma linguagem de programao de propsito geral, desenvolvida
por Bjarne Stroustrup, nos laboratrios da AT&T Bell, no incio dos anos 80, como
uma evoluo do C, incorporando, dentre outras, as seguintes extenses: suporte
para a criao e uso de tipos de dados abstratos, suporte ao paradigma de
programao orientada a objeto, alm de diversos outras pequenas melhorias nas
construes existentes no C. Algumas de suas caractersticas so o uso de tipos
estticos, a definio de classes, funes virtuais e overload de operadores para o
suporte programao orientada a objeto, o uso de templates para programao
genrica, alm de prover facilidades de programao de baixo nvel (a exemplo do
C).
Depois de seu release inicial pela AT&T, em 1985, diversas
implementaes do C++ tornaram-se disponveis, em mais de 24 tipos de sistemas,
desde PCs at mainframes. Em 1989, o nmero de usurios e diferentes
implementaes do C++ demandaram a gerao de uma norma, sem a qual seria
inevitvel o surgimento de diversos dialetos. Em 1995 os comits de normalizao
da ANSI e ISO C++ chegaram a um nvel de estabilidade na linguagem.
Basicamente, o C++ corresponde linguagem descrita em The C++ Programming
Language (2nd edition) , de Bjarne Stroustrup, ed. Addison Wesley, 1991. A
norma que regula o C++ est atualmente em fase de draft, sendo catalogada
como X3J16/95-0087 pela ANSI e WG21/NO687 pela ISO.

6.4 Objective-C
Objective-C uma linguagem de programao orientada a objetos, que
corresponde a um superconjunto do ANSI-C, provendo classes e passagem de
mensagens de um modo similar ao Smalltalk. A linguagem inclui, quando
comparada ao C, alguns termos e construes adicionais. Por ser tambm uma
linguagem derivada do C, assim como o C++, ela frequentemente comparada a
esta. O desenvolvimento do C++ se baseia no estilo de programao orientada a
objetos iniciado pela linguagem Simula 67. O Objective-C, por seu lado,
originrio do estilo de programao encontrado no Smalltalk. No C++, o tipo
1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

esttico de um objeto determina quando ele pode receber uma mensagem, ao passo
que no Objective-C, seu tipo dinmico utilizado. O estilo de programao
oriundo do Simula 67 mais seguro, uma vez que mais erros podem ser detectados
ainda em tempo de compilao. O estilo desenvolvido pelo Smalltalk mais
flexvel.
Algumas das vantagens do Objective-C incluem a possibilidade de se
carregar as definies das classes e mtodos em tempo de execuo, o fato de os
objetos serem tipados dinamicamente, a possibilidade de se utilizar objetos
remotos, a persistncia e a existncia de protocolos de delegao e meta-ao.
Alguns de seus principais problemas so a inexistncia de herana mltipla e a
inexistncia de variveis de classe.

6.5 Java
A linguagem Java foi desenvolvida a partir de 1990 pela Sun
Microsystems, como uma linguagem que pudesse executar o mesmo programa em
mltiplas plataformas de hardware e software. Seu uso imediato seria a execuo
de programas pela Internet. Para tanto, no poderia haver nenhum vnculo da
linguagem com o hardware e/ou o sistema operacional utilizado, de modo que em
princpio qualquer computador conectado Internet e capaz de entender a
linguagem, fosse capaz de executar os programas. Outra especificao bsica da
linguagem seria a segurana, ou seja, como as mquinas executando os programas
em Java estariam em princpio executando programas sem garantias de
confiabilidade e procedncia, um programa em Java no poderia de modo algum
influir na execuo de outros programas e o prprio sistema operacional. Com isso,
alguns recursos como alocao dinmica de memria e acesso a arquivos foram
sistematicamente eliminados. A linguagem Java foi desenvolvida a partir de um
subconjunto do C++, gerando uma linguagem que originalmente foi chamada de
Oak. Em 1995, a linguagem foi re-batizada como Java e introduzida na
comunidade Internet.
O Java uma linguagem parcialmente compilada e parcialmente
interpretada. Um compilador Java transforma o programa fonte, escrito em Java,
em arquivos-objeto chamados bytecodes. Esses bytecodes precisam ser executados
ento por interpretadores Java que so desenvolvidos para cada plataforma de
hardware/software. Os bytecodes podem ser basicamente de dois tipos. O primeiro
tipo tem acesso completo mquina, ou seja, capaz de manipular a memria, o
console e o sistema de arquivos. Programas desse tipo so chamadas de aplicaes
Java. O segundo tipo de bytecode sofre uma srie de restries quanto ao acesso de
memria, console e sistema de arquivos. Essas restries so colocadas em nome
da segurana, visto que seu destino a elaborao de programas que sero
distribudos pela Internet, e por isso no provm de fonte conhecida ou confivel.
Esses bytecodes so chamados de Java applets. Os applets tm uma capacidade de
atuao bem restrita, de modo que no possam causar danos ao sistema durante sua
execuo. Normalmente sua atuao se restringe a animaes e interaes mnimas
com o usurio, sendo que seu uso marcadamente em browsers do WWW (World
Wide Web). Para executar applets, os browsers necessitam interpretar os bytecodes
Java. Browsers com essa capacidade so chamados de Java aware. Uma outra
variante da linguagem Java o JavaScript, que so programas colocados em forma
de cdigo fonte, includos nos textos das pginas HTML. Programas escritos com o

1997 DCA/FEEC/UNICAMP

Gudwin

Linguagens de Programao

JavaScript no precisam ser compilados, nem geram bytecodes, sendo interpretados


diretamente pelos browsers quando a pgina HTML interpretada.

6.6 CLOS
CLOS (Common Lisp Object System) um padro de programao
orientada a objetos desenvolvido a partir do Common Lisp. A maioria das
implementaes do Common Lisp incluem atualmente uma implementao
tambm do CLOS, por exemplo: MCL, {A}KCL, Allegro CL (inclundo-se
Allegro CL\PC), Ibuki, Lucid, Medley, Symbolics Genera, CLOE, e Harlequin
LispWorks.
6.7 Eiffel
A linguagem Eiffel uma avanada linguagem de programao orientada
a objetos, que enfatiza o projeto e a construo de software reutilizvel de alta
qualidade. A linguagem Eiffel no corresponde a um sub-conjunto ou extenso de
nenhuma outra linguagem. uma linguagem que enfatiza o uso de tcnicas de
programao orientada a objeto, impedindo algumas prticas que podem ser
potencialmente perigosas, e que so encontradas em outras linguagens. Entretanto,
ela permite um interfaceamento com outras linguagens, tais como o C ou o C++. A
linguagem Eiffel suporta o conceito de design by contract, para garantir a
consistncia do software gerado.
A linguagem Eiffel foi criada por Bertrand Meyer, e desenvolvida por sua
companhia, a Interactive Software Engineering (ISE). Seu design inspirado por
algumas preocupaes levantadas por engenheiros de software, diante da criao de
sistemas mais complexos. Como linguagem, vem evoluindo continuamente, desde
sua concepo, em 1986.
Compiladores para a linguagem Eiffel podem ser encontrados para
diversos sistemas operacionais e plataformas de hardware, destacando-se as
seguintes:
PC: DOS, OS/2, Windows 3.1, Windows 95, Windows NT, PC Unix
(Interactive, SCO, and ESIX), Nextstep, Linux
Outras plataformas de Hardware: Sparc (SunOS & Solaris),
NeXTStep, HP9000, DEC 5xxx, Sony News, DG Aviion, DEC Alpha OSF-1, DEC
OpenVMS, RS6000, Pyramid, QNX, Silicon Graphics, Macintosh (Motorola
& PowerPC)

7. Linguagens para Aplicaes Especficas


7.1 Linguagens para Bancos de Dados
7.1.1 Clipper
O CA-Clipper uma linguagem de programao para aplicaes em
bancos de dados, desenvolvida e comercializada pela Computer Associates, que
corresponde a um superconjunto do dBASE III+, incorporando tambm algumas
caractersticas do C/C++ e Smalltalk.

1997 DCA/FEEC/UNICAMP

10

Gudwin

Linguagens de Programao

7.1.2 SQL
SQL um acrnimo para Structured Query Language. O SQL uma
linguagem de acesso a banco de dados originria de plataformas de grande porte
(mainframes e mini-computadores), que entretanto vem se tornando popular em
PCs, principalmente em ambientes do tipo cliente-servidor.
O SQL possui um ncleo comum, que geralmente se encontra disponvel
em todos os produtos que implementam a linguagem. Esse ncleo prov os
fundamentos bsicos para a criao e o uso de bases de dados. Entretanto,
diferentes implementaes incorporam extenses ao SQL, colocadas com o intuito
de diferenciar essas implementaes para certos tipos de aplicaes.
O SQL baseado no modelo de base de dados relacional, desenvolvido
por E.F. Codd em 1970, nos laboratrios da IBM. Nos anos subsequentes esse
modelo foi refinado por C.J. Date, tambm da IBM.
Em 1992, colocaram-se duas verses para uma norma definindo o SQL, a
ISO/IEC 9075:1992, Information Technology - Database Languages - SQL e a
ANSI X3.135-1992, Database Language SQL . Essas normas representam o
chamado SQL92.
Em 1993, tanto a ANSI como o ISO decidiram dividir o desenvolvimento
do SQL em uma norma multi-partes: Framework, Foundation, SQL/CLI,
SQL/PSM, SQL/Bindings, SQL/XA e SQL/Temporal. Essa norma multi-partes foi
ento designada SQL3, estando, entretanto, ainda incompleta.
Os esforos no desenvolvimento da linguagem concentram-se no
momento em definir uma linguagem computacional completa para a definio e
gerenciamento de objetos complexos e persistentes. Isso inclui: hierarquias de
generalizao e especializao, herana mltipla, tipos definidos pelo usurio,
triggers e asseres, suporte a sistemas baseados em conhecimento, expresses
recursivas de busca, alm de ferramentas adicionais de administrao de dados.
Inclui ainda a especificao de tipos abstratos de dados, identificadores de objetos,
mtodos, herana, polimorfismo, encapsulamento e todas as outras facilidades
normalmente associadas com o gerenciamento de objetos. A expectativa para o
trmino do SQL3 no momento para 1999.

7.2 Linguagens para Simulao


7.2.1 MATLAB
O MATLAB (MATrix LABoratory) uma linguagem desenvolvida pela
MathWorks, voltada para aplicaes cientficas, eminentemente para simulaes de
sistemas. uma linguagem estruturada bem verstil, de sintaxe simples, mas com
todas as estruturas de controle usuais encontradas em uma linguagem procedural.
Sua maior caracterstica a implementao de uma sofisticada e eficiente
biblioteca de funes, envolvendo matrizes e funes de plotting, que fazem com
que se torne muito apropriada em clculos cientficos que exigem uma visualizao
de resultados.

1997 DCA/FEEC/UNICAMP

11

Gudwin

Linguagens de Programao

7.3 Linguagens de Scripts


7.3.1 Tcl/Tk
O TCL (Tool Command Language) uma linguagem desenvolvida por
John Ousterhout, em 1990, na Universidade da Califrnia, Berkeley. O TK um
toolkit para o desenvolvimento de GUIs, baseado no X-Windows, que fornece
widgets com visual semelhante ao Motif. Juntos, eles so conhecidos como
TCL/TK, e correspondem a uma linguagem de script para o desenvolvimento de
interfaces grficas em aplicaes. Entretanto, o TCL suporta muitas das
caractersticas de linguagens procedurais convencionais, incluindo-se o uso de
variveis, chamadas de procedimentos e estruturas de controle. O TCL/TK muito
utilizado, devido a ser uma ferramenta amigvel para a gerao de interfaces
grficas. Uma das vantagens do TCL/TK que ele pode ser utilizado
conjuntamente com outras linguagens de programao, por exemplo o C. Com isso,
implementa-se a interface grfica em TCL/TK e partes mais sofisticadas do
programa em outras linguagens mais adequadas.
7.3.2 Perl
A linguagem PERL (Practical Extraction and Report Language) uma
linguagem interpretada, desenvolvida por Larry Wall, otimizada para a varredura
de arquivos de texto, extraindo informaes destes, e imprimindo reports
baseados nessas informaes. tambem uma boa linguagem para diversas tarefas
de administrao de sistemas. A linguagem foi criada com a inteno de ser mais
prtica (fcil de usar, eficiente e completa) do que bonita (pequena, elegante ou
mnima). Ela combina diversas caractersticas do C, sed, awk e sh, de modo que
programadores com familiaridades nessas linguagens devem encontrar pouca
dificuldade. A sintaxe das expresses bem prxima do C. O PERL, ao contrrio
de outras linguagens de script, no limita o uso da memria (est limitado
memria fsica), permite recurso ilimitada e suas tabelas hash, usadas por arrays
associados, pode crescer tanto quanto o necessrio, de modo a evitar a degradao
do desempenho.
O PERL usa uma tcnica sofisticada de pattern matching, de modo que
pode varrer rapidamente pacotes grandes de dados. Apesar de ser otimizada para a
varredura de texto, o PERL pode lidar tambm com dados binrios.

7.4 Linguagens de Formatao de Textos


7.4.1 TeX/LaTeX
O TeX uma linguagem para editorao eletrnica criada por Donald E.
Knuth, que baseada na definio de macros. Um conjunto mnimo de macros
conhecido como plain TeX, sendo utilizado como base para a construo de
packages mais sofisticados. O LaTeX um package de macros em TeX,
originalmente desenvolvido por Leslie Lamport em 1985, que estrutura um
documento por meio de pargrafos lgicos, permitindo ao autor se concentrar mais
no texto do que na forma de sua apresentao. Uma das caractersticas que tornou o
LaTeX muito popular a sua flexibilidade para a descrio de frmulas
matemticas.

1997 DCA/FEEC/UNICAMP

12

Gudwin

Linguagens de Programao

7.4.2 HTML
O HTML (Hyper Text Markup Language) uma linguagem de markups,
que permite a formatao de texto e imagens, utilizada para a construo de
pginas hiper-mdia na Internet. Junto com o protocolo de rede http, foi um dos
responsveis pela exploso do WWW (World Wide Web), que popularizou a
Internet mundo afora. O HTML uma aplicao do SGML (Standard Generalized
Markup Language), e devido sua popularidade, diversos conversores de e
para HTML foram desenvolvidos para os mais diversos aplicativos envolvendo
textos, grficos e imagens.
O HTML encontra-se j na sua verso 3.2. A verso 3.0 (proposta) foi
abandonada por ser complexa demais para padronizao imediata. A verso atual
portanto, neste sentido, mais modesta que a 3.0 (por exemplo, deixando de
incluir suporte a equaes matemticas).
7.4.3 Postscript
Postscript uma linguagem de programao otimizada para a impresso
de grficos e textos. Dentro do jargo utilizado, trata-se de uma linguagem de
descrio de pgina. O Postscript foi introduzido pela Adobe em 1985,
aparecendo inicialmente na impressora Apple LaserWriter. O propsito bsico do
Postscript foi a criao de uma linguagem conveniente para a descrio de imagens
em um modo independente de dispositivo. Essa independncia diz respeito ao fato
da imagem ser descrita sem nenhuma referncia a caractersticas especficas de
impressoras ou outros dispositivos de visualizao. Desse modo, programas de
editorao de texto podem gerar arquivos Postscript, que nada mais so do que um
arquivo de comandos na linguagem Postscript, que podem ser enviados diretamente
para impressoras capazes de interpretar o Postscript.
A linguagem Postscript inclui ainda um conjunto padro de fontes,
chamadas de fontes Postscript, que so eventualmente utilizadas por outras
linguagens de programao para exibio de textos em consoles grficos.
Devido necessidade de inserir imagens codificadas via Postscript dentro
de pginas Postscript, surgiu o Postscript encapsulado (tambm conhecido como
EPS), que permite essa insero.
7.4.4 PDF
O PDF (Portable Data Format) um aperfeioamento da idia inicial do
Postscript, corrigindo alguns de seus defeitos, e enfatizando algumas caractersticas
cujo crescimento da Internet e do WWW demandou. O PDF, assim como o
Postscript foi desenvolvido pela Adobe, e sua maior vantagem em relao ao
Postscript a facilidade de manipulao e busca em textos previamente
formatados. O PDF vem a ser uma tentativa de superar os problemas intrnsecos do
Postscript e do HTML, no contexto de gerao de documentos hipermdia na
Internet. Ele mantm o mesmo poder descritivo do Postscript, e a mesma agilidade
e poder de manipulao do HTML.
Paralelo a algumas iniciativas como o HTML verso 3, que busca
aprimorar a linguagem padro de hipermdia, a Adobe tenta vender o PDF como
uma alternativa ao HTML verso 2, e luta por tentar coloc-lo como um padro de
desenvolvimento de hipermdia para o WWW.

1997 DCA/FEEC/UNICAMP

13

Gudwin

Linguagens de Programao

8. Linguagens de Programao Visual


As linguagens de programao visual partem do princpio de que grficos
so mais fceis de serem entendidos do que textos. Sendo assim, a especificao de
um programa por meio de diagramas e outros recursos grficos tende a tornar a
prpria programao mais fcil, permitindo mesmo que usurios sem muitas
habilidades em programao gerem programas.
Uma representao grfica de um programa tende a ser uma descrio de
alto nvel para o funcionamento do programa. Este tipo de representao
normalmente limita bastante a flexibilidade dos programas que podem ser
desenvolvidos, mas permite que rpida e facilmente se elaborem programas, dentro
de um escopo limitado de opes. Com isso, as aplicaes alvo para a programao
visual se restringem a aplicaes bem especficas, que podem se beneficiar deste
tipo de paradigma, no sendo, tais linguagens, linguagens de programao para
propsitos gerais.

8.1 Ferramentas de Programao Visual


Nem todo uso de grficos e diagramas visuais em programao podem ser
chamados de linguagens visuais. Em alguns casos, o mais adequado cham-los de
ferramentas de programao visual. Nesse caso, o uso de grficos e diagramas no
especifica diretamente um programa a ser executado, mas uma ferramenta de
auxlio na elaborao de tais programas. Por exemplo, os toolkits de elaborao de
interface, que permitem ao usurio especificar diferentes controles em janelas de
interface do programa, de forma visual, encontram-se nesta categoria.
8.2 Linguagens de Programao Visual Hbridas
Nessa categoria, incluem-se as linguagens de programao que no so
somente visuais, mas tm parte de sua especificao determinada de forma visual.
Normalmente este tipo de linguagem de programao visual no simplesmente
uma linguagem, mas um produto, que comercializado por uma empresa de
software. Em alguns casos esse produto est mais para uma linguagem de
programao convencional (por textos), dotada de diversas ferramentas de
programao visual, do que realmente linguagens de programao visual. Em
outros casos, as ferramentas de programao visual efetivamente participam da
elaborao do programa, como por exemplo na determinao de hierarquia de
classes e mtodos, em linguagens orientadas a objeto. As linguagens que incluemse nesta categoria so normalmente desenvolvimentos de linguagens de
programao convencional, acrescidas das ferramentas visuais que lhes do o
status de visuais. Exemplos incluem o Delphi, o Visual Basic, o Visual C++.
8.3 Linguagens de Programao Visual Puras
As linguagens de programao visual puras so aquelas em que o
programa determinado exclusivamente por meio dos grficos e diagramas que o
especificam. O paradigma mais eficiente nesse tipo de programao a elaborao
de diagramas com ns e arcos, sendo que os ns representam mdulos de software,
a partir de uma biblioteca prvia de mdulos, e os arcos determinam a conexo
entre os diferentes mdulos. Como esses programas dependem fortemente dos
mdulos de software que existem previamente no sistema, seu uso limitado a

1997 DCA/FEEC/UNICAMP

14

Gudwin

Linguagens de Programao

aplicaes bem definidas. Alguns dos mais bem sucedidos exemplos de linguagens
de programao visual puras so dados a seguir.
8.3.1 Khoros
O Khoros uma linguagem de programao visual utilizada
principalmente em computao grfica. Na verdade o Khoros mais do que
simplesmente uma linguagem, mas todo um ambiente de programao grfica,
que permite ao programador efetuar o processamento de imagens e anlises
sofisticadas por meio da elaborao de diagramas com ns e arcos. O Khoros vem
sendo utilizado com resultados muito positivos tanto para a anlise como sntese de
imagens grficas, principalmente nas reas mdicas. Entretanto, por ter uma
especificao aberta, pode ser utilizado em princpio em qualquer outro tipo de
aplicao.
8.3.2 Simulink
O Simulink outra linguagem de programao visual, utilizada
eminentemente na simulao de sistemas dinmicos. O Simulink opera em
conjunto com o Matlab, de modo a permitir a especificao de diferentes sistemas
dinmicos, determinar as condies e parmetros da simulao, e efetivamente
execut-la. Permite ainda a anlise dos resultados da simulao. De modo anlogo
ao Khoros, o Simulink prov uma biblioteca de mdulos bsicos, que podem ser
utilizados na elaborao de diagramas que especificam o sistema, a simulao e a
anlise a ser efetuada. Os mdulos so conectados por arcos que determinam o
relacionamento entre os diferentes mdulos. Mdulos sofisticados podem ser
construdos e transformados tambm em mdulos, podendo ento ser referenciados
por outros programas. Por se utilizar do Matlab, novos mdulos podem ser
construdos, a partir do Matlab, ou ento em linguagem C.

1997 DCA/FEEC/UNICAMP

15

Você também pode gostar