Você está na página 1de 24

Paradigmas de

Linguagem de
Programao
Evoluo das principais linguagens de
programao

Genealogia das principais linguagens


de programao

Programao de Hardware Mnima:


Pseudocdigos

O que estava errado ao usar cdigo de mquina?

Baixa legibilidade

Modificaes de programas tediosas e passveis de erros

Deficincias de mquina sem indexao ou pontoflutuante

Pseudocdigos: Short Code


Short Code foi desenvolvida por John
Mauchly em 1949 para o computador
BINAC
Expresses foram codificadas
Exemplo de operaes:
01
02 )
03 =
04 /

06 abs value 1n (n+2)nd power


07 +
2n (n+2)nd root
08 pause
4n if <= n
09 (
58 print and tab

Pseudocdigos: Speedcoding

Speedcoding foi desenvolvido por John Backus em 1954 para o


IBM 701

Pseudoinstrues para operaes aritmticas e funes


matemticas

Desvios condicionais e incondicionais

Facilidade para incrementar os registradores de endereo


automaticamente

Memria usvel restante aps carregar o interpretador de


apenas 700 palavras

IBM 704 e Fortran


Fortran 0: 1954 no implementado, ficou
somente no papel (especificao).
Fortran I: 1957
Desenvolvido para o IBM 704, que tinha registros de indexao e
hardware de ponto-flutuante
Levou ideia de linguagens de programao compiladas,
porque no havia o esconderijo para o custo da interpretao
Ambiente de desenvolvimento

Computadores com memrias pequenas e no confiveis


Aplicaes eram cientficas
No havia maneiras eficientes de programar computadores
Velocidade do cdigo objeto era o objetivo principal

Viso geral do Fortran I

Primeira verso implementada do FORTRAN

Sem compilao separada

Compilador lanado em abril de 1957, depois de 18 anos de


trabalho

Programas com mais de 400 linhas raramente so compilados


corretamente, especialmente devido pouca confiabilidade
do 704

O cdigo era muito rpido

Rapidamente se tornou amplamente usado

Fortran II: Distribudo em 1958

Compilao independente

Corrigiu falhas

Fortran IV: Evoluiu entre 1960-62

Declaraes de tipo explcitas

Sentenas de controle de laos lgicos

Nomes de subprogramas podem ser parmetros

Padro ANSI em 1966

Fortran 77: Tornou-se o novo padro em 1978

Manipulao de caracteres de cadeias

Sentenas de controle de laos lgicos

Um If com uma clusula opcional Else

Fortran 90: Drasticamente diferente do Fortran 77

Mdulos

Vetores dinmicos

Ponteiros

Registros

Sentena CASE

Parmetro de verificao de tipo

Fortran 95 apenas algumas mudanas (Forall)

Fortran 2003 Orientao a objeto e comunicao transparente


com a linguagem C

Avaliao de Fortran

Compiladores altamente otimizados (todas as


verses antes de 90)

Tipos e armazenamento para todas as variveis so fixados antes


da execuo

Mudou drasticamente para sempre a forma


como os computadores so usados

Caracterizada como a lngua franca do


mundo da computao

Programao funcional: Lisp

List Processing Language

Projetada no MIT por McCarthy

Pesquisa de inteligncia artificial (IA) precisava de uma


linguagem para

Processar dados em listas (em vez de vetores)

Computao simblica (em vez de numrica)

Apenas dois tipos de dados: tomos e listas

Sintaxe baseada em lambda calculus

Pascal - 1971

Projetada por Wirth (ex-membro do comit do ALGOL 68)

Projetada para ser usada como veculo educacional

Pequena, simples, nada realmente novo

O maior impacto foi no ensino de programao

Do meio dos anos 1970 at o fim dos 1990, foi a linguagem


mais usada para o ensino de programao

C 1972
Projetada para a programao de
sistemas (no Bell Labs (AT&T), por Dennis
Richie)
Evoluda a partir de BCLP, B e ALGOL 68
Poderoso conjunto de operadores, mas
verificao de tipos pobre
Primeira linguagem de alto padro
implementada no UNIX
Muitas reas de aplicao

Programao orientada a objetos:


Smalltalk

Projetada na Xerox PARC

Primeira linguagem de programao a oferecer suporte


completo programao orientada a objetos

Pioneira no design da interface grfica do usurio

Combinando recursos imperativos e


programao orientada a objetos: C++
Projetada no Bell Labs por Stroustrup em 1980
Desenvolvida a partir de C e SIMULA 67
Facilidades para programao orientada a objetos,
emprestadas
do SIMULA 67
Fornece manipulao de excees
Linguagem grande e complexa, em parte porque suporta
programao procedural e orientada a objetos
Cresceu rapidamente em popularidade
Padro ANSI aprovado em novembro de 1997
Verso da Microsoft (lanado com .NET em 2002):
Managed C++

Linguagens relacionadas a C++

Eiffel (projetada por Bertrand Meyer - 1992)

No diretamente derivada de outra linguagem

Menor e mais simples do que C++

No teve a popularidade de C++, porque muitos entusiastas


de C++ j eram programadores de C

Delphi (Borland)

Pascal mais recursos para suporte de programao orientada


a objeto

Mais elegante e seguro do que C++

Uma linguagem orientada a objetos baseada


no paradigma imperativo: Java
Projetada na Sun no incio dos anos 1990
C e C++ no eram satisfatrios para dispositivos eletrnicos
embarcados

Baseada em C++

Significantemente simplificada
Suporta apenas programao orientada a objetos
Tem referncias, mas no tem ponteiros
Inclui forma simples de controle de concorrncia

Avaliao de Java

Eliminou muitos recursos inseguros de C++

Suporta concorrncia

Bibliotecas de classes para interfaces grficas com o


usurio, acesso a bases de dados e redes

Portabilidade: Mquina Virtual Java (JVM),


compiladores Just-in-Time (JIT)

Amplamente usado para programao Web

Uso aumentou mais rapidamente do que qualquer


linguagem anterior

Verso mais recente, 7.0, lanada em 2011

Linguagens de Scripting para Web

Perl

JavaScript

Desenvolvida por Larry Wall lanada primeiro em 1987


Variveis so estaticamente tipadas e implicitamente declaradas
Trs espaos de nomes distintos para variveis, denotados pelo primeiro caractere de
nomes de variveis
Teve uso difundido para programao CGI na Web
Tambm usado como ferramenta de administrao de sistema em UNIX
Comeou na Netscape, mas depois se tornou um projeto conjunto da Netscape com a
Sun Microsystems
Permitia aos documentos HTML requisitarem a execuo de programas no servidor; usado
na criao de documentos HTML dinmicos
Puramente interpretada
Relacionado ao Java somente por meio de sintaxe similar

PHP

PHP: Hypertext Preprocessor (Processador de Hipertexto), projetado por Rasmus Lerdorf


Linguagem de scripting do lado do servidor embutida em HTML, geralmente utilizados
para processamento de formulrios e acesso de dados pela Web
Puramente interpretada

Linguagens de Scripting para Web

Python

Linguagem de scripting orientada a objetos

Com verificao de tipos, mas tipada dinamicamente (alterao do tipo


de dados no meio da implementao)

Usada para programao em CGI(Common Gateway Interface) e


administrao de sistemas

Suporta listas, tuplas e dicionrios

Lua

Linguagem de scripting que oferece suporte para programao


procedural e funcional com extensibilidade como objetivo primrio

Com verificao de tipos, mas tipada dinamicamente

Usada para programao em CGI e administrao de sistemas

Suporta listas, tuplas e dicionrios, todos com a sua nica estrutura de


dados, a tabela

Linguagens de Scripting para Web

Ruby
Projetada no Japo por Yukihiro Matsumoto (tambm
conhecido como Matz)
Comeou como um substituto para Perl e Python
Linguagem de scripting orientada a objetos pura
Todos os dados so objetos

A maioria dos operadores so implementados como


mtodos, que podem ser redefinidos pelo cdigo do usurio
Puramente interpretada

Uma Linguagem baseada em C


Para o Novo Milnio: C#

Parte da nova plataforma de desenvolvimento


.NET (2000)
Baseada em C++ , Java e Delphi
Fornece uma linguagem para o desenvolvimento
de software baseado em componentes
Todas as linguagens do .NET usam o chamado
Common Type System (CTS Sistema de Tipos
Comum), que fornece uma biblioteca de classes
comum

Linguagens hbridas de marcao/programao


XSLT
XML (eXtensible Markup Language Linguagem de Marcao
Extensvel) uma linguagem de metamarcao
XSLT (eXtensible Stylesheet Language Transformations
Transformaes em Linguagem de Folhas de Estilo Extensvel)
transforma documentos XML para visualizao
Contrutores de programao

JSP
Java Server Pages: coleo de tecnologias projetadas para oferecer
suporte
a documentos Web dinmicos

A tecnologia Java para a criao de pginas web com


programao no servidor.