evolução e futuro das linguagens de programação alessandro vasconcelos gladstone ferreira...

38
Evolução e Futuro das Evolução e Futuro das Linguagens de Linguagens de Programação Programação Alessandro Vasconcelos Alessandro Vasconcelos Gladstone Ferreira Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Seminário de Engenharia de Software e Linguagens de Programação Programação

Upload: internet

Post on 19-Apr-2015

108 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

Evolução e Futuro das Evolução e Futuro das Linguagens de ProgramaçãoLinguagens de Programação

Alessandro Vasconcelos Alessandro Vasconcelos Gladstone FerreiraGladstone Ferreira

Seminário de Engenharia de Software e Linguagens de ProgramaçãoSeminário de Engenharia de Software e Linguagens de Programação

Page 2: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 2

Motivação!Motivação!

Num mundo com computadores cada Num mundo com computadores cada vez mais velozes, o que ainda afeta a vez mais velozes, o que ainda afeta a produtividade?produtividade?

Porque existem tantas linguagens de Porque existem tantas linguagens de programação?programação?

Daqui a 10, 20, ou 100 anos, em que Daqui a 10, 20, ou 100 anos, em que linguagem você estará programando?linguagem você estará programando?

Page 3: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 3

RoteiroRoteiro

A questão da ProdutividadeA questão da Produtividade A historia no passar das décadasA historia no passar das décadas A árvore evolucionaria da linguagensA árvore evolucionaria da linguagens As linguagens do futuroAs linguagens do futuro

Page 4: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 4

A questão da ProdutividadeA questão da Produtividade

O hardware já é suficientemente O hardware já é suficientemente poderoso por si só!poderoso por si só!

A produtividade se centra no A produtividade se centra no Programador:Programador: Escrever programas corretamenteEscrever programas corretamente Escrever programas rapidamenteEscrever programas rapidamente Escrever programas facilmenteEscrever programas facilmente

Page 5: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 5

Como Aumentar a Como Aumentar a ProdutividadeProdutividade

Através de um Processo (ES)Através de um Processo (ES) Bons processos podem aumentar a Bons processos podem aumentar a

produtividade em 20%*produtividade em 20%*

Através de FerramentasAtravés de Ferramentas Verificações, Análises, Geração de CódigoVerificações, Análises, Geração de Código Boas ferramentas podem aumentar a produtividade em 10%*Boas ferramentas podem aumentar a produtividade em 10%*

Através da Linguagem de ProgramaçãoAtravés da Linguagem de Programação Abstrações, mecanismos, serviços, garantiasAbstrações, mecanismos, serviços, garantias Esse é o aspecto que mais influi chegando a aumentar a Esse é o aspecto que mais influi chegando a aumentar a

produtividade em mais de 100% *produtividade em mais de 100% *

* Segundo o Software Productivity Research* Segundo o Software Productivity Research

Page 6: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 6

Por que tantas Linguagens Por que tantas Linguagens de Programação?de Programação?

Por que algumas pessoas falam inglês Por que algumas pessoas falam inglês e outras português?e outras português?

Linguagens de programação são Linguagens de programação são desenvolvidas com diferentes desenvolvidas com diferentes objetivos, para diferentes tipos de objetivos, para diferentes tipos de programas, por diferentes pessoasprogramas, por diferentes pessoas

Page 7: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 7

Os ParadigmasOs Paradigmas

ImperativoImperativo Ênfase na estrutura de dados e na Ênfase na estrutura de dados e na

atribuição dos valores. Dependência atribuição dos valores. Dependência explícita da arquitetura de Von Neumannexplícita da arquitetura de Von Neumann

FuncionalFuncional Ênfase nos valores manipulados, e não na Ênfase nos valores manipulados, e não na

forma de armazenamento.forma de armazenamento.

Orientado a ObjetosOrientado a Objetos Ênfase sobre os objetos e a troca de Ênfase sobre os objetos e a troca de

mensagens entre esses.mensagens entre esses.

Page 8: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

Um Pouco de História!Um Pouco de História!

Page 9: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 9

Década de 40Década de 40

Os primeiros computadores Os primeiros computadores eletrônicos eram monstruososeletrônicos eram monstruosos

A programação era em código binárioA programação era em código binário A manutenção era difícil:A manutenção era difícil:

As válvulas queimavam regularmenteAs válvulas queimavam regularmente

Page 10: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 10

Início da década de 50Início da década de 50

Linguagens AssemblyLinguagens Assembly Permitia programas maiores, reusáveis, e Permitia programas maiores, reusáveis, e

re-alocáveis.re-alocáveis. O código de máquina era produzido por O código de máquina era produzido por

um Assemblerum Assembler Correspondência um-pra-um entre o Correspondência um-pra-um entre o

código assembly e o código da máquinacódigo assembly e o código da máquina Posteriormente surgiram os macrosPosteriormente surgiram os macros

Page 11: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 11

Meio da Década de 50Meio da Década de 50

Surge FORTRANSurge FORTRAN É considerada a primeira linguagem de É considerada a primeira linguagem de

alto-nível.alto-nível. Desenvolvimento independente da Desenvolvimento independente da

plataformaplataforma Aplicada na solução de problemas na Aplicada na solução de problemas na

ciência e na engenhariaciência e na engenharia

Outras linguagens da época:Outras linguagens da época: Algol58, Cobol, Lisp, BasicAlgol58, Cobol, Lisp, Basic

Page 12: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 12

Década de 60Década de 60

Fortalecimento da Programação Fortalecimento da Programação EstruturadaEstruturada

PascalPascal Sem go to!Sem go to! Fortemente tipadaFortemente tipada Procedimentos alinhadosProcedimentos alinhados

SimulaSimula Primeira linguagem com objetos, classes Primeira linguagem com objetos, classes

e subclassese subclasses

Page 13: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 13

Década de 70 (1/2)Década de 70 (1/2)

CC Sucessora de B, que veio de BCPLSucessora de B, que veio de BCPL Construções de alto-nívelConstruções de alto-nível

AdaAda Incentivada pelo Departamento de DefesaIncentivada pelo Departamento de Defesa Usada em programação de sistemas Usada em programação de sistemas

embarcadosembarcados

Page 14: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 14

Década de 70 (2/2)Década de 70 (2/2)

SmallTalkSmallTalk Rica graficamenteRica graficamente

GUIGUI FontesFontes

Orientada a ObjetosOrientada a Objetos Objetos se comunicam via troca de Objetos se comunicam via troca de

mensagensmensagens

PrologProlog Baseada em regras, fatos, e buscasBaseada em regras, fatos, e buscas

Page 15: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 15

Década de 80Década de 80

C++C++ Primeira linguagem Orientada a objetos Primeira linguagem Orientada a objetos

amplamente adotada.amplamente adotada. Implementada como um pré-processador Implementada como um pré-processador

para o compilador Cpara o compilador C

HaskelHaskel Avaliação PreguiçosaAvaliação Preguiçosa Polimorfismo ParamétricoPolimorfismo Paramétrico Inferência de TiposInferência de Tipos

Page 16: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 16

Década de 90Década de 90

O estouro da Internet!O estouro da Internet! HTMLHTML

A linguagem da World Wide WebA linguagem da World Wide Web É uma linguagem de marcação, e não de É uma linguagem de marcação, e não de

programaçãoprogramação

Linguagens ScriptLinguagens Script São as chamadas linguagens São as chamadas linguagens

interpretadasinterpretadas Perl, JavaScript, VBScriptPerl, JavaScript, VBScript

Page 17: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 17

Década de 90Década de 90

JavaJava Orientada a objetos, compilada e Orientada a objetos, compilada e

interpretada (bytecodes)interpretada (bytecodes) 1996 – Java 1.01996 – Java 1.0 1997 – Java 1.1 e 1.2 (Swing, Collection)1997 – Java 1.1 e 1.2 (Swing, Collection) 1998 – Java 1.2 final1998 – Java 1.2 final 2000 – Java 1.3 final2000 – Java 1.3 final

Page 18: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 18

Década 2000Década 2000

Java Java 2004 – Java 1.5 (tipos parametrizados, 2004 – Java 1.5 (tipos parametrizados,

enumeradores)enumeradores)

XML XML Padrão de integraçãoPadrão de integração

Microsoft .NETMicrosoft .NET Múltiplas linguagensMúltiplas linguagens

C++, C#, Visual Basic, Cobol, FortranC++, C#, Visual Basic, Cobol, Fortran

Uma máquina virtual comumUma máquina virtual comum

Page 19: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

O que o futuro nos reserva?O que o futuro nos reserva?

Page 20: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 20

Árvore Evolucionária das Árvore Evolucionária das Linguagens de Programação (1/2)Linguagens de Programação (1/2)

Como asComo as espécies vivas, as linguagens possuem uma espécies vivas, as linguagens possuem uma história facilmente categorizada em forma de árvores história facilmente categorizada em forma de árvores evolucionárias, com “evolucionárias, com “galhosgalhos” que não podem mais se ” que não podem mais se ramificar.ramificar.

AA evolução das linguagens difere da evolução das evolução das linguagens difere da evolução das espécies porque alguns ramos podem convergir. espécies porque alguns ramos podem convergir.

Objetivo dessa abordagem:Objetivo dessa abordagem: aproximarmos dos ramos aproximarmos dos ramos principais da arvore evolucionária das linguagensprincipais da arvore evolucionária das linguagens,, para encontrar as linguagens com chances de futuropara encontrar as linguagens com chances de futuro..

Page 21: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 21

Árvore Evolucionária das Árvore Evolucionária das Linguagens de Programação (2/2)Linguagens de Programação (2/2)

Page 22: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 22

Mas…Mas…

Nós ainda escreveremos Nós ainda escreveremos

programas daqui a cem anos? programas daqui a cem anos?

Não apenas diremos aosNão apenas diremos aos

computadores o que nós computadores o que nós

estamos queremos fazer?estamos queremos fazer?

Page 23: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 23

As linguagens do futuro provavelmente…

… valorizarão mais a produtividade que o poder bruto.

… serão mais concisas, construindo sobre bases mais simples

… agregarão diferentes paradigmas.

… farão uso de bons ambientes de desenvolvimento pra melhorar a produtividade.

… encontrarão modos de equilibrar concisão e legibilidade.

… Integrarão mecanismos de extensão nos níveis semânticos e sintáticos mais básicos, permitindo que programadores evoluam de maneira mais simples quando necessário.

Page 24: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 24

Valorização da produtividade em Valorização da produtividade em detrimento do poder bruto (1/2)detrimento do poder bruto (1/2) A melhoria na eficiencia do programas está na raiz do A melhoria na eficiencia do programas está na raiz do

processo (as linguagens) processo (as linguagens)

Desperdiçar o tempo do programador é a verdadeira Desperdiçar o tempo do programador é a verdadeira ineficiência, e não desperdiçar o tempo de máquina.ineficiência, e não desperdiçar o tempo de máquina.

Mesmo que Mesmo que algumas aplicações podem ser algumas aplicações podem ser crescentemente mais ineficientes crescentemente mais ineficientes e, assim,e, assim, demandardemandaremem toda a velocidade que o hardware puder toda a velocidade que o hardware puder fornecer, computadores mais rápidos serão sinônimo fornecer, computadores mais rápidos serão sinônimo de linguagens capazes de cobrir uma escala cada vez de linguagens capazes de cobrir uma escala cada vez mais larga de eficiência.mais larga de eficiência.

Page 25: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 25

Valorização da produtividade em Valorização da produtividade em detrimento do poder bruto (2/2)detrimento do poder bruto (2/2)

“Há um desperdício bom, e um desperdício mau. Eu estou interessado no desperdício bom - o tipo onde, gastando mais, nós podemos começar uns projetos mais simples.”

(tradução livre, The Hundrer-Year LanguageThe Hundrer-Year Language, por Paul GrahamPaul Graham)

Page 26: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 26

Linguagens concisas e mais Linguagens concisas e mais simples (1/2)simples (1/2) Se nós pensarmos no núcleo de uma linguagem como um Se nós pensarmos no núcleo de uma linguagem como um

conjunto de axiomas, certamente é conjunto de axiomas, certamente é indesejávelindesejável ter os ter os axiomas adicionais que não adicionam nenhum poder axiomas adicionais que não adicionam nenhum poder expressivo, simplesmente por causa da eficiência. expressivo, simplesmente por causa da eficiência.

A maneira correta de se resolver A maneira correta de se resolver oo problema problema da adição de da adição de axiomas desnecessários éaxiomas desnecessários é separar o significado de um separar o significado de um programa dos detalhes de sua execução. programa dos detalhes de sua execução.

Linguagem do futuro:núcleo limpo, conciso, contendo Linguagem do futuro:núcleo limpo, conciso, contendo todos os axiomas essenciais, a partir dos quais as outras todos os axiomas essenciais, a partir dos quais as outras características da linguagem poderão ser derivadascaracterísticas da linguagem poderão ser derivadas

Page 27: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 27

““No mínimo, um exercício que pode ser útil é analisar No mínimo, um exercício que pode ser útil é analisar cuidadosamente o núcleo de uma linguagem para verificar se há cuidadosamente o núcleo de uma linguagem para verificar se há axiomas que podem ser eliminados. Em minha longa carreira axiomas que podem ser eliminados. Em minha longa carreira como um chato, eu descobri que lixo sempre gera mais lixo…como um chato, eu descobri que lixo sempre gera mais lixo…

Ocorre-me que os galhos principais da árvore evolutiva (das Ocorre-me que os galhos principais da árvore evolutiva (das linguagens de programação) passam por linguagens que tem linguagens de programação) passam por linguagens que tem núcleos menores e mais limpos…”núcleos menores e mais limpos…”

(tradução livre, The Hundrer-Year Language, por Paul Graham)(tradução livre, The Hundrer-Year Language, por Paul Graham)

Linguagens concisas e mais Linguagens concisas e mais simples (2/2)simples (2/2)

Page 28: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 28

Agregar diferentes paradigmasAgregar diferentes paradigmas

Um linguagem de sucesso no futuro terá a Um linguagem de sucesso no futuro terá a característica de característica de juntar conceitos juntar conceitos de de diferentes diferentes paradigmas, extendendo assim seu poder de paradigmas, extendendo assim seu poder de atuação.atuação.

OOrientação a objetosrientação a objetos:: programas programas são são desenvolvidos desenvolvidos como uma série de remendoscomo uma série de remendos..

Uma boa maneira de extender uma linguagem é Uma boa maneira de extender uma linguagem é misturar diferente paradigmas na mesma, misturar diferente paradigmas na mesma, buscando buscando juntar diferentes conceitosjuntar diferentes conceitos para para agregar poder à essa linguagem. agregar poder à essa linguagem.

Page 29: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 29

Bons ambientes de desenvolvimento: Bons ambientes de desenvolvimento: melhor produtividademelhor produtividade

Mesmo daqui a cem anos, asMesmo daqui a cem anos, as pessoas ainda dirão a pessoas ainda dirão a computadores o que querem fazer, usando computadores o que querem fazer, usando programasprogramas,, da mesma maneira que conhecemos hoje da mesma maneira que conhecemos hoje..

O diferencial está em ambientes de desenvolvimentos O diferencial está em ambientes de desenvolvimentos mais poderosos que os atuais ”editores de texto mais poderosos que os atuais ”editores de texto glorificados”.glorificados”.

Testes automáticos e refatoração são alguns Testes automáticos e refatoração são alguns exemplos de como bons ambientes de programação exemplos de como bons ambientes de programação podem ajudar uma linguagem de programação.podem ajudar uma linguagem de programação.

Page 30: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 30

Equilibrio entre concisão e Equilibrio entre concisão e legibilidade (1/2)legibilidade (1/2)

Uma linguagem Uma linguagem concisa e simplesconcisa e simples deve ser deve ser aberta aberta em termos de extensibilidadeem termos de extensibilidade para permitir que, para permitir que, características extras relacionadas com o dominio do características extras relacionadas com o dominio do problema sejam adicionadas à linguagem,estas problema sejam adicionadas à linguagem,estas derivadas dos axiomas essenciais.derivadas dos axiomas essenciais.

Tal linguagem extensível Tal linguagem extensível devedeve ter uma ter uma responsabilidade com a legibilidade, pois responsabilidade com a legibilidade, pois pode gerar pode gerar código ilegível por produzir trechos muito código ilegível por produzir trechos muito idiomáticosidiomáticos..

Page 31: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 31

Os programadores do futuro serão Os programadores do futuro serão criaturas tão criaturas tão preguiçosas quanto nóspreguiçosas quanto nós, em seu desejo em , em seu desejo em expressar expressar pprogramas com o mínimo de esforço. rogramas com o mínimo de esforço.

A A linguagemlinguagem do futuro do futuro, se existisse, poderia , se existisse, poderia assim assim ser ser muito muito fácil de se programarfácil de se programar..

“Programas devem ser escritos para pessoas lerem, e somente incidentalmente, para serem executados por máquinas.”

(Hackers and Painters, Hackers and Painters, por Paul Graham Paul Graham)

Equilibrio entre concisão e Equilibrio entre concisão e legibilidade (2/2)legibilidade (2/2)

Page 32: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 32

Mecanismos de Extensão nos níveis Mecanismos de Extensão nos níveis semântico e sintático mais básicos (1/2)semântico e sintático mais básicos (1/2)

A extensibilidade A extensibilidade numnum mundo interconectado mundo interconectado com protocolos que mudam rapidamente. com protocolos que mudam rapidamente.

UmUm programador sempre pode usar programação programador sempre pode usar programação do mais baixo nível para implementar qualquer do mais baixo nível para implementar qualquer coisa, mas é muito melhor se os mecanismos coisa, mas é muito melhor se os mecanismos para integração para integração existissemexistissem na própria linguagem. na própria linguagem.

Page 33: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 33

Muitas tarefas em programação podem ser Muitas tarefas em programação podem ser enormemente simplificadas por extensões da enormemente simplificadas por extensões da linguagem. linguagem.

Prover meios para que programadores posssam Prover meios para que programadores posssam esconder estruturas complexas e algoritmos atrás de esconder estruturas complexas e algoritmos atrás de uma fachada sintática é uma poderosa forma de uma fachada sintática é uma poderosa forma de extensibilidade. extensibilidade.

A mesma extensibilidade em termos semânticos é A mesma extensibilidade em termos semânticos é mais complexa, mas não impossível. Como foi dito mais complexa, mas não impossível. Como foi dito antes, tal poder vem a um preço, mas este deve ser antes, tal poder vem a um preço, mas este deve ser pago se a linguagem precisa evoluir.pago se a linguagem precisa evoluir.

Mecanismos de Extensão nos níveis Mecanismos de Extensão nos níveis semântico e sintático mais básicos (2/2)semântico e sintático mais básicos (2/2)

Page 34: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 34

ConclusõesConclusões

Falamos aqui em linguagens a serem criadas em um Falamos aqui em linguagens a serem criadas em um futuro próximo. É perfeitamente possível que um gênio futuro próximo. É perfeitamente possível que um gênio ainda desconhecido descubra um novo paradigma de ainda desconhecido descubra um novo paradigma de programação que mude o modo como a programação programação que mude o modo como a programação existe hoje. Obviamente, tal desenvolvimento não pode existe hoje. Obviamente, tal desenvolvimento não pode ser ser previsto.previsto.

Muito embora isso possa vir a acontecer, o exercício de Muito embora isso possa vir a acontecer, o exercício de olhar para o futuro nos permite ter a consciência da olhar para o futuro nos permite ter a consciência da solidez das bases que no passado ajudaram a construir solidez das bases que no passado ajudaram a construir o cenário de linguagens de programação como o cenário de linguagens de programação como conhcemos hoje, e, dessa forma, nos permite tentar conhcemos hoje, e, dessa forma, nos permite tentar trilhar um caminho de sucesso para o futuro de nossas trilhar um caminho de sucesso para o futuro de nossas aplicações.aplicações.

Page 35: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 35

ReferênciasReferências

The Hundred Year Language, Paul Graham, The Hundred Year Language, Paul Graham, http://www.paulgraham.com/hundred.htmlhttp://www.paulgraham.com/hundred.html

Languages Of The Future, Tim Sheard, Languages Of The Future, Tim Sheard, http://citeseer.ist.psu.edu/sheard04languagehttp://citeseer.ist.psu.edu/sheard04languages.htmls.html

Programming Languages: History and Programming Languages: History and Future, Jean E. Sammet, Future, Jean E. Sammet, http://rockfish-cs.cs.unc.edu/COMP144/samhttp://rockfish-cs.cs.unc.edu/COMP144/sammet.pdfmet.pdf

Page 36: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

{avfl, gfn}@cin.ufpe.br 36

ReferênciasReferências

Evolução das Linguagens de Programação, Evolução das Linguagens de Programação, http://reflectivesurface.com/weblog-br/2003/0http://reflectivesurface.com/weblog-br/2003/05/14/mais-sobre-a-evolucao-de-linguagens-d5/14/mais-sobre-a-evolucao-de-linguagens-de-programacaoe-programacao

Future Programming Languages, Future Programming Languages, Bent Bent Thomsen,Thomsen, http://www.nouhauz.dk/dokumenter/120505-http://www.nouhauz.dk/dokumenter/120505-BentThomsen.pptBentThomsen.ppt

Page 37: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

Perguntas?????Perguntas?????

Page 38: Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação

Evolução e Futuro das Evolução e Futuro das Linguagens de ProgramaçãoLinguagens de Programação

Alessandro Vasconcelos Alessandro Vasconcelos Gladstone FerreiraGladstone Ferreira

Seminário de Engenharia de Software e Linguagens de ProgramaçãoSeminário de Engenharia de Software e Linguagens de Programação