OOPSLA ’04/ETX Giuliano Mega O que é a OOPSLA? Conferência anual em Orientação a Objetos (OO). PSLA: Programação; Sistemas; Linguagens; Aplicações; promovida pela ACM desde 1986; 19a edição (outubro de 2004); uma das mais importantes; certamente a maior delas. Estrutura da OOPSLA Atividades: Technical Papers* “O filé da conferência” Garbage Collection, Design, Aspects, Performance, etc. Practitioner Reports* Experiências aplicando conceitos, tecnologias. “O que funciona e o que não funciona” Panels* Onward! Assuntos revolucionários. Tutorials Scott Meyers, Douglas Schmidt, Erich Gamma, Ralph Johnson… Estrutura da OOPSLA (cont.) Workshops BoFs Eventos diversos (após os horários de conferência) Comida. Muita comida. O Eclipse Technology eXchange É um dos workshops da OOPSLA; exposição e discussão de trabalhos relacionados ao Eclipse; “fórum onde pesquisadores têm a oportunidade de conhecerem uns aos outros e compartilharem suas experiências e código”; 21 trabalhos neste ano, divididos em 6 seções. Opnião pessoal - três trabalhos: Strathcona (Unsticking Eclipse Plug-In Development) Java Traits in Eclipse MEProf – Modular Extensible Profiler Unsticking Eclipse plug-in Development Motivação O Eclipse é um arcabouço poderoso, genérico, flexível e… complexo. Arcabouços devem fornecer: Boa documentação de alto nível; exemplos, muitos exemplos. Disponibilizar exemplos pode ser uma tarefa árdua. Achá-los é ainda pior. Motivação (cont.) Abordagens: Manual (grande maioria): Razoável para tarefas fundamentais; impraticáveis no caso geral (defasagem, escopo). Repositórios de exemplos + ferramentas: Exemplos são o código; ferramentas auxiliam na busca por exemplos relevantes; Diferem quanto ao método de recuperação: ad hoc; busca por categorias (Eclipse); query languages especializadas; Strathcona Strathcona - busca Strathcona - busca (cont.) Strathcona Exemplos auto-sustentáveis. Poderia reduzir significativamente a inclinação da curva de aprendizado. Custo administrativo adicional é negligível perto dos benefícios. O código do plug-in NÃO está disponível. Java Traits Traits: Conceito simples e poderoso, sub-utilizado em OO. São coleções de métodos. Definem também um conjunto de requisitos. Múltiplos traits podem ser aplicados a uma classe. Java Traits (cont.) Aumentam a qualidade do código Reduzem código duplicado. Altamente ligados aos conceitos de refatoração. Experiência pessoal: Eliminariam muitas “gambiarras”: • Classes utilitárias • Métodos estáticos. Reduziriam significativamente a quantidade de código. Infelizmente o plug-in não está disponível. Java Traits - implementação Traits são implementados sob a forma de classes abstratas. Requisitos transformam-se em stubs: métodos abstratos. Ferramenta: implementa um browser parecido com o do Smalltalk; permite criar novos traits através da composição de traits já existentes; gerencia automaticamente as dependências. MEProf – Modular Extensible Profiler Os requisitos para profiling são heterogêneos: Baixo nível: • Informações detalhadas sobre o funcionamento de métodoschave. • Pode envolver o uso de medidores de performance de hardware empregados no nível do bytecode ou até mesmo do código assembly. Alto nível: • Profiling específico a certos domínios; • pode envolver acesso a dados gerados em níveis mais baixos. Resultado: Muitos programas específicos; difícil unificar os dados produzidos. Profiling Pipeline MEProf: Profiler modular para o Eclipse: Profiling pipeline. Versão inicial fortemente baseada em AOP. Composto por seis tipos de componentes que operam em dados: gatilhos (triggers); coletores (collectors); agregadores (aggregators); adaptadores (adapters); filtros (filters); visualizadores (visualisation modules). Profiling Pipeline Pontas: Gatilhos + coletores – produzem dados; Visualizadores – consomem dados. O restante dos módulos apenas transformam/combinam dados. Profiling Pipeline (cont.) Criando novos módulos Agregadores, adaptadores, filtros e visualizadores – simples de conceber. Gatilhos: conceito de corte pontual; podem ser definidos através deles. Coletores: classe que implementa a interface Collector; junção aspecto-conselho se dá pelo framework. Aparentemente gatilhos podem ser bem mais complexos do que isso (não fica claro pelo artigo). Infelizmente, o código deste plug-in também não está disponível. Eclipse – tendências RCP: Decolando aos poucos. Maior parte dos passos: IBM. Plug-ins: projetos de educação ligados a Ciências da Computação pesquisa em como incrementar ainda mais o poder das IDEs; gerenciamento de interrupções programação pareada à distância acessibilidade; Depuração e linguagens: poucos. Mudança de foco: nenhuma nova IDE. OOPSLA/ETX – opinião pesoal Pontos negativos - grupo heterogêneo: Não foi tão bom assim para conhecer novas pessoas. Interatividade menor do que o que eu esperava. maior parte das discussões centrada em trabalhos de cunho educacional. chair incapaz de instigar discussões em outras áreas. Pontos positivos: Muitos trabalhos interessantes. Excelente experiência. Principalmente: ir à OOPSLA. OOPSLA – motivos para ir OOPSLA – motivos para ir (cont.) Publicação: de longe não é a única recompensa. Contato com muita pesquisa séria em OO. Eventos após os horários de conferência: computólogos à solta + bebida = excelentes oportunidades para falar abobrinha. Falar abobrinha e fazer contatos. Interação com: Pessoas que escrevem os livros que você lê. Atmosfera descontraída. Livros que você lê… Trojan Proxy Encapsulated Big Fat Opening Container-Managed relationships “Half Bad Boy Plus Protocol” “best use of the word private members I’ve ever seen” (Anonymous reviewer) … pessoas que você respeita. OOPSLA – mais motivos para ir Key notes, Invited Speakers, Turing Lecture Alan Kay Ward Cunningham Jaron Lanier • • • • Louco, visionário ou ambos? Comunicação pós-simbólica. Pós-simbolismo e software. Singularidade tecnológica. Aprender nos tutoriais. Comer mais um pouquinho. Conhecer lugares e pessoas interessantes. OOPSLA – pontos negativos Ganhei 2 quilos. Homenagem aos desbravadores do Canada Perguntas?