A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação."— Transcrição da apresentação:

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

2 {avfl, Motivação! Num mundo com computadores cada vez mais velozes, o que ainda afeta a produtividade? Num mundo com computadores cada vez mais velozes, o que ainda afeta a produtividade? Porque existem tantas linguagens de programação? Porque existem tantas linguagens de programação? Daqui a 10, 20, ou 100 anos, em que linguagem você estará programando? Daqui a 10, 20, ou 100 anos, em que linguagem você estará programando?

3 {avfl, Roteiro A questão da Produtividade A questão da Produtividade A historia no passar das décadas A historia no passar das décadas A árvore evolucionaria da linguagens A árvore evolucionaria da linguagens As linguagens do futuro As linguagens do futuro

4 {avfl, A questão da Produtividade O hardware já é suficientemente poderoso por si só! O hardware já é suficientemente poderoso por si só! A produtividade se centra no Programador: A produtividade se centra no Programador:  Escrever programas corretamente  Escrever programas rapidamente  Escrever programas facilmente

5 {avfl, Como Aumentar a Produtividade Através de um Processo (ES) Através de um Processo (ES)  Bons processos podem aumentar a produtividade em 20%* Através de Ferramentas Através de Ferramentas  Verificações, Análises, Geração de Código  Boas ferramentas podem aumentar a produtividade em 10%* Através da Linguagem de Programação Através da Linguagem de Programação  Abstrações, mecanismos, serviços, garantias  Esse é o aspecto que mais influi chegando a aumentar a produtividade em mais de 100% * * Segundo o Software Productivity Research

6 {avfl, Por que tantas Linguagens de Programação? Por que algumas pessoas falam inglês e outras português? Por que algumas pessoas falam inglês e outras português? Linguagens de programação são desenvolvidas com diferentes objetivos, para diferentes tipos de programas, por diferentes pessoas Linguagens de programação são desenvolvidas com diferentes objetivos, para diferentes tipos de programas, por diferentes pessoas

7 {avfl, Os Paradigmas Imperativo Imperativo  Ênfase na estrutura de dados e na atribuição dos valores. Dependência explícita da arquitetura de Von Neumann Funcional Funcional  Ênfase nos valores manipulados, e não na forma de armazenamento. Orientado a Objetos Orientado a Objetos  Ênfase sobre os objetos e a troca de mensagens entre esses.

8 Um Pouco de História!

9 {avfl, Década de 40 Os primeiros computadores eletrônicos eram monstruosos Os primeiros computadores eletrônicos eram monstruosos A programação era em código binário A programação era em código binário A manutenção era difícil: A manutenção era difícil:  As válvulas queimavam regularmente

10 {avfl, Início da década de 50 Linguagens Assembly Linguagens Assembly  Permitia programas maiores, reusáveis, e re-alocáveis.  O código de máquina era produzido por um Assembler  Correspondência um-pra-um entre o código assembly e o código da máquina  Posteriormente surgiram os macros

11 {avfl, Meio da Década de 50 Surge FORTRAN Surge FORTRAN  É considerada a primeira linguagem de alto-nível.  Desenvolvimento independente da plataforma  Aplicada na solução de problemas na ciência e na engenharia Outras linguagens da época: Outras linguagens da época:  Algol58, Cobol, Lisp, Basic

12 {avfl, Década de 60 Fortalecimento da Programação Estruturada Fortalecimento da Programação Estruturada Pascal Pascal  Sem go to!  Fortemente tipada  Procedimentos alinhados Simula Simula  Primeira linguagem com objetos, classes e subclasses

13 {avfl, Década de 70 (1/2) C  Sucessora de B, que veio de BCPL  Construções de alto-nível Ada Ada  Incentivada pelo Departamento de Defesa  Usada em programação de sistemas embarcados

14 {avfl, Década de 70 (2/2) SmallTalk SmallTalk  Rica graficamente  GUI  Fontes  Orientada a Objetos  Objetos se comunicam via troca de mensagens Prolog Prolog  Baseada em regras, fatos, e buscas

15 {avfl, Década de 80 C++ C++  Primeira linguagem Orientada a objetos amplamente adotada.  Implementada como um pré-processador para o compilador C Haskel Haskel  Avaliação Preguiçosa  Polimorfismo Paramétrico  Inferência de Tipos

16 {avfl, Década de 90 O estouro da Internet! O estouro da Internet! HTML HTML  A linguagem da World Wide Web  É uma linguagem de marcação, e não de programação Linguagens Script Linguagens Script  São as chamadas linguagens interpretadas  Perl, JavaScript, VBScript

17 {avfl, Década de 90 Java Java  Orientada a objetos, compilada e interpretada (bytecodes)  1996 – Java 1.0  1997 – Java 1.1 e 1.2 (Swing, Collection)  1998 – Java 1.2 final  2000 – Java 1.3 final

18 {avfl, Década 2000 Java Java  2004 – Java 1.5 (tipos parametrizados, enumeradores) XML XML  Padrão de integração Microsoft.NET Microsoft.NET  Múltiplas linguagens  C++, C#, Visual Basic, Cobol, Fortran  Uma máquina virtual comum

19 O que o futuro nos reserva?

20 {avfl, Árvore Evolucionária das Linguagens de Programação (1/2) Como as espécies vivas, as linguagens possuem uma história facilmente categorizada em forma de árvores evolucionárias, com “galhos” que não podem mais se ramificar. Como as espécies vivas, as linguagens possuem uma história facilmente categorizada em forma de árvores evolucionárias, com “galhos” que não podem mais se ramificar. A evolução das linguagens difere da evolução das espécies porque alguns ramos podem convergir. A evolução das linguagens difere da evolução das espécies porque alguns ramos podem convergir. Objetivo dessa abordagem: aproximarmos dos ramos principais da arvore evolucionária das linguagens, para encontrar as linguagens com chances de futuro. Objetivo dessa abordagem: aproximarmos dos ramos principais da arvore evolucionária das linguagens, para encontrar as linguagens com chances de futuro.

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

22 {avfl, Mas… N ó s ainda escreveremos programas daqui a cem anos? Não apenas diremos aos computadores o que n ó s computadores o que n ó s estamos queremos fazer?

23 {avfl, 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.

24 {avfl, Valorização da produtividade em detrimento do poder bruto (1/2) A melhoria na eficiencia do programas est á na raiz do processo (as linguagens) A melhoria na eficiencia do programas est á na raiz do processo (as linguagens) Desperdi ç ar o tempo do programador é a verdadeira ineficiência, e não desperdi ç ar o tempo de m á quina. Desperdi ç ar o tempo do programador é a verdadeira ineficiência, e não desperdi ç ar o tempo de m á quina. Mesmo que algumas aplica ç ões podem ser crescentemente mais ineficientes e, assim, demandarem toda a velocidade que o hardware puder fornecer, computadores mais r á pidos serão sinônimo de linguagens capazes de cobrir uma escala cada vez mais larga de eficiência. Mesmo que algumas aplica ç ões podem ser crescentemente mais ineficientes e, assim, demandarem toda a velocidade que o hardware puder fornecer, computadores mais r á pidos serão sinônimo de linguagens capazes de cobrir uma escala cada vez mais larga de eficiência.

25 {avfl, Valorização da produtividade em 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.” The Hundrer-Year LanguagePaul Graham (tradução livre, The Hundrer-Year Language, por Paul Graham)

26 {avfl, Linguagens concisas e mais simples (1/2) Se nós pensarmos no núcleo de uma linguagem como um conjunto de axiomas, certamente é indesejável ter os axiomas adicionais que não adicionam nenhum poder expressivo, simplesmente por causa da eficiência. Se nós pensarmos no núcleo de uma linguagem como um conjunto de axiomas, certamente é indesejável ter os axiomas adicionais que não adicionam nenhum poder expressivo, simplesmente por causa da eficiência. A maneira correta de se resolver o problema da adição de axiomas desnecessários é separar o significado de um programa dos detalhes de sua execução. A maneira correta de se resolver o problema da adição de axiomas desnecessários é separar o significado de um programa dos detalhes de sua execução. Linguagem do futuro:núcleo limpo, conciso, contendo todos os axiomas essenciais, a partir dos quais as outras características da linguagem poderão ser derivadas Linguagem do futuro:núcleo limpo, conciso, contendo todos os axiomas essenciais, a partir dos quais as outras características da linguagem poderão ser derivadas

27 {avfl, “No mínimo, um exercício que pode ser útil é analisar cuidadosamente o núcleo de uma linguagem para verificar se há axiomas que podem ser eliminados. Em minha longa carreira como um chato, eu descobri que lixo sempre gera mais lixo… Ocorre-me que os galhos principais da árvore evolutiva (das linguagens de programação) passam por linguagens que tem núcleos menores e mais limpos…” (tradução livre, The Hundrer-Year Language, por Paul Graham) Linguagens concisas e mais simples (2/2)

28 {avfl, Agregar diferentes paradigmas Um linguagem de sucesso no futuro terá a característica de juntar conceitos de diferentes paradigmas, extendendo assim seu poder de atuação. Um linguagem de sucesso no futuro terá a característica de juntar conceitos de diferentes paradigmas, extendendo assim seu poder de atuação. Orientação a objetos: programas são desenvolvidos como uma série de remendos. Orientação a objetos: programas são desenvolvidos como uma série de remendos. Uma boa maneira de extender uma linguagem é misturar diferente paradigmas na mesma, buscando juntar diferentes conceitos para agregar poder à essa linguagem. Uma boa maneira de extender uma linguagem é misturar diferente paradigmas na mesma, buscando juntar diferentes conceitos para agregar poder à essa linguagem.

29 {avfl, Bons ambientes de desenvolvimento: melhor produtividade Mesmo daqui a cem anos, as pessoas ainda dirão a computadores o que querem fazer, usando programas, da mesma maneira que conhecemos hoje. Mesmo daqui a cem anos, as pessoas ainda dirão a computadores o que querem fazer, usando programas, da mesma maneira que conhecemos hoje. O diferencial est á em ambientes de desenvolvimentos mais poderosos que os atuais ” editores de texto glorificados ”. O diferencial est á em ambientes de desenvolvimentos mais poderosos que os atuais ” editores de texto glorificados ”. Testes autom á ticos e refatora ç ão são alguns exemplos de como bons ambientes de programa ç ão podem ajudar uma linguagem de programa ç ão. Testes autom á ticos e refatora ç ão são alguns exemplos de como bons ambientes de programa ç ão podem ajudar uma linguagem de programa ç ão.

30 {avfl, Equilibrio entre concisão e legibilidade (1/2) Uma linguagem concisa e simples deve ser aberta em termos de extensibilidade para permitir que, caracter í sticas extras relacionadas com o dominio do problema sejam adicionadas à linguagem,estas derivadas dos axiomas essenciais. Uma linguagem concisa e simples deve ser aberta em termos de extensibilidade para permitir que, caracter í sticas extras relacionadas com o dominio do problema sejam adicionadas à linguagem,estas derivadas dos axiomas essenciais. Tal linguagem extens í vel deve ter uma responsabilidade com a legibilidade, pois pode gerar c ó digo ileg í vel por produzir trechos muito idiom á ticos. Tal linguagem extens í vel deve ter uma responsabilidade com a legibilidade, pois pode gerar c ó digo ileg í vel por produzir trechos muito idiom á ticos.

31 {avfl, Os programadores do futuro serão criaturas tão pregui ç osas quanto n ó s, em seu desejo em expressar programas com o m í nimo de esfor ç o. Os programadores do futuro serão criaturas tão pregui ç osas quanto n ó s, em seu desejo em expressar programas com o m í nimo de esfor ç o. A linguagem do futuro, se existisse, poderia assim ser muito f á cil de se programar. A linguagem do futuro, se existisse, poderia assim ser muito f á cil de se programar. “Programas devem ser escritos para pessoas lerem, e somente incidentalmente, para serem executados por máquinas.” Hackers and Painters, Paul Graham (Hackers and Painters, por Paul Graham) Equilibrio entre concisão e legibilidade (2/2)

32 {avfl, Mecanismos de Extensão nos níveis semântico e sintático mais básicos (1/2) A extensibilidade num mundo interconectado com protocolos que mudam rapidamente. A extensibilidade num mundo interconectado com protocolos que mudam rapidamente. Um programador sempre pode usar programação do mais baixo nível para implementar qualquer coisa, mas é muito melhor se os mecanismos para integração existissem na própria linguagem. Um programador sempre pode usar programação do mais baixo nível para implementar qualquer coisa, mas é muito melhor se os mecanismos para integração existissem na própria linguagem.

33 {avfl, Muitas tarefas em programação podem ser enormemente simplificadas por extensões da linguagem. Muitas tarefas em programação podem ser enormemente simplificadas por extensões da linguagem. Prover meios para que programadores posssam esconder estruturas complexas e algoritmos atrás de uma fachada sintática é uma poderosa forma de extensibilidade. Prover meios para que programadores posssam esconder estruturas complexas e algoritmos atrás de uma fachada sintática é uma poderosa forma de extensibilidade. A mesma extensibilidade em termos semânticos é mais complexa, mas não impossível. Como foi dito antes, tal poder vem a um preço, mas este deve ser pago se a linguagem precisa evoluir. A mesma extensibilidade em termos semânticos é mais complexa, mas não impossível. Como foi dito antes, tal poder vem a um preço, mas este deve ser pago se a linguagem precisa evoluir. Mecanismos de Extensão nos níveis semântico e sintático mais básicos (2/2)

34 {avfl, Conclusões Falamos aqui em linguagens a serem criadas em um futuro próximo. É perfeitamente possível que um gênio ainda desconhecido descubra um novo paradigma de programação que mude o modo como a programação existe hoje. Obviamente, tal desenvolvimento não pode ser previsto. Falamos aqui em linguagens a serem criadas em um futuro próximo. É perfeitamente possível que um gênio ainda desconhecido descubra um novo paradigma de programação que mude o modo como a programação existe hoje. Obviamente, tal desenvolvimento não pode ser previsto. Muito embora isso possa vir a acontecer, o exercício de olhar para o futuro nos permite ter a consciência da solidez das bases que no passado ajudaram a construir o cenário de linguagens de programação como conhcemos hoje, e, dessa forma, nos permite tentar trilhar um caminho de sucesso para o futuro de nossas aplicações. Muito embora isso possa vir a acontecer, o exercício de olhar para o futuro nos permite ter a consciência da solidez das bases que no passado ajudaram a construir o cenário de linguagens de programação como conhcemos hoje, e, dessa forma, nos permite tentar trilhar um caminho de sucesso para o futuro de nossas aplicações.

35 {avfl, Referências The Hundred Year Language, Paul Graham, The Hundred Year Language, Paul Graham, Languages Of The Future, Tim Sheard, s.html Languages Of The Future, Tim Sheard, s.html s.html s.html Programming Languages: History and Future, Jean E. Sammet, cs.cs.unc.edu/COMP144/sammet.pdf Programming Languages: History and Future, Jean E. Sammet, cs.cs.unc.edu/COMP144/sammet.pdfhttp://rockfish- cs.cs.unc.edu/COMP144/sammet.pdfhttp://rockfish- cs.cs.unc.edu/COMP144/sammet.pdf

36 {avfl, Referências Evolução das Linguagens de Programação, br/2003/05/14/mais-sobre-a-evolucao-de- linguagens-de-programacao Evolução das Linguagens de Programação, br/2003/05/14/mais-sobre-a-evolucao-de- linguagens-de-programacao br/2003/05/14/mais-sobre-a-evolucao-de- linguagens-de-programacao br/2003/05/14/mais-sobre-a-evolucao-de- linguagens-de-programacao Future Programming Languages, Bent Thomsen, BentThomsen.ppt Future Programming Languages, Bent Thomsen, BentThomsen.ppt BentThomsen.ppt BentThomsen.ppt

37 Perguntas?????

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


Carregar ppt "Evolução e Futuro das Linguagens de Programação Alessandro Vasconcelos Gladstone Ferreira Seminário de Engenharia de Software e Linguagens de Programação."

Apresentações semelhantes


Anúncios Google